一张图让你快速学会UML(聚合、组合、依赖、继承、接口、类)

有朋友反映,一上来直接讲设计模式就算理解了,也不知道如何画出类图,那么我们就通过一张图,来图解如何应用UML正确表示类与类之间的关系。

 

 

 

这张图完整讲述了鸟类的生存。

 

首先是类:在UML中,我们用分成三栏的长方形表示。第一栏是名称,第二栏是属性,第三栏是方法。

 

继承:唐老鸭属于鸭的一种,或者说是鸭的细化划分,而鸭属于鸟类,鸟类属于动物,这里无论表达成“是”还是属于,就是这样一个直观的关系。用实线一端带空心三角箭头表示。箭头指向父类。

 

依赖:凡是动物,生存都需要水和空气,这种必须的需求,我们称之为依赖关系。用虚线一端带箭头表示,箭头指向依赖物。

 

聚合、组合:这两个关系我们放在一起,因为她们看似十分的相似,但是却有着本质的区别。

                 很多大雁聚合在一起变成雁群,也可以说雁群里有雁,所以是整体和个体之间的关系,has-a的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期。即雁群可以不存在了,但是孤雁仍然存在。

                      一只鸟由两个翅膀组合而成,即一只鸟有两个翅膀。虽然组合和聚合我们都说“有”什么,但是这个“有”是不同的,他体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束,比如这只鸟死了,自然这两个翅膀也就不存在了。

 

关联:企鹅和气候有关联,关联是最常见的关系,表示类与类之间的联接它使一个类知道另一个类的属性和方法关联有两个端点, 在每个端点可以有一个基数, 表示这个关联的类可以有几个实例
           常见的基数及含义: 0..1:0 或1 个实例
                                             0..*: 对实例的数目没有限制
                                             1: 只能有一个实例
                                             1..*: 至少有一个实例.

接口:最后就是接口了,接口有两栏组成,第一栏的顶端加上《interface》后下方写接口名称,第二栏是接口方法。接口有自己的表示方法“实现”,虚线一端带空心三角形。实际开发中,为了更好的实现"开-闭原则",一般都是定义接口,依赖于接口,依赖于抽象。

 

还有一个概念是——多态,图中没有出现。多态顾名思义就是有很多种形式。

bush.roar()

 

 

orang.roar()

 

donald.roar()

同样是一个roar消息,却因为不同的对象可产生完全不同的结果。

 

 

以上,就是通过一张图快速了解UML啦,图片via《大话设计模式》,如有不足,欢迎斧正!

 
 
 
 
posted @ 2015-12-20 23:07  cilic  阅读(33911)  评论(2编辑  收藏  举报