【问题标题】:Aggregation and Compostion relationship in class diagram类图中的聚合和组合关系
【发布时间】:2013-11-05 12:26:10
【问题描述】:

我想知道当两个类之间存在聚合或组合关系时,两个类可以共享彼此的属性吗?

如果有一个类叫做account,它和类customer有组合关系 那么班级账户可以访问班级客户的变量吗?

【问题讨论】:

    标签: class diagram


    【解决方案1】:

    是的。类可以访问相关类的非私有字段,可以是聚合或组合。

    在下面的示例中,类 A 和 B 持有组合关系,A 可以访问 B 的字段和方法。但这取决于变量和方法的可见性。

    class A {
    String test;
    B b;
    void printB(){
    b.getTest();}
    }
    
    class B {
    private String test;
    public String getTest(){
    return test;
    }
    }
    

    【讨论】:

    • 我不同意。聚合与可访问性无关,它是与额外所有权特征的关联。组合是一种更强的聚合形式,其中“拥有”类仅与拥有类有关联,因此可能对其他类不可见。
    • 谁告诉它与可访问性有关?你读过这个问题吗?问题是两个类之间是否存在关系,是否可以访问相关类的某些属性,是的,但取决于某些条件。
    • 共享属性对我来说听起来像是可访问性。
    • 可能,一个人是 OOP 的新手,可能正在学习他与类建立这些关系的基础知识。
    • 也许,无论如何,我的观点是聚合和组合作为概念与共享属性无关。正如你所说,他们可能会也可能不会,但 OP 问题的答案不是是的,IMO。
    【解决方案2】:

    两个类是否有关系并不重要。如果属性的可见性设置为公共(如果元素位于同一包中,则为包),则任何元素都可以访问属性。例如,您可以在活动操作中访问类的公共属性,其中引脚类型是具有公共属性的类等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-26
      • 2014-02-08
      • 2013-05-14
      • 1970-01-01
      • 2016-09-10
      • 2014-09-18
      • 2015-10-31
      相关资源
      最近更新 更多