最近在看UML的视频,对UML有了一个初步的了解。Unified Modeling Language (UML)又称统一建模语言或标准建模语言,是用来设计软件蓝图的可视化建模语言,它支持面向对象系统的分析、设计、实现、和交互等各个环节,可以用于系统的理解、设计、浏览、维护和信息控制。初步接触感觉UML中很重要的两部分一是UML中的关系,一是UML中的图,接下来对这两部分总结一下。
【知识点】
UML中定义的关系主要有四种:依赖、关联、泛化、实现,其中关联还包括聚合和组合,聚合和组合是关联关系中的两种特例。各种关系说到底也是用来描述UML图中的各种联系,下面结合类图描述一下这几种关系:
依赖(Dependency)是一种使用关系,他说明一个事物规格说明的变化可能影响到使用它的另一个事物,就是一个类A使用到了另一个类B,A依赖于B,而且B的变化会影响到A 。这种使用关系是具有偶然性和临时性的,非常弱。用一条虚线加箭头来表示,如下:
关联(Association)包括普通关联、聚合、组合,普通关联他体现的是两个类、或者类与接口之间语义级别的一种强依赖关系,这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的,关联可以是单向、双向的。用一条实线来表示, 如下:
聚合是关联关系的一种特例,表示两个类之间是“is part of”关系,即整体/部分关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享。用一条实线加空心菱形来表示,如下:
组合也是关联关系的一种特例,他体现的是一种“contains-a”的关系,组合也是表示整体和部分的关系,和聚合作比较会发现它们的不同,它表示部分对象被嵌入到整体对象中。比如:头是身体的一部分,此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束,这种关系比聚合更强,也称为强聚合。用一条实线加实心菱形来表示,如下:
泛化(Generalization)是描述类和类之间的继承关系,泛化有时被称作“is-a”关系。指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。用一条实线加空心三角形来表示(三角箭头指向被继承类父类),如下:
实现(Realization)是类元之间的语义关系,在该关系中一个类元描述了另一个类元保证实现的契约。说白了就是描述类与接口(interface)之间的关系,用一条虚线加空心三角形来表示,如下:
关于UML中的图,视频中介绍了九种,use-case Diagrams(用例图),class Diagrams(类图),object Diagrams(对象图),state Diagrams(状态图),component Diagrams(构件图),deplaynent Diagrams(部署图),comaberation Diagrams(协作图),sequence Diagrams(序列图),activity Diagrams(行为图)。可分为四个层次:用例图,类图,行为图,实现图。就不详细说明了,等看完视频再来详细介绍吧!
【小结】
实现和泛化是类与接口之间最常见的关系,它们体现的是一种类与类、或者类与接口之间的纵向关系;这里需要注意的是依赖、关联、聚合、组合几种关系的强弱程度,它们所表现的强弱程度依次为:组合>聚合>关联>依赖,画图的过程中要选用最适合的关系,这一点很难掌握,要不断学习。要尽快熟悉如何使用Rational Rose,才能更好的理解UML中的各种图。
附图一张: