ste*_*529 45 oop uml composition aggregation model-associations
我正在回顾我在面向对象编程方面的知识.在类主题之间的关系下,我遇到了一些对我来说有点模棱两可的关系.
我知道依赖"使用-a"和继承"是-a"但我对聚合,组合,关联和直接关联有点不熟悉; 还有,他们中的哪一个是"有一种"关系.有些人使用Aggregation与Association互换.
什么是直接协会?还有什么是作文?在UML图中,表示它们的箭头是不同的.如果你能为我清除这些事情,我将非常感激.
bvd*_*vdb 111
请注意,对"关联"定义有不同的解释.我在下面的观点很大程度上取决于您在Oracle认证书籍和学习指南中的内容.
方法内部的用法,其签名或作为返回值.它并不是对特定对象的引用.
示例:我将车停在车库.

所谓的" STRONG关系 ":链接对象的实例化通常在对象的构造函数内部进行硬编码.它不能从对象外部设置.(构成不能是多对多的关系.)
示例:房屋由石头组成.

这是一种" 弱关系 ".对象可以独立存在,并且通常有setter或其他方式来注入依赖对象.
示例:汽车可以有乘客.

非常类似于直接关联.它也是与独立物体的" 弱关系 ".但是,这里关联的对象是包含对象的关键部分.
示例:汽车应该有轮胎.

注意:直接关联和聚合关联通常都被概括为"关联".差异相当微妙.
use*_*451 11
例如,OOP的重点是您的代码复制现实世界的对象,从而使您的代码可读和可维护.
关联基本上是A类使用B类.作为一个例子
并且在UML图中,关联由正常箭头表示.
因此,如果我们删除A类并不意味着B类也将被删除,作为一个例子(非教师或许多教师可以属于一个或多个部门),教师和部门之间的关系就是聚合.
直接关联与其他三个没有任何共同之处.它根本不属于UML,它是IBM需求建模术语.
至于其他人,
关联A-> B是依赖的孩子.关联意味着,A(或其实例)有一些简单的方法来获取B的实例.例如,axyb或者通过函数,或者通过一些局部变量.或者通过直接引用或指针,或其他东西(世界上有许多语言).如您所见,依赖关系和关联之间没有严格的边界.
关联的一个属性是聚合,它可以具有以下值:无,共享(通常错误地称为聚合)和组合.
如果A(或实例)具有B的某些(或一个)实例,则破坏关联意味着破坏B实例,它就是组合.
如果您或工具作者已经决定,某些人有一种关系,那个组合较弱,需要特别展示,您可以使用shared聚合.通常它是A中B的一些引用集合.
关联有一些更有趣的属性.如果你有兴趣,请看这里.