【问题标题】:Java - Association, Composition, AggregationJava - 关联、组合、聚合
【发布时间】:2016-06-27 19:14:29
【问题描述】:

我是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 类中,那么如果我说这些类之间的关系是 Aggregation 是对的吗?

如果我们稍微改变一下,我们会说,那所学校需要有学生。所以我们唯一改变的就是上下文,我们对主题的看法,没有别的,如果我们这样做,如果我说关系是组合,我会是对的吗?

【问题讨论】:

  • 最好向我们展示您对关联、聚合和组合的示例的代码尝试。
  • 相关,虽然我不相信这是一个骗局(尽管请随意投递简历):stackoverflow.com/questions/885937/…

标签: java associations aggregation composition


【解决方案1】:

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

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

聚合:这里两个对象之间存在一种关系,一个使用另一个对象,包含的对象(学生)在主函数中初始化

这里的学校是容器,学生是内容,它是聚合,因为当学生出生时,他没有入学(如果你使用了Composition,那就是这样),所以我们需要初始化学生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);
}
}

如果要实现为组合关系,在school的构造函数中初始化对象student

【讨论】:

    猜你喜欢
    • 2013-01-28
    • 2012-07-01
    • 2012-11-14
    • 2014-11-04
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    • 2013-05-14
    • 2017-06-24
    相关资源
    最近更新 更多