1. 在类图中,除了需要描述单独的类的名称、属性和操作外,我们还需要描述类之间的联系,因为没有类是单独存在的,它们通常需要和别的类协作,创造比单独工作更大的语义。在UML类图中,关系用类框之间的连线来表示,连线上和连线端头处的不同修饰符表示不同的关系。类之间的关系有继承(泛化)、关联、聚合和组合。
(1)继承:指的是一个类(称为子类)继承另外的一个类(称为基类)的功能,并增加它自己的新功能的能力,继承是类与类之间最常见的关系。类图中继承的表示方法是从子类拉出一条闭合的、单键头(或三角形)的实线指向基类。
(2)关联:指的是模型元素之间的一种语义联系,是类之间的一种很弱的联系。关联可以有方向,可以是单向关联,也可以是双向关联。可以给关联加上关联名来描述关联的作用。关联两端的类也可以以某种角色参与关联,角色可以具有多重性,表示可以有多少个对象参与关联。可以通过关联类进一步描述关联的属性、操作以及其他信息。关联类通过一条虚线与关联连接。对于关联可以加上一些约束,以加强关联的含义。
(3)聚合:指的是整体与部分的关系。通常在定义一个整体类后,再去分析这个整体类的组成结构。从而找出一些组成类,该整体类和组成类之间就形成了聚合关系。例如一个航母编队包括海空母舰、驱护舰艇、舰载飞机及核动力攻击潜艇等。需求描述中“包含”、“组成”、“分为…部分”等词常意味着聚合关系。
(4)组合:也表示类之间整体和部分的关系,但是组合关系中部分和整体具有统一的生存期。一旦整体对象不存在,部分对象也将不存在。部分对象与整体对象之间具有共生死的关系。
2.区别
关联和聚合的区别主要在语义上,关联的两个对象之间一般是平等的,例如你是我的朋友,聚合则一般不是平等的,例如一个公司包含了很多员工,其实现上是差不多的。
聚合和组合的区别在于:聚合关系是“has-a”关系,组合关系是“contains-a”关系;聚合关系表示整体与部分的关系比较弱,而组合比较强;聚合关系中代表部分事物的对象与代表聚合事物的对象的生存期无关,一旦删除了聚合对象不一定就删除了代表部分事物的对象。组合中一旦删除了组合对象,同时也就删除了代表部分事物的对象。
我们用浅显的例子来说明聚合和组合的区别。“国破家亡”,国灭了,家自然也没有了,“国”和“家”显然也是组合关系。而相反的,计算机和它的外设之间就是聚合关系,因为它们之间的关系相对松散,计算机没了,外设还可以独立存在,还可以接在别的计算机上。在聚合关系中,部分可以独立于聚合而存在,部分的所有权也可以由几个聚合来共享,比如打印机就可以在办公室内被广大同事共用。
聚合和组合的区别则在语义和实现上都有差别,组合的两个对象之间其生命期有很大的关联,被组合的对象是在组合对象创建的同时或者创建之后创建,在组合对象销毁之前销毁。一般来说被组合对象不能脱离组合对象独立存在,而且也只能属于一个组合对象,例如一个文档的版本,必须依赖于文档的存在,也只能属于一个文档。聚合则不一样,被聚合的对象可以属于多个聚合对象,例如一个员工可能可以属于多个公司。
3.重点总结
聚合与组合的区别:
1. 组合整体与部分的关系更强,体现在生命期上:组合对象销毁之后,被组合对象也会销毁,比如上述的文档的版本,文档没了,该文档的版本就不复存在;而聚合对象被销毁后,被聚合的对象不一定被销毁,事实上是与聚合对象的生存期无关,比如:雷军是金山的董事长,同时又是小米科技的CEO,加入金山倒闭了,雷军还是活着。
2. 被聚合的对象可以属于多个聚合对象,就像雷军是多家公司的董事一样,而被组合对象则是只能属于一个组合对象。
分享到:
相关推荐
类间关系有很多种,在大的类别上可以分为两种:纵向关系、横向关系。 纵向关系就是继承关系,它的概念非常明确,也成为OO的三个重要特征之一,这里不过多的讨论。
UML java 图示6种类关系,帮忙理解uml的基本概念。
本文向大家简单介绍一下UML类图关系,UML定义的关系主要有六种:依赖、类属、关联、实现、聚合和组合。希望本文的介绍对你的学习有所帮助。
UML类关系-依赖,关联,聚合和组合 这几种关系很容易混淆,一个总结文档。
UML利用 UML 进行实体关系建模.doc
描述UML图的四种关系,有依赖,关联关系,还有关联中的聚合和组合关系的说明及用法
uml 实验类的关系
UML类与类的关系详细说明,还有一些相关的内容供参考
解释UML类的关系,帮助了解UML的相关知识。
uml客户管理系统课设,基本功能用例图,状态图都画了,当时做的挺用心的
UML类图在关系数据库中的实现,uml的类图在数据库的实现方法,具体的应用案例。
UML类图与类的关系详解,UML类图与类的关系详解,UML类图与类的关系详解
UML中几种类间关系.wps
UML类框图基本关系及符号.类、包、接口、关联、依赖、聚合、组合、泛化等。每种关系的说明及图例。
关系是事物之间的联系。类之间有4种重要的关系:依赖、泛化、关联和实现。这些关系都可以映射到代码里。
uml
用图解的方式描述了UML的六中关系,简单明了
UML类图的各种关系图示,以及Java代码(表格形式)。
类与类关系的UML图与代码表现.doc 类与类关系的UML图与代码表现.doc
清晰简单的UML标识说明,对UML建模初学者十分有用。