在我阅读The Unified Modeling Language Reference Manual Second Edition
属性通常用于纯数据值 而不用 身份 ,例如数字和字符串。
关联用于对象 之间的连接 身份
我想知道是否有简单的例子说明有/无身份意味着什么?
答案 0 :(得分:3)
首先,忽略“身份”并考虑没有它的情况。
现在,请看以下示例:一个类,User,有三个属性,其中一个是另一个类Address。
class User {
String firstName;
String lastName;
Address address;
}
class Address {
String streetName;
int streetNumber;
String postalCode;
}
如果你想绘制上述情况的UML图,这是一个关联,你会有这样的事情:
|用户| ----> |地址|
如您所见,虽然用户有三个属性,但在图表中,您只显示一个属性,即您在模型中有另一个类的地址。您可以在User框中显示另外两个属性firstName和lastName。但是,就协会而言,就是它,用户和地址。
现在,回到“身份”部分。首先,你应该注意到协会的一般表述中不需要对身份的讨论。如上所示,您可以在不参考“身份”概念的情况下谈论关联。我怀疑,他们在一些特定的背景下谈论身份。例如,如果再次考虑上述示例,则firstName和lastName不能具有标识,只有Address可以具有标识。
答案 1 :(得分:0)
识别对象的实例仅意味着与实例存在关联。例如,如果阀门具有可以用软件控制的电子螺线管,则可以将其建模为与螺线管相关联的阀门。程序员想要打开一个阀门然后找到该阀门的电磁阀(这可能在初始化时发生一次)。这称为遍历关联。然后程序员有一个指针(无论如何都是C ++)到螺线管,可以调用螺线管的通电方法。
如果螺线管没有找到任何方法,那么就没有任何关系可以移动。例如,可能存在螺线管服务,其中在初始化时将螺线管ID提供给阀门。然后阀门可以调用如下函数:
energizeSolenoid(solenoidID);
阀门和电磁阀之间没有关联。