【转】UML类图与类的关系详解


UML类图与类的关系详解
 

2011-04-21 来源:网络

 

在画类图的时候,理清类和类之间的关系是重点。类的关系有泛化(Generalization)、实现(Realization)、依赖(Dependency)和关联(Association)。其中关联又分为一般关联关系和聚合关系(Aggregation),合成关系(Composition)。下面我们结合实例理解这些关系。

基本概念

类图(Class Diagram): 类图是面向对象系统建模中最常用和最重要的图,是定义其它图的基础。类图主要是用来显示系统中的类、接口以及它们之间的静态结构和关系的一种静态模型。

类图的3个基本组件:类名、属性、方法。

泛化(generalization):表示is-a的关系,是对象之间耦合度最大的一种关系,子类继承父类的所有细节。直接使用语言中的继承表达。在类图中使用带三角箭头的实线表示,箭头从子类指向父类。

实现(Realization):在类图中就是接口和实现的关系。这个没什么好讲的。在类图中使用带三角箭头的虚线表示,箭头从实现类指向接口。

依赖(Dependency):对象之间最弱的一种关联方式,是临时性的关联。代码中一般指由局部变量、函数参数、返回值建立的对于其他对象的调用关系。一个类调用被依赖类中的某些方法而得以完成这个类的一些职责。在类图使用带箭头的虚线表示,箭头从使用类指向被依赖的类。

关联(Association) : 对象之间一种引用关系,比如客户类与订单类之间的关系。这种关系通常使用类的属性表达。关联又分为一般关联、聚合关联与组合关联。后两种在后面分析。在类图使用带箭头的实线表示,箭头从使用类指向被关联的类。可以是单向和双向。

聚合(Aggregation) : 表示has-a的关系,是一种不稳定的包含关系。较强于一般关联,有整体与局部的关系,并且没有了整体,局部也可单独存在。如公司和员工的关系,公司包含员工,但如果公司倒闭,员工依然可以换公司。在类图使用空心的菱形表示,菱形从局部指向整体。

组合(Composition) : 表示contains-a的关系,是一种强烈的包含关系。组合类负责被组合类的生命周期。是一种更强的聚合关系。部分不能脱离整体存在。如公司和部门的关系,没有了公司,部门也不能存在了;调查问卷中问题和选项的关系;订单和订单选项的关系。在类图使用实心的菱形表示,菱形从局部指向整体。

多重性(Multiplicity) : 通常在关联、聚合、组合中使用。就是代表有多少个关联对象存在。使用数字..星号(数字)表示。如下图,一个割接通知可以关联0个到N个故障单。

聚合和组合的区别

这两个比较难理解,重点说一下。聚合和组合的区别在于:聚合关系是“has-a”关系,组合关系是“contains-a”关系;聚合关系表示整体与部分的关系比较弱,而组合比较强;聚合关系中代表部分事物的对象与代表聚合事物的对象的生存期无关,一旦删除了聚合对象不一定就删除了代表部分事物的对象。组合中一旦删除了组合对象,同时也就删除了代表部分事物的对象。

实例分析

联通客户响应OSS。系统有故障单、业务开通、资源核查、割接、业务重保、网络品质性能等功能模块。现在我们抽出部分需求做为例子讲解。

大家可以参照着类图,好好理解。

1. 通知分为一般通知、割接通知、重保通知。这个是继承关系。

2. NoticeService和实现类NoticeServiceImpl是实现关系。

3. NoticeServiceImpl通过save方法的参数引用Notice,是依赖关系。同时调用了BaseDao完成功能,也是依赖关系。

4. 割接通知和故障单之间通过中间类(通知电路)关联,是一般关联。

5. 重保通知和预案库间是聚合关系。因为预案库可以事先录入,和重保通知没有必然联系,可以独立存在。在系统中是手工从列表中选择。删除重保通知,不影响预案。

6. 割接通知和需求单之间是聚合关系。同理,需求单可以独立于割接通知存在。也就是说删除割接通知,不影响需求单。

7. 通知和回复是组合关系。因为回复不能独立于通知存在。也就是说删除通知,该条通知对应的回复也要级联删除。

经过以上的分析,相信大家对类的关系已经有比较好的理解了。大家有什么其它想法或好的见解,欢迎拍砖。

PS:还是那句话:以上类图用Enterprise Architect 7.5所画,在此推荐一下EA,非常不错。可以替代Visio和Rose了。Visio功能不够强大,Rose太重。唯有EA比较合适。

时间: 2024-10-26 06:56:29

【转】UML类图与类的关系详解的相关文章

UML类图的几种关系总结【转】

在UML类图中,常见的有以下几种关系: 泛化(Generalization),  实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency) 1. 泛化(Generalization) [泛化关系]:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为.例如:老虎是动物的一种,即有老虎的特性也有动物的共性. [箭头指向]:带三角箭头的实线,箭头指向父类         2.

UML类图的几种关系

转自 http://www.open-open.com/lib/view/open1328059700311.html UML类图的几种关系: 泛化(Generalization),  实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency) 1.泛化 2.实现 3. 关联

UML类图中的六大关系:泛化、实现、依赖、关联、聚合、组合关系

UML定义的关系主要有:泛化.实现.依赖.关联.聚合.组合,这六种关系紧密程度依次加强,分别看一下 1.泛化 概念:泛化是一种一般与特殊.一般与具体之间关系的描述,具体描述建立在一般描述的基础之上,并对其进行了扩展.在程序中是通过继承类实现的.比如狗是对动物的具体描述,在面向对象设计的时候一般把狗设计为动物的子类. 表示方法:空心三角形箭头的实线,子类指向父类 2.实现 概念:实现是一种类与接口的关系,表示类是接口所有特征和行为的实现,在程序中一般通过类实现接口来描述 表示方法:空心三角形箭头的

UML类图与类的关系详解--转

http://www.uml.org.cn/oobject/201104212.asp 原文地址 UML类图与类的关系详解   2011-04-21 来源:网络   在画类图的时候,理清类和类之间的关系是重点.类的关系有泛化(Generalization).实现(Realization).依赖(Dependency)和关联(Association).其中关联又分为一般关联关系和聚合关系(Aggregation),合成关系(Composition).下面我们结合实例理解这些关系. 基本概念 类图(

UML类图与类的关系

内容概要 1 UML类图介绍 2 类之间的关系 2.1 泛化与实现 2.2 关联2.3 依赖 ol {padding:0 0 0 20px;margin:0;list-style:none;} li:before {color:#f00; font-family:times new roman;} li{counter-increment:a 1;} li:before{content:counter(a)". ";} li li{counter-increment:b 1;} li

UML类图的6大关系

<小酌重构系列>已经完成了大约1/3了,在这些文章中,我使用了一些简单的类图来描述重构策略.在之后的文章中,我可能会借助稍微复杂一些的UML类图来介绍.但是在此之前,我觉得有必要先介绍一下UML类图中6大关系了.这6大关系分别是Inheritance(继承).Implementation(实现).Dependency(依赖).Association(关联).Aggretation(聚合)和Composition(组合).在这6大关系中,依赖.关联.聚合和组合是比较容易混淆的,我也会讲解它们之间

UML类图6种主要关系区别和联系

UML类图关系图示,因为长得都很类似,所以大家总会混淆,本文主要目的就是分析一下6中主要的关系,找到联系与区别,便于记忆. 6种主要的关系如图1所示.继承与实现.组合与聚合.关联与依赖可分别划分为一组,每组两种关系很近似(内涵和图示都很近似),但联系的强弱程度递减.比如,组合是一个有机组成,缺一不可,而聚合则是一种更松散,更弱的关系,大家可根据图中示例体会一下.关系图示上的区别是,联系减弱后,连线便由实线变化为了虚线,所以可以根据该规律进行记忆. 图1 UML类图6中主要关系示例 原文地址:ht

设计模式之UML类图以及类间关系

类图是描述系统中的类,以及各个类之间的关系的静态视图.能够让我们在正确编写代码以前对系统有一个全面的认识.类图是一种模型类型,确切的说,是一种静态模型类型.类图表示类.接口和它们之间的协作关系. 以下类图都是用 Visio 画的,因为这学期体系结构老师的实验报告强制使用这个软件画图. 类图的组成 普通类 一个类图由三部分组成. 第一部分是类名: 第二部分是属性,即成员变量.格式为:可见性 属性名称:类型[ = 缺省值]. 第三部分是操作,即方法.格式为:可见性 方法名称(参数列表)[ : 返回类

UML中类图与类图之间的关系

一.基本概念 类 ??定义:类是指具有相同属性.方法和关系的对象的抽象,它封装了数据和行为,是面向对象程序设计(OOP)的基础.在 UML 中,类使用包含类名.属性和操作且带有分隔线的矩形来表示. 名称 格式 例子 说明 类名 字符串 Student 无 属性 [可见性]属性名:类型[=默认值] -name:String 类的成员变量 操作 [可见性]名称(参数列表)[:返回类型] +display():void 任意一个类实例对象都可以使用的行为 ??注:"可见性"表示该属性对类外的