Oop 此代码中是否正确解释了导航性? 让我们考虑图书类和章节类> < /p> Class Book { private Chapter chapter; } Class Chapter { }

Oop 此代码中是否正确解释了导航性? 让我们考虑图书类和章节类> < /p> Class Book { private Chapter chapter; } Class Chapter { },oop,uml,composition,class-diagram,Oop,Uml,Composition,Class Diagram,语句1:如果书包含章节,这是一篇文章,因为销毁书也会销毁章节 语句2:由于书籍与章节相关联并了解该章节,因此它也可以是可导航性 所以,这两条语句都正确吗?我知道语句1是正确的,但我不确定语句2是否准确。有组合和组合 同一术语“组合”用于指非常不同的事物: ,这是一种面向对象技术,使一个对象由多个其他对象和值组成 ,这是一种关联,其中一个对象一次最多可以是一个复合对象的一部分,并且复合对象负责组件的存在和存储。所以这是一个独家所有权 顺便说一句,Wikipedia的文章对于对象组合的UML表示

语句1:如果
包含
章节
,这是一篇文章,因为销毁
也会销毁
章节

语句2:由于
书籍
章节
相关联并了解该章节,因此它也可以是可导航性

所以,这两条语句都正确吗?我知道语句1是正确的,但我不确定语句2是否准确。

有组合和组合 同一术语“组合”用于指非常不同的事物:

  • ,这是一种面向对象技术,使一个对象由多个其他对象和值组成
  • ,这是一种关联,其中一个对象一次最多可以是一个复合对象的一部分,并且复合对象负责组件的存在和存储。所以这是一个独家所有权
顺便说一句,Wikipedia的文章对于对象组合的UML表示法有着误导性的不完整性,在回答这个问题的时候:它完全忽略了对象组合可以实现简单关联这一点

您的案例是对象合成 在您的示例中,您使用对象组合,使用一本复合
书籍
和一个组件对象
章节
(提示:使其成为一个容器,以使示例更真实)

不能保证它是UML组合:例如,如果此代码将在Java中实现,则
书籍
可以有一个私有的
章节
。但是
书籍
的某些方法,比如
getChapter()
,可能会将私有的
章节
泄漏到另一个对象。由于java类是引用对象,因此本章最多不能保证存在于一个组合中,这是UML组合的UML需求。此外,在这种情况下,一章可能会在一本书中保留下来

建议:除非您确定独占所有权,否则请避免UML组合。如有疑问,建立一个简单的关联模型

适航性 与关联的类型是正交的。组合、聚合和简单关联存在可导航性。这意味着您可以轻松地从一个类的实例移动到另一个类的关联实例

就你而言:

  • 您可以清楚地从复合
    书籍
    导航到组件
    章节
    (与
    书籍.章节
    一样简单)
  • 但是,没有证据表明存在向后导航:因此,当您有一个特定章节时,如果不知道它包含在哪本书中,就不可能找到相关的书

一个关系是否是一个组合与它的可导航性之间没有联系,因此研究它们之间的差异没有任何意义sense@bruno但我不明白它们是如何不同的。同样,长度和颜色是不同的,不能比较,构图和适航性是不同的,不能比较。不可能回答导航能力与组合UML类图之间的差异问题,因为这个问题同样没有意义。阅读Christophe answer,了解什么是构图,什么是可导航性,这是一组拼写错误……@qwerty_如此正确。当我深夜回答,整天打字时,或者当你老了,你的手指在敲击键盘时似乎有了自己的生命;-)@qwerty_so;-)事实上,这就是反转的情况。但我昂贵的MacBookPro上的廉价键盘比我的老化快得多。一些常用钥匙不太愿意正常使用,这是因为丢失;-)我有时想知道我们是否能有一个使用这些特征的算法。。。等待还有:更让我困扰的是我打字时不小心碰到的触摸板:-/嗯。。。