【问题标题】:UML Object Diagram: Parent or ChildUML 对象图:父或子
【发布时间】:2020-11-24 21:58:40
【问题描述】:

假设我有以下课程:

public class ParentClass{}

其中一个子类是:

public class ChildClass extends ParentClass{}

让我们考虑另一个类:

public class Foo{
    
    private ParentClass field;
    
    public Foo(){
        
        field = new ChildClass();
        
    }
    
    public static void main(String[] args){
        
        Foo foo = new Foo();
        
    }
    
}

foo的对象图的时候不知道要不要写ChildClass

ParentClass

【问题讨论】:

    标签: java inheritance uml object-diagram


    【解决方案1】:

    在您的程序中,fieldChildClass 的一个实例,对象图的目标是显示实例及其有效类型(以及它们的属性值,如果它们有) => 使用正确的图表是


    [从评论中编辑我的答案]

    使用第二张图也是合法的,但它隐藏了实例肯定ChildClass的一个实例的事实,所以最好使用第一张图表明这一点。

    我忘了在你的两个图表中提到两个实例之间的 line 并不对应于它们之间的单独关联,第一个图表的正确方法是:

    考虑到您的 Foo 实例是通过名为 foo 的变量保存的,将 foo 您的 Foo

    【讨论】:

    • 谢谢,我想这样做,但我不确定。
    • 把对象的名字放在冒号前面会更清楚。
    • 有趣。我不是对象图的大用户,但我会使用foo:Foo --- field:ParentClass,因为在field 的已知类中是ParentClass。规范中哪里说它应该显示有效类型?我只找到第 125 页“InstanceSpecification 的目的是显示对实例感兴趣的内容。该实例符合 InstanceSpecification 的每个分类器 ...”,这将留下选择一个,或另一个,或两者一起取决于图表的兴趣。
    • @Christophe 可能是我的回答不够清楚,我没有说第二张图是错误的。知道 Foo 的实例肯定与 CHildClass 的实例相关联,为什么要在图中隐藏它?我们为什么要制作图表来隐藏知识/信息或显示它?对我而言,展示实例的有趣之处从该上下文中实例的有效类型开始。
    • 也学到了一些新东西 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-08
    • 1970-01-01
    相关资源
    最近更新 更多