2015-10-17 94 views
0

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

匹配关系基数和最好的细化过程及其隐含的适航:


许多一对多


多到一个


一一对多


一对一的

  1. 添加目标类型的单个属性的关系的许多侧上。

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

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

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

+0

一位家长 - 很多孩子。一个配偶 - 一个伴侣。许多俱乐部 - 许多成员。为什么他们都是2? –

+0

给定四个句子,如果你用_one_替换单词_single_,用_many_替换单词_collection_,这些句子似乎直接解析为四个基数选择。 – jaco0646

+0

太棒了。我对添加属性的关系的哪一方感到困惑。感谢您的帮助。 –

回答

0

如果您从面向对象的角度来看它,这句话就非常有意义。设想两个类,现在简单地遍历每个语句:

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

在这里你有一对多的关系。如果将单个属性添加到关系多方的目标中,那么所有这些类实例都只能引用一个类,因为该属性只能保存一个值。答案是一对多。一个例子就是汽车和轮胎之间的关系。一辆汽车可以引用很多(通常是4 + 1)轮胎,但每个轮胎只能引用它所属的汽车。

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

上述参数类似,这里每个实例只能引用一个其它实例。说一辆汽车如何参考其转向柱,反之亦然。

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

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

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

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

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

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

+0

我认为一对多和多对一应该在你的回应中被颠倒过来。例如,如果你有一类汽车,并且导航性能指向一种“多”多种轮胎。我们将在关系的一侧添加一个集合属性。 Car类将收集轮胎。我相信当作者说一对多时,导航能力是从左到右的。该属性被添加到导航的来源。 –