UML中聚合和组合的区别
聚合
聚合其实是关联的一个特例,表示了两个对象之间“part of(部分-整体)”的关系,是一种弱关联,部分的生命周期可以超越整体。在UML中,用整体端有空心菱形箭头的双向关联修饰聚合。聚合的示例如下图:

组合
组合其实是一种强形式的聚合,它具有强的拥有关系,整体与部分的生命周期是一致的。“部分”生存在整体中,它们与“整体”一起消亡。
“部分”对象依赖于“整体”对象,这种依赖性表现在两个方面:
第一、“部分”对象一次只能属于一个组合对象;第二、当组合对象销毁时,它的所有从属部分必须同时销毁。
整体的重数必须是0或1。“部分”不能在整体间进行共享。在UML中,用整体端有实心菱形箭头的双向关联修饰组合。
聚合的示例如下图:
上图中,邮件和它的标题及正文之间的关系作为组合关系建模可能是合理的,因为一旦邮件被删除,就既不存在标题,也不存在正文体了,而它们存在时属于唯一的一个邮件。而邮件与附件之间的关系不太可能是用组合恰当的建模,因为在同一时间,同一个附件可以属于多个邮件,其次,很有可能附件可以保存,因此它们的生命周期将超过所附属的邮件的生命周期。
UML中聚合和组合的区别的更多相关文章
- UML的关联(Association), 聚合(Aggregation), 组合(Composition)区别
转载:http://blog.csdn.net/ocean181/article/details/6117369 UML的关联(Association), 聚合(Aggregation), 组合(Co ...
- UML图中聚合、组合、关联、依赖、泛化的强弱关系
一.泛化 1.说明 泛化是一种继承关系,如果一个类A的所有属性和操作能被另一个类B所继承,则类B不仅可以包含自己独有的属性,而且可以包含类A的属性和操作.继承是类与类或者类与接口之间最常见的关系. 2 ...
- 一张图让你快速学会UML(聚合、组合、依赖、继承、接口、类)
有朋友反映,一上来直接讲设计模式就算理解了,也不知道如何画出类图,那么我们就通过一张图,来图解如何应用UML正确表示类与类之间的关系. 这张图完整讲述了鸟类的生存. 首先是类:在UML中,我们用分成三 ...
- java--依赖、关联、聚合和组合之间区别的理解
在学习面向对象设计对象关系时,依赖.关联.聚合和组合这四种关系之间区别比较容易混淆.特别是后三种,仅仅是在语义上有所区别,所谓语义就是指上下文环境.特定情景等. 依赖(Dependency)关系是类与 ...
- UML类图-聚合和组合的区别
类图-组合和聚合 学习自 http://blog.sina.com.cn/s/blog_4ae8f77f0100ji5k.html http://blog.csdn.net/nodeathphoeni ...
- 【Java】聚合和组合的区别
组合:部分与整体是与生俱来的,部分的存在依赖于整体.比如人与人的某个器官,人一出生,器官就在,人死亡,器官也就没了意义. 聚合:你与你的电脑(或者其它物品),电脑是属于你的吧,但是你是一出生就拥有了电 ...
- Inheritance, Association, Aggregation, and Composition 类的继承,关联,聚合和组合的区别
在C++中,类与类之间的关系大概有四种,分别为继承,关联,聚合,和组合.其中继承我们大家应该都比较熟悉,因为是C++的三大特性继承Inheritance,封装Encapsulation,和多态Poly ...
- java中继承和组合的区别
子类继承父类,父类的所有属性和方法都可以被子类访问和调用.组合是指将已存在的类型作为一个新建类的成员变量类型,又叫"对象持有". 通过组合和继承,都可以实现系统功能的重用和代码的复 ...
- UML 中extend和include的区别
在UML用例图中有两种关系——包含和扩展,容易混淆,下面通过一张表来区别一下这两种关系.
随机推荐
- 读取pdf文件 .选择了itextsharp 库
此库还是比较成熟.看博客园很多文章都介绍了此库 用法 如果项目用到读取pdf. 我这只是提供个思路.或者提供个方法.用itextsharp 能方便实现 StringBuilder text = ne ...
- oracle中的日期加减法
--加法 ) from dual; --加1年 ) from dual; --加1月 ,'yyyy-mm-dd HH24:MI:SS') from dual; --加1星期 ,'yyyy-mm-dd ...
- 【Oracle】安装
http://www.2cto.com/database/201208/150620.html 呵呵,花了一个多小时,左右把11g安装折腾好了.其中折腾SQL Developer 花了好长时间,总算搞 ...
- keil C51绝对地址访问
在利用keil进行8051单片机编程的时,常常需要进行绝对地址进行访问.特别是对硬件操作,如DA AD 采样 ,LCD 液晶操作,打印操作.等等.C51提供了三种访问绝对地址的方法: 1. 绝对宏 在 ...
- elk 发送zabbix告警
- LaTeX排版工具使用
专业的论文,都是用Latex.CTex等相关的工具.那么,用word写论文,缺点在哪? latex 写的东西,最终要编译成pdf格式的.里面的格式,尤其是数学类符号等,比较漂亮.这是word不能比的. ...
- Macro Substitution
看<C程序设计语言>(英文版)学到的两个用法. 两个很简单的宏用法. #的用法: if, however, a parameter name is preceded by a # in t ...
- 【转】Android源代码查看途径
原文网址:http://www.it165.net/pro/html/201501/32967.html 作为一个android coder,多阅读android源码对提高android开发水平是很有 ...
- HDOJ 1287 破译密码(异或运算)
Problem Description 有个叫"猪头帮"的国家,采用一种简单的文法加密,他们所用的语言里面只有大写字母,没有其他任何字符:现在还知道他们加密的方法是:只用一个大写字 ...
- maven项目 打可执行jar包
1.pom添加 <build> <plugins> <plugin> <artifactId>maven-assembly-plugin</art ...