-
2020-10-09 17:12:04更多相关内容
-
UML 组合与聚合
2018-10-20 13:35:16每次写一次这个就要翻一次 PPT,这次干脆记录下来,便于以后查看。...UML 类图表示:一个整体可以拥有多个部分,一个部分属于一个整体: 组合 强语义的聚合,整体对象消失,部分对象也消失每次写一次这个就要翻一次 PPT,这次干脆记录下来,便于以后查看。
聚合(aggregation)
聚合 是一种特殊的 联系
An Aggregation can be defined as:
A special form of association that models a whole-part relationship between an aggregate (the whole) and its parts.- Aggregation is used to model a whole-part relationship between model elements. There are many examples of whole-part relationships: a Library contains Books, Departments are made up of Employees, a Computer is composed of a number of Devices. To model an aggregation, the aggregate (Department) has an aggregation association to its constituent parts (Employee).
- A hollow diamond is attached to the end of an association path on the side of the aggregate (the whole) to indicate aggregation.
- An aggregation relationship that has a multiplicity greater than one for the aggregate is called shared. Destroying the aggregate does not necessarily destroy the parts. By implication, a shared aggregation forms a graph or a tree with many roots. Shared aggregations are used when one instance is a part of two other instances. So, the same instance can participate in two different aggregations.
An aggregation is an “is a part-of” relationship.
UML 类图表示:一个整体可以拥有多个部分,一个部分属于一个整体:
组合
强语义的聚合,整体对象消失,部分对象也消失
-
UML类图六大关系组合
2020-10-04 16:46:36UML本身是一套符号的规则,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和它们之间的关系,比如类、接口、实现、泛化、依赖(可以理解为使用)、组合、聚合等 使用UML来建模,常用的工具有...目录
基本介绍
- UML-Unified modiling language UML(统一建模语言),是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果
- UML本身是一套符号的规则,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和它们之间的关系,比如类、接口、实现、泛化、依赖(可以理解为使用)、组合、聚合等
- 使用UML来建模,常用的工具有Rational Rose,也可以使用一些插件来建模
可以使用 staruml_5.0_with_cm UML工具
- Dependency:表示依赖(使用)
- Association:表示关联
- Generalization:表示泛化(继承)
- Aggregation:表示聚合(通过set的方式)
- Composite:组合(耦合性比聚合要强,B b = new B())
- Realization:表示实现
UML图
画UML图和写文章差不多,都是把自己的思想描述给他人看,关键在于思路和条理。
(1)用例图(use case)
(2)静态结构图:类图、对象图、包图、组件图、部署图
(3)动态行为图: 交互图(时序图与协作图)、状态图、活动图
依赖关系
只要类中用到了对方,那么他们之间就存在依赖关系。如果没有对方,连编译都通过不了。具体表现为:
- 类中用到了对方
- 如果是类的成员属性
- 是方法的返回类型
- 是方法接收的参数类型
- 方法中使用到
package uml.dependence; public class PersonServiceBean { private PersonDao personDao; public void save(Person person){} public IDCard getIDCard(Integer personid){ return null; } public void modify(){ Department department = new Department(); } }
泛化关系(依赖关系的特例)
- 泛化关系实际上就是继承关系
- 如果A类继承了B类,我们就说A和B存在泛化关系
实现关系(依赖关系的特例)
关联关系
类与类之间的联系,它是依赖关系的特例
关联具有导航性:即双向关系或单向关系
关系具有多重性:如"1"(表示有且仅有一个), "0..."(表示0个或者多个), "0,1"(表示0个或者多个), "n...m"(表示n到m个都可以),"m...*'(表示至少m个).
单向一对一关系
public class Person{ private IDCard card; } public class IDCard{ }
双向一对一关系
public class Person{ private IDCard card; } public class IDCard{ private Person person; }
聚合关系
表示的是整体和部分的关系,整体与部分可以分开,聚合关系是关联关系的特例,所以它具有关联的导航性与多重性。如:一台电脑由键盘,显示器,鼠标等组成;组成电脑的各个配件是可以从电脑上分离出来的,使用带空心菱形的实现来表示;
package aggregation; public class Computer { private Mouse mouse; private Monitor monitor; public Mouse getMouse() { return mouse; } public void setMouse(Mouse mouse) { this.mouse = mouse; } public Monitor getMonitor() { return monitor; } public void setMonitor(Monitor monitor) { this.monitor = monitor; } } class Mouse{ } class Monitor{ }
组合关系
如果Mouse、Monitor、Computer是不可分离的,则升级为组合关系,整体与部分不可以分开
package composite; public class Computer { private Mouse mouse =new Mouse(); private Monitor monitor = new Monitor(); } class Mouse{ } class Monitor{ }
Computer创建了的话,Mouse和Monitor也同时创建了,Computer销毁了,Mouse和Monitor也跟着被销毁,同生共死。
再看一个案例:在程序中,我们定义实体类:Person与IDCard、Head,那么Head和Person就是组合,IDCard和Person就是聚合
package composite.person; public class Person { private IDCard card; private Head head = new Head(); } class IDCard{} class Head{}
身份证和人是聚合关系,因为未成年的人可以没有身份证,但是人和头是组合关系。但是如果在程序中Person实体中定义了对IDCard进行级联删除,即删除Person时连同IDCard一起删除,那么IDCard和Person就是组合了。(肯定是在方法里体现出来的)
-
UML中依赖,关联,聚合,组合的含义(结合UML图和实战代码详解)
2021-11-22 11:56:01UML中各种关系的含义1. 什么是UML图?2. UML图中的各种关系2.1 依赖 1. 什么是UML图? UML-Unified Modeling Language 统一建模语言,又称标准建模语言。是用来对软件密集系统进行可视化建模的一种语言。UML的定义...UML中各种关系的含义
1. 什么是UML图?
UML-Unified Modeling Language 统一建模语言,又称标准建模语言。是用来对软件密集系统进行可视化建模的一种语言。UML的定义包括UML语义和UML表示法两个元素。
UML是在开发阶段,说明、可视化、构建和书写一个面向对象软件密集系统的制品的开放方法。最佳的应用是工程实践,对大规模,复杂系统进行建模方面,特别是在软件架构层次,已经被验证有效
。统一建模语言(UML)是一种模型化语言。模型大多以图表的方式表现出来。一份典型的建模图表通常包含几个块或框,连接线和作为模型附加信息之用的文本。这些虽简单却非常重要,在UML规则中相互联系和扩展。
更多介绍点击链接了解:
https://baike.baidu.com/item/UML%E5%9B%BE/6963758?fr=aladdin2. UML图中的各种关系含义
2.1 依赖
2.1.1 简单理解及画法
这个依赖,通俗一点就是:
人要依赖氧气、水、食物......才能生存,需要依赖氧气、水、食物......
,人要依赖很多东西才能生存,如下图所示,氧气只是人依赖的一部分,如下图所示,画法如下图所示
2.1.2 那么在UML中的依赖是怎样的呢?
其实和上述所描述的差不多,如下图,类A依赖类B,那么类A中一定有B的存在,这个存在可能
依赖关系在 Java 或 C++ 语言中体现为局部变量(函数参数等)、方法的参数或者对静态方法的调用
,是组成类A的一部分。缺少了类B,类A就实现不了一部分功能了
,如人缺少了手,就不能打游戏了
,所以类A依赖类B
依赖方要用虚线剪头指向被依赖的类,如下图所示
2.1.3 实战中UML图的画法和表现及相应的代码
如在我写的一个项目中,类
UserEventHandler
依赖类LoginReqEv
,类LoginReqEv
是类UserEventHandler
中一个函数的变量
补充一下,-
号在这个变量或者函数的前面表示它是这个类私有的(private
),+
号表示是公有的(pubulic
),#
表示是保护的(protected
),UML类图,和代码图如下图所示
2.2 关联
2.2.1 简单理解,以及在UML中的画法
A关联于B,则B体现为A的
全局变量(成员变量)
,反之,关联分为双向关联和单向关联,被关联方被实心箭头所指,画法如下图所示,其中双向关联有两种画法,还有一种特殊的自关联,一般在单例模式中出现
,我就不介绍了。
2.2.2 实战中UML图的画法和表现及相应的代码
2.3 聚合
2.3.1 简单理解
聚合的关系比关联要强,聚合和组合比较像,都有关联的特征;
在聚合关系中,整体与部分之间是可分离的,他们可以具有各自的生命周期
,部分可以属于多个整体对象,也可以为多个整体对象共享;
而组合的生命周期一样
,才叫组合嘛!
聚合换一种话说,成员类是整体类的一部分,即成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在
;
比如有一个类A和一个类B,如果B是A的聚合(A是整体,B是部分)
,要满足如下特征:1. B是A的指针型成员变量 2. A和B有具有各自的生命周期,当A虚构时,即生命周期结束时,B不受影响(整体解散时,部分不受影响)
我查阅了很多资料,发现聚合是一个强关联,它肯定有
关联的特征(成员变量中的指针型成员变量)
,也有自己的特征,各有各的生命周期
。只有指针型成员变量才会有自己的独立分配内存空间,当整体不存在时,指针型成员变量还存在,但是有一种特殊情况,就是整体的虚构函数中,如果把指针型成员变量delete回收内存的
话,指针型成员变量就随着整体的消逝而灭亡了,这就属于组合了,如下图1所示,这种情况是聚合。如下图2所示,这种情况是组合;所以是聚合还是组合,要看具体的代码是怎么写了
2.3.2 实战中UML图的画法和表现及相应的代码
画法,空心菱形加实心箭头,指向成员变量对应的类,代码如上图一所示,UML图的画法如下图所示
2.4 组合
2.4.1 简单理解
组合换一种话说,成员类是整体类的一部分,即成员对象是整体对象的一部分,但是成员对象可以脱离不可以脱离整体,
整体消失时,部分也随之消失
,一般在整体虚构时,部分也虚构了(普通成员变量)或者回收内存了(指针成员变量)
有以下特征:1. 属于整体的一部分,即为整体的成员变量 2. 生命周期随着整体的虚构(消失)而消失,生命周期相同
如果是指针成员变量的话,它在整体的其他函数方法中回收,或者没有在整体的虚构函数中回收,它就不属于组合了。
2.4.2 实战中UML图的画法和表现及相应的代码
画法,实心菱形加实心箭头,指向成员变量对应的类,图和相应的代码如下
画图不易,觉得写得不错的,给个赞和收藏或者关注哦
-
UML-组合
2016-10-06 16:38:51组合优于聚合 聚合UML模糊,其不精确...因此,不要在UML中费心使用聚合,相反,在适当的时候要使用组合组合,是一种很强的整体-部分聚合关系 某一时刻,部分的实例只属于一个组成实例 部分(Fingers)必须总是属于组成 -
UML类图--组合关系
2018-10-26 01:33:15组合--Composition:组合关系是关联关系的一种,...UML展示: 箭头及指向 :带实心菱形的实线,菱形指向整体,箭头指向部分 代码体现: // 公司类 public class Company { private List<Department&... -
UML类图说明.md
2017-12-05 10:22:20UML类图详细说明. 讲解了类之间的各种关联关系和表达方式. 帮助理解UML类图 -
UML(3)——聚合与组合
2019-06-17 19:18:34组合中部分和全体唇亡齿寒的关系,有部分的存在,全体才称之为全体,每个实例都是其固有特性; 聚合中部分的每个实例都不是全体的固有特性,可以有千千万万个部分实例,只要有一个部分的实例存在,组合聚合关系形成... -
UML图中的聚合和组合
2020-03-01 20:38:21一、基本概念 组合和聚合关系是容易混淆的概念,两者的差别在于 https://www.cnblogs.com/Alkane/articles/9650731.html -
UML类关系:依赖、关联、聚合、组合
2019-03-17 01:18:25NULL 博文链接:https://newtime.iteye.com/blog/505170 -
UML 类图:聚合与组合区别
2020-06-01 14:59:56组合中部分和全体唇亡齿寒的关系,有部分的存在,全体才称之为全体,每个实例都是其固有特性;聚合中部分的每个实例都不是全体的固有特性,可以有千千万万个部分实例,只要有一个部分的实例存在,聚合关系形成的全体... -
UML类图(下):关联、聚合、组合、依赖
2019-12-20 16:17:06上一篇文章UML类图(上):类、继承、实现,讲了UML类图中类、继承、实现三种关系及其在UML类图中的画法,本文将接着上文的内容,继续讲讲对象之间的其他几种关系,主要就是关联、聚合、组合、依赖,下面开始文章的... -
UML基础之组合与聚合关系
2017-12-12 15:41:45UML基础之关系UML是统一建模语言([Unifried Modeling Language][6])的缩写。最初用于描述复杂的软件和非软件系统的行为。UML伴随着面向对象的概念和方法而生。它本身不是一种编程语言,但通过构建UML图能够帮助我们... -
UML中的聚合与组合
2018-03-24 17:01:44总结一下聚合和组合的关系。 组合关系(Composition):部分和整体之间具有相同的生命周期,当整体消亡后,部分也将消亡。就像大雁的翅膀和大雁是组合关系。代码实现时,部分类在整体类的构造函数中被构造,在析构... -
『设计模式』一句话教你分清楚UML组合聚合和联系!
2020-03-26 16:14:41组合:组合后的实体消失,则所有构成实体的部件都无意义,可以理解为不能独立存在 定义: 与聚合相比,组合描述的是这样的关联关系,部分离开整体后就没有实际意义了.所以我们说组合是一种很强的关联关系. 例子: 一个... -
UML中组合和聚集的区别
2018-01-06 11:33:40组合(contains-a) 聚集(has-a); 组合关系表示整体和部分的关系比较强,而聚集表示整体和部分的关系比较弱;在组合关系中,代表整体的对象如果销毁了,那么代表部分对象也随之销毁;而在聚集中代表整体的对象如果... -
UML图、聚合和组合的区别
2020-04-16 21:17:421、UML图 车的类图结构为<>,表示车是一个抽象类; 1、它有两个继承类:小汽车和自行车;它们之间的关系为实现关系,使用带空心箭头的虚线表示; 2、小汽车为与SUV之间也是继承关系,它们之间的关系为泛化关系... -
UML概述及UML类图详解
2022-04-19 22:29:39一、UML基础 UML介绍 UML分类 二、UML类图学习 在UML类图中表示一个具体类 在UML类图中表示抽象类 在UML类图中表示接口 在UML类图中表示包 在类图中表示关系 实现关系 泛化关系 ...聚合关系与组合关系 -
UML类图中聚合和组合的区别详解(含代码)
2020-09-02 14:44:38说一句题外话,就是讨论一下为什么要去学习什么类图呢?要去理解这么多关系呢? 我觉得有如下两个作用吧: 第一,最实在的,程序员肯定少不了写设计文档,设计文档肯定包含类图;...聚合(has-a)和组合 -
UML中常见的几种关联关系(依赖、泛化、实现、关联、组合、聚合)
2021-03-08 15:04:48由于经常需要画uml图,在这里记录以下类与类之间的关系 类与类之间的j基本关系主要分为: 依赖(Dependency) 泛化(Generalization) 实现(Interface Realization) 关联(Association) 聚合(Aggregation) 组合... -
c++中继承,关联,组合,聚合以及依赖的区别以及UML表示
2021-04-27 21:21:09继承也叫作泛化关系,用于描述父子之间的关系,父类又称为基类或者超类,子类又称作派生类,在uml中,泛化关系用空心三角形的实线来表示 (1)普通继承关系 假如定义了一个person,student 以及teacher类 class ... -
Java设计模式之UML类图( 类的表示方法,一般关联关系,聚合关系,组合关系,依赖关系,继承关系,实现关系)
2022-04-18 15:35:561. UML概述 UML 即统一建模语言,是用来设计软件的可视化建模语言。 UML 从目标系统的不同角度出发,定义了用例图、类图、对象图、状态图、活动图、时序图、协作图、构件图、部署图等9种图。 2. 类图概述 类图是显示... -
UML-关联/聚合/组合
2016-04-27 15:38:55聚合和组合都属于关联, 处于聚合关系的两个类生命周期不同步,则是聚合关系; 处于组合关系的两个类的生命周期同步。 -
UML关联和组合的最大区别?UML类图各种箭头含义代表什么?
2022-01-18 23:50:22UML关联和组合的最大区别?UML类图各种箭头含义代表什么? 作者:陈镇坤27 创建时间:2022年1月18日 文章目录一篇就够!UML关联和组合的最大区别?UML类图各种箭头含义代表什么?前言依赖关联聚合组合(强强强)泛化... -
UML中常见关系详解(泛化、实现、依赖、关联、组合、聚合)
2020-10-27 15:00:08UML中类与类,已经类与接口,接口与接口的关系有: 泛化(generalization),关联(association),依赖(dependency),实现(realization)这几种。 泛化(generalization)关系时指一个类(子类、子接口)继承... -
【UML】结构图
2022-03-05 17:26:45本文介绍UML结构图的概念 -
UML关系(泛化,实现,依赖,关联(聚合,组合))
2012-11-19 11:57:20UML关系(泛化,实现,依赖,关联(聚合,组合)) -
认识 UML 类关系——依赖、关联、聚合、组合、泛化
2017-03-02 22:41:32在学习面向对象设计时,类关系涉及依赖、关联、聚合、组合和泛化这五种关系,耦合性依次递增。关于耦合度,可以简单地理解为当一个类发生变更时,对其他类造成的影响程度,影响越小则耦合度越弱,影响越大耦合度越强... -
UML各种图以及继承、实现、依赖、关联、聚合、组合的联系与区别
2018-07-28 20:06:10一、名词解释 1) 继承、实现 :类A继承于类B,那么A就有了B的属性和方法,类A实现了B接口,B接口本身只是规则和方法的定义,类A具体实现了。...继承、实现、依赖、关联、聚合、组合的联系与区别