【问题标题】:association versus attribute in UML class diagramUML 类图中的关联与属性
【发布时间】:2013-06-13 15:21:12
【问题描述】:

当我读完The Unified Modeling Language Reference Manual Second Edition

属性一般用于纯数据值没有 身份,例如数字和字符串。

关联用于对象之间的连接与 身份

我想知道是否有简单的例子解释有/无身份意味着什么?

【问题讨论】:

    标签: attributes associations uml class-diagram


    【解决方案1】:

    首先,忽略“身份”,想想没有它的情况。

    现在,看下面的例子:一个类 User,具有三个属性,其中一个是另一个类 Address。

    class User {
       String firstName;
       String lastName;
       Address address;
    }
    
    class Address {
          String streetName;
          int    streetNumber;
          String postalCode;
    
    }
    

    如果要绘制上述情况的UML图,也就是关联,就会有这样的东西:

    |用户 |---->|地址|

    如您所见,尽管 User 具有三个属性,但在图中,您只显示了一个,您的模型中有另一个类 Address。您可以在 User 框内显示其他两个属性,firstName 和 lastName。但是,就关联而言,就是用户和地址。

    现在,回到“身份”部分。首先你应该注意,在协会的一般表述中不需要讨论身份。如上所示,您可以在不参考“身份”概念的情况下谈论关联。我怀疑,他们在某些特定的背景下谈论了身份。比如再考虑上面的例子,firstName和lastName不能有身份,只有Address可以有身份。

    【讨论】:

      【解决方案2】:

      识别一个对象的实例仅仅意味着与该实例存在关联。例如,如果阀门具有可以在软件中控制的电子螺线管,则可以将其建模为与螺线管关联的阀门。程序员想要打开一个阀门,然后找到该阀门的螺线管(这可能在初始化时发生一次)。这称为遍历关联。然后程序员有一个指向螺线管的指针(无论如何都是C++),并且可以调用螺线管的通电方法。

      如果没有找到螺线管的任何方式,那么就没有遍历的关系。例如,可能有一个螺线管服务,其中螺线管 ID 在初始化时提供给阀门。然后阀门可能会调用一个函数,例如:

      通电螺线管(螺线管ID);

      阀门和螺线管之间没有关联。

      【讨论】:

        猜你喜欢
        • 2016-10-09
        • 1970-01-01
        • 2022-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多