Java代码中的聚合和组合

时间:2013-11-30 18:38:47

标签: java relationship aggregation composition

由于聚合和组合是相关联的,或者我们可以说它可以理解对象或其他任何东西之间的关系。

我发布了这个问题,因为我在采访中问了一个问题,即组成和聚合是什么。

根据我的理解,我给出了我的想法,如下所示。

http://www.coderanch.com/t/522414/java/java/Association-Aggregation-Composition

Aggregation, Association and Composition

Association vs. Aggregation vs. Composition in Java

并且还访问了更多。

我的基本解释是聚合表明关系松散,而作文表明关系密切,并且与此有关的明确解释。

但是面试官侮辱了我并且说这是理论上的概念,你说我想要完美的Java代码,在这些代码中它们如何区别,并告诉我是否会给你一个小的应用程序然后你如何识别它这是聚合,这是作文?

所以现在我想了解纯技术概念和Java代码,它们的区别在于它们是什么?它是什么?

2 个答案:

答案 0 :(得分:8)

考虑一个LinkedList类的简单示例。 LinkedListNodes组成。这里LinkedList类是拥有对象。当它被销毁时,其中包含的所有Nodes都将被删除。如果从列表中删除Node对象,则LinkedList对象仍然存在。

实现组合使得对象包含另一个对象。

class LinkedList {

 Node head;
 int size; 
}

这是作文。

另一个例子,考虑一个Circle类,它有一个Point类,用于定义其中心的坐标。如果删除Circle,则会删除其中心。

class Circle {

    private float radius;
    private Point center;

    public Circle(Point center, float radius) {
        this.center = center;
        this.radius = radius;
    }

    public void setRadius(float radius) {
        this.radius = radius;
    }

    public void setCenter(Point center) {
        this.center = center;
    }

    public float getRadius() {
        return radius;
    }

    public Point getCenter() {
        return center;
    }

    class Point {
        private int x;
        private int y;

        public Point(int x, int y) {
            this.x = x;
            this.y = y;

        }

        public void setY(int y) {
            this.y = y;
        }

        public void setX(int x) {
            this.x = x;
        }

        public int getY() {
            return y;
        }

        public int getX() {
            return x;
        }
    }

    @Override
    public String toString() {

        return "Center: " + "(" + center.getX() + "," + center.getY() + ")" + "\nRadius: " + this.getRadius()
                + " centimeters";
    }

}

来自java集合api的组合示例:HashMap具有Entry类。如果删除HashMap对象,则会删除地图中包含的所有Entry个对象。

聚合也是一种Object Composition但不如合成强。它定义了“HAS A”关系。如果A类具有B类的引用并且删除B不会影响A的存在则使用非常简单的单词,那么它就是聚合。你必须在某个时候使用它。

答案 1 :(得分:0)

A想在解释的答案中添加其他信息

聚合是Assosation的一种特殊形式(关联是通过对象建立的两个独立类之间的关系。关联可以是一对一,一对多,多对一,多对 - 对多)

  • 聚合表示Has-A关系。
  • 它是单向关联,即单向关系。例如,部门可以 有员工但反之亦然是不可能的,因而是单向的 在自然界。
  • 在聚合中,两个条目都可以单独存活 这意味着结束一个实体不会影响另一个实体。

组合是一种限制形式的聚合,其中两个实体高度依赖彼此。

  • 它代表了部分关系。
  • 在构图中,两个实体都相互依赖。
  • 当两者之间有成分时 如果没有其他实体,组合对象就不能存在。
  

汇总与成分

- 依赖关系:聚合意味着孩子可以的关系    独立于父母存在。例如,部门和    员工,删除部门和员工仍然存在。而    构图意味着孩子不能存在的关系    独立于父母。例如:人与心,心不    与人类分开存在。

- 关系类型:聚合关系    是“has-a”,组成是“部分”关系。

- 关联类型:组合是一种强大的关联,而聚合    是一个弱小的协会。

参考:https://www.geeksforgeeks.org/association-composition-aggregation-java/