标签:uml
UML统一建模语言是用来设计软件蓝图的可视化建模语言。支持面向对象系统的分析、设计、实现和交付等各个环节,可以用于系统的理解、设计、浏览、维护和信息控制。UML是由基本构造块、规则和其中的公共机制组成。
UML的基本构造块包括事物、关系和图。事物是构成模型图的一些基本图示标识,标识一些面向对象的基本概念。关系是基本图示符号之间的关系。图是从特定的视角对系统所做的抽象描述。
最让人头疼的就是四种基本的关系:关联、依赖、泛化、实现。如图,关联还有特殊情况:聚合和组合。
一、下面让我们先从理论上来理解一下各个关系:
关联:我们可以把关联关系称为“知道”,描述了两个或多个类之间的结构性关系,也就是一个静态关系。表现为两个类或者类与接口之间语义级别的一种强依赖关系。可以是单向的、双向的,表现在代码层面。
聚合:是一种“has a ”的关系,表示的是整体和部分。(空心菱形)整体和部分都可以相互独立存在,有各自的生命周期。例如汽车和发动机。
组合:是一种“contains a ”的关系,表示附属。(实心菱形)就是整体存在,部分就存在,如果整体没了,部分也不再存在,相同的生命周期。比聚合关系强。
依赖:我们可以把依赖关系成为“use”,表示一个类对另一个类的属性或者方法的使用,两个类之间依赖。是一种临时的、具有周期性的“弱”关系。随着软件运行状况的改变,依赖关系可以消失。箭头指向被依赖的那一方。
泛化:泛化关系就是我们常说的面向对象中的继承,即“is kind of ”。就是对于父类的定义对于子类也有效,子类可以有父类没有的。箭头由子类指向父类。
实现:是类元之间的语义关系,其中一个类元描述了另一个类元的保证实现的契约。一般是一个类实现了一个接口。箭头指向接口。
二、关系对比:
关联和依赖
通过以上的介绍我们可以知道依赖是最基本的、最弱的关系,关联就是一种强依赖关系。关联关系中的双方是平等的,不存在依赖关系的偶然性和临时性。关联关系一般是长期的。
组合和聚合
组合和聚合都属于关联关系,都是在说明整体和部分之间的关系。最大的区别在于聚合关系中整体和部分可以相互独立,他们有各自的生命周期。组合关系中的整体和部分之间是附属关系,不可分割,生命周期是相同的。
关联和聚合
虽然聚合关系是关联关系的分支,但是还是要区别一下的。关联关系中的两个类是平等的,例如我和我的朋友。而聚合关系中的两个类不是一个级别的,例如汽车和发动机。汽车和发动机都可以相互独立存在,两者不是一个级别的。
三、综合分析
通过以上的比较,我们得到的强弱程度依次为:组合>聚合>关联>依赖。依赖是最基本、最弱的关系,如果两个类之间可以用关联关系表示库不要用依赖关系。两个类之间是继承关系就用泛化,如果是接口和类之间就用实现关系。
四、小结
通过以上的对比,我们可以更清晰的认识每个关系。这也体现了对比学习的重要,我们不要将新的知识硬是放进自己的脑子里,而是拿出来旧的,或者是将两者进行对比,这样能更好地理解。了解了UML中的关系,那么开始我的画图之旅~~~~~~
标签:uml
原文地址:http://blog.csdn.net/xingyu0806/article/details/41924897