UML中聚集(Aggregation)与组合(Composition)的区别

UML中,聚集和组成是两个十分相似的概念.书上这样说:聚集是关联中的一种,聚集对象由部分对象组成;组合又是一种特殊的聚集。在一个组合对象中,部分对象只能作为组成对象的一部分与组合对象同时存在。
即是说,组合是“当聚集对象和它的组成对象之间是具有
强关联
的一种特殊聚集”,组合对象的关键特征是部分对象只能存在于组合对象之中,并且部分体的寿命可能比组合体短,但组合体消亡,部分体也必然消亡。

我们举例来说明:

聚集
电脑可以由显示器、CPU、主板、硬盘、键盘、鼠标等聚集而成。在这种关系里面,各个组成部分是可以分拆开独立存在的。

组合
衬衣是由主体、衣领、袖口、衣袖、钮扣等组合而成。在这种关系里面,衣袖或者衣领等如果拆分开来并不能算是一个独立的主体,不具有价值了。
树是由树干、树根、树枝、树叶等组合而成的。这里面树叶可以先于树消亡,但如果树被砍掉,那么树叶也没有存在价值了。

比如聚集,强调的是整体-部分关联,比如家用计算机系统PC,由主机,键盘,鼠标,显示器,声卡等组成;
而组成则是强类型的聚集,聚集中的每个部分只能属于一个整体,如桌子,由桌面和桌腿组成,这个是区别.
,而也有另外的提法,也大同小异,如:

聚集可以进一步划分成共享聚集和组成。例如,课题组包含许多成员,但是每个成员又可以是另一个课题组的成员,即部分可以参加多个整体,我们称之为共享聚集。另一种情况是整体拥有各部分,部分与整体共存,如整体不存在了,部分也会随之消失,这称为组成。例如,我们打开一个视窗口,它就由标题、外框和显示区所组成。一旦消亡则各部分同时消失。在UML中,聚集表示为空心菱形,组成表示为实心菱形。


所以,后来我自己是这样理解的,不知道对不对,大家可以给我指正:同类的几个聚集对象里面的组成对象是可以互换的(比如电脑里面的配件);而同类的几个组合对象里面的组成对象是不能够互换的(正所谓强关联嘛,所以这件衬衣的袖口换到另一件上面不科学;这棵树的叶子也没法装到另一棵树上面去)。

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
文类图和UML(统一建模语言)类图是软件设计用来描述系统结构和组件间关系的工具。它们都是基于面向对象的概念,但在表达方式和细节上存在一些差异: 1. **UML类图**:UML(Unified Modeling Language)是一个标准的、公开的图形化方法,用于可视化、理解和文档化复杂系统。UML类图是其的基础之一,它展示了系统的静态结构,包括类(Class)、接口(Interface)、继承(Inheritance)、关联(Association)、聚集Aggregation)和组合Composition)等关系。UML提供了标准化的符号和语法,使得跨团队交流更加一致。 2. **文类图**:这是一个相对模糊的说法,可能指的是一般的文软件开发者使用文术语来描述类图。在实际应用,这通常是在UML类图的基础上,用文名词和概念来解释类图元素及其关系,比如“父类”、“子类”、“实现”等。这样做的目的是为了让非专业领域的人员更容易理解。 **区别**: - **标准化程度**:UML类图是国际标准,具有明确的定义和规则,而文类图则可能是行业内的通用称呼或个人习惯用法。 - **通用性**:UML类图是全球范围内被广泛接受和使用的工具,而文类图则受限于语言环境和使用者的背景知识。 - **精确性**:UML类图的专业词汇和符号能够准确传达设计意图,文类图可能会因翻译或表述的差异导致理解上的误差。 **相关问题**: 1. UML类图包含哪些主要的元素? 2. 如何用UML类图表示接口和实现的关系? 3. 在项目开发,为什么还需要用到文类图辅助沟通?
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值