半栈工程师技术干货Java学习笔记

简介UML类图

2017-10-18  本文已影响67人  BrightLoong
title
阅读原文请访问我的博客BrightLoong's Blog
UML全称**Unified Modeling Language **又称统一建模语言或标准建模语言。我们再学习各种框架或者设计模式之类的时候经常会看到UML类图,这里将UML类图一些基本点做一个记录。

在文章中所涉及到的UML类图是使用starUML工具创建,使用其他工具创建会有所不同。

总体印象

all

上面的UML类图基本展示了UML类图的大部分元素,以及类与类之间的关系,下面将对其一一进行解释。

NOTE

note

UML类图注解的表示方法,如上右半部所示。

类结构表示

class interface

类的表示方法如图,一般分为三层,从上到下依次为类名、属性和方法。接口表示和类的表示类似,只是在上面标明了是interface(这只是表示接口的一种方式,并且不同的工具展现方式可能不同,还有一种棒棒糖的形式,就是一个圆加一条竖线,并不常见,所以也不过多介绍),并且这里我隐藏了属性层。如果是抽象类,在使用starUML工具创建的时候类名会以斜线表示。关于类的表示有以下几点:

类关系表示

实现

realization

实现(Realization),用一个带空心三角箭头的虚线来表示。用来表示接口和实现类的关系。比如:Plane(飞机)和Car(汽车)都实现了接口IVehicle(交通工具)。

继承

Generalization

继承(Generalization,也称为泛化关系),用一个带空心三角箭头的实线来表示。表示父类与子类之间的关系。比如:Trunck(卡车)和Bus(公交车)都继承自父类Car(汽车)。

关联关系

关联(Association),关联关系分为以下几种

关联关系表示类与类之间的联系,是同一层次上的关系,它不像依赖关系具有偶然性和临时性。一般情况是关联类引用被关联类作为全局变量。如下Human持有Name。

大多数的关联关系都是单向的。

Association DirectedAssociation

聚合关系

Aggregation

聚合(Aggregation),用一头是空心菱形的直线表示(有些时候是一头为空心菱形,一头为箭头的实线)。聚合也是关联关系的一种,是整体和部分之间的关系,也就是has-a的关系(很多地方has-a,contains-a已经比较混乱,我理解上来看是has-a),整体包含部分,但是部分脱离整体后依然可以单独存在。如上:Car(汽车)包含Engine(引擎),但是Engine脱离了Car依然可以独立存在。

组合关系

Composition

组合(Composition),用一头是实心菱形的直线表示(有些时候是一头为实心菱形,一头为箭头的实线)。组合同样是一种关联关系,也同样是整体和部分之间的关系,我把它理解为contains-a的关系。和聚合的区别在于,部分脱离整体和无法单独存在,整体和部分具有相同的生命周期,整体不存在了,部分也就消失了。如上:Human(人类)包含Head(头)和Body(身体),头和身体并不能单独存在。

依赖关系

(Dependency

依赖(Dependency),用一头带箭头的虚线表示。表示类与类之间,一个类依赖于另一个类的定义。被依赖类的变化将会引起依赖类的变化。在java中依赖关系通常体现为,一个类使用另一个类作为局部变量,方法参数或静态方法调用,表示为use-a。如上,Engine的方法startEngine()方法使用Gasoline(汽油)作为参数,可能是调用了Gasoline中的burn()方法。

上一篇下一篇

猜你喜欢

热点阅读