3

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

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

关联用于具有标识的对象之间的连接。

我想知道是否有简单的例子来解释有/无身份的含义?

4

2 回答 2

3

起初,忽略“身份”,想想没有它的情况。

现在,看下面的例子:一个类,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 可以有身份。

于 2013-06-13T18:56:08.407 回答
0

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

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

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

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

于 2013-06-13T18:29:01.330 回答