Java - 关联,组合,聚合

时间:2016-03-12 14:32:32

标签: java associations aggregation composition

我是java和编程新手,今天我遇到了这3个关系的问题。不幸的是,从我的材料中我无法理解如何实现它们。我希望有人能为我说清楚。

1)协会 例如,我有2个班级。学生和学校,这是多重性1:1的关联,我理解在每个班级中,我都有一个指向另一个班级的属性。但我的问题是,如果在构造函数中我是否声明这些引用变量?我是否也为它们创建了set和get方法?如果该关联具有多重性1:N怎么办?我有引用变量,引用列表,我是否在构造函数中以某种方式声明?我是否为该数组列表创建了set和get方法?

2)聚合 据我所知,在Java聚合中的实现方面只不过是单向关联。所以引用变量只在一个类中。我的假设是真的吗?

3)组成 我知道组合是特殊类型的聚合。所以我认为,就Java的实现而言,它也是单向关联,因此实现将是相同的,唯一不同的是我们如何在编程之外识别这种关系。

如果有人能帮助我,我会非常感激

很抱歉,我没有展示任何例子,这是真的,它可以帮助我描述我的想法。

让我们说我们上课,学生

public class Student {
    private String name;
    private School school;
   }
   public Student(String namei, School school) {
       this.name = name;
       this.school = school;
    }

如果是小学,会有一个私人学生,那就是一个协会。但如果没有,并且唯一的参考属性将在类Student中,我是否正确,如果我会说这些类之间的关系是聚合?

如果我们稍微改变一下,我们说,那所学校需要有学生。所以我们改变的唯一方法就是背景,我们如何思考这个主题而不是别的什么,如果我们愿意这样做,如果我说这种关系是作曲,我会是对的吗?

1 个答案:

答案 0 :(得分:0)

学校肯定需要一个学生,但它不能是作文,因为在作文中容器(在这种情况下是学校)和内容(在这种情况下是学生)是这样的,一个人的破坏意味着对另一个人的破坏,即使你离开你的高等学习学校(内容已经消失),内容应该仍然存在,

我会将学校和学生之间的关系视为聚合

聚合:这里两个对象之间存在一种关系,即使用其他对象,所包含的对象(student)在main函数中初始化

这里学校是容器,学生是内容,它是聚合的,因为当学生出生时,他没有报名参加学校(如果您使用作文会是如此),所以我们需要初始化学生main函数并将其作为参数传递给构造函数

中的学校

聚合:

class Student
{
    String Name;
int grade;

Student() {}

Student(String Name,int grade)
{

    this.Name=Name;
    this.grade=grade;
}

public String toString()
{

    return(this.Name + " : "+this.grade);
}
}






class School
{
    Student student;
    String SchoolName;

School(Student student,String SchoolName)
{

    this.student=student;
    this.SchoolName=SchoolName;
}

public String toString()
{
    return(this.student + " : "+this.SchoolName);
}

}





class Aggregation
{
public static void main(String[] args)
{
    Student student = new Student("Sourabh",4);

    School school = new School(student,"SBI");

    System.out.println(school);
}
}

如果你想实现它作为组合关系初始化学校构造函数中的对象学生