面向对象的设计关联

时间:2015-10-17 20:03:48

标签: uml

我一直在做这个练习考试,我似乎无法得到这个问题的答案。我觉得一对一,多对一都是2.这显然是错的,但我无法思考。任何想法或答案将不胜感激。如果我能看到正确的答案,那么我至少可以尝试弄清楚为什么这是正确的。

将关系基数及其隐含的导航性与最佳细化过程相匹配:

许多对多

许多对一

1对许多

1对一个

  1. 将目标类型的单个属性添加到关系的多个方面。

  2. 将目标类型的单个属性添加到关系的一侧。

  3. 将一个集合属性添加到关系的多个方面。

  4. 将一个集合属性添加到关系的一侧。

1 个答案:

答案 0 :(得分:0)

如果从面向对象的角度来看,这句话很有意义。想象一下两个类,现在只需查看每个语句:

  

将目标类型的单个属性添加到关系的多个方面。

这里你有一对多的关系。如果将单个属性添加到关系的多个边的目标,那么所有这些类实例只能引用一个单独的类,因为该属性只能包含一个值。答案是一对多。一个例子是汽车与其轮胎之间的关系。汽车可以参考许多(通常是4 + 1)轮胎,但每个轮胎仅参考它所属的汽车。

  

将目标类型的单个属性添加到关系的一侧。

与上面的论点类似,这里每个实例只能引用另一个实例。说一下汽车如何引用其转向柱,反之亦然。

  

将一个集合属性添加到关系的多个方面。

集合属性可以包含许多值。在这种情况下,一个类的多个实例可以引用另一个类的多个实例。这种多对多类型的关系可以通过俱乐部与其成员的关系来建模。通常一个俱乐部有很多成员,这些成员中的每一个都可以在许多俱乐部中。

  

将关系属性添加到关系的一侧。

这里有一个多对一的关系,一个类的许多实例只能引用一个目标类的单个实例。一个例子就是我上面给出的汽车与轮胎的反向关系。

请注意,“多对一”和“一对多”是反向关系,无论您是将其称为第一个还是后者,都取决于您使用的语义。

最后一个提示,如果你正在考虑面向对象设计,它有助于使用你日常生活的类比并抽象它们来理解许多面向对象模型和元模型的复杂性。