与类图中的关系严重混淆。为了“解开”,请帮助我找出以下示例:
让有一个鳄梨类。它包含骨头。很明显,没有 Pit 就无法存在鳄梨,而 Pit 可以很好地存在。有一个袋子只装鳄梨。袋中可以有任意数量的鳄梨 [0..*]。有一个装麻袋的地窖,尽管它只能装 10 个麻袋,不多也不少。我们的类之间会有什么关系?
什么是典型的,Kostochka,不关心她在什么鳄梨,就像鳄梨不关心它放在什么袋子里一样。萨克不在乎他们把他放在哪个酒窖里。
PS我自己想出了一个例子。
与类图中的关系严重混淆。为了“解开”,请帮助我找出以下示例:
让有一个鳄梨类。它包含骨头。很明显,没有 Pit 就无法存在鳄梨,而 Pit 可以很好地存在。有一个袋子只装鳄梨。袋中可以有任意数量的鳄梨 [0..*]。有一个装麻袋的地窖,尽管它只能装 10 个麻袋,不多也不少。我们的类之间会有什么关系?
什么是典型的,Kostochka,不关心她在什么鳄梨,就像鳄梨不关心它放在什么袋子里一样。萨克不在乎他们把他放在哪个酒窖里。
PS我自己想出了一个例子。
不是最好的例子,首先,很明显它只意味着对组合、聚合和关联之间差异的描述。其次,根据描述,所有的关系都是组合。
关联是一种“我所指”的关系。相对较弱的耦合,当两个对象都不能表示为另一个对象的所有者时。通常呈现给他的是多对多关系,但他也可能代表任何其他关系,这取决于对象行为的逻辑。
聚合和组合是表达“我包括”关系的特定类型的关联。两者之间的主要区别在于谁控制包含对象的生命周期。因此,使用聚合,生命周期由其他人控制。而在作曲时- 直接是容器。一个重要的特性是,如果对象在被销毁之前没有从容器中排除,那么它会随着它一起被销毁。UML 图中省略了该控件的细节,因为在 C++ 中,它可以是成熟的类成员,也可以是在析构函数中删除的指针数组。
事实上,关于没有什么可以存在的想法是次要的,并且会分散本质。如果我们突然决定不再需要鳄梨并将其扔进烤箱,我们是否需要石头自动留在架子上?可能不是,所以它是一个组合。这并不排除我们可以得到骨头并将其存放在架子上,然后再取出或在进食时取出,如果真的有必要的话。
同样,如果你把袋子扔进同一个火箱,所有的鳄梨都会被毁掉。所以又是作曲。
火⇒一切都烧毁了⇒组成。
现在我将扩展一点,一个例子,以说明其他关系。
因为 随着业主的突然死亡,仓库不会自燃,而一旦仓库发生火灾,业主不会死于心脏病,那么这不再是作文,而是同时, storekeeper-warehouse 关系意味着所有权,所以这是聚合。
农民-袋子关系并不意味着所有权,所以它是一个一对多的关联。掌农关系也是一种关联,但已经是多对多,而 农民和店主都有清单,然后这个,然后这是一个双向关联。
结果:
免责声明:以上描述的一切都是我对这个话题的看法和理解,它并不声称是绝对的真理,但我试图让它尽可能地不矛盾。我不主张焚烧食品仓库,或肆意破坏鳄梨、仓库所有者或农民。