当我通读The Unified Modeling Language Reference Manual Second Edition
属性一般用于没有标识的纯数据值的纯数据值,例如数字和字符串。
关联用于具有标识的对象之间的连接。
我想知道是否有简单的例子来解释有/无身份的含义?
当我通读The Unified Modeling Language Reference Manual Second Edition
属性一般用于没有标识的纯数据值的纯数据值,例如数字和字符串。
关联用于具有标识的对象之间的连接。
我想知道是否有简单的例子来解释有/无身份的含义?
起初,忽略“身份”,想想没有它的情况。
现在,看下面的例子:一个类,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 可以有身份。
识别一个对象的实例仅仅意味着与该实例存在关联。例如,如果阀门具有可以在软件中控制的电子螺线管,则可以将其建模为与螺线管关联的阀门。程序员想要打开一个阀门,然后找到该阀门的螺线管(这可能在初始化时发生一次)。这称为遍历关联。然后程序员有一个指向螺线管的指针(无论如何都是C++),并且可以调用螺线管的通电方法。
如果螺线管没有任何方法可以找到,那么就没有关系可以遍历。例如,可能有一个螺线管服务,其中螺线管 ID 在初始化时提供给阀门。然后阀门可能会调用一个函数,例如:
通电螺线管(螺线管ID);
阀门和螺线管之间没有关联。