简介UML类图

title

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

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

总体印象

all

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

NOTE

note

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

类结构表示

class
interface

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

  • +:public,-:private,#:protected
  • 属性冒号后的内容表示属性的类型
  • 方法冒号后的内容表示属性的返回值
  • 类型说明并不是必须的

类关系表示

实现

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()方法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在UML 2.0的13种图形中,类图是使用频率最高的UML图之一。Martin Fowler在其著作《UML Di...
    雷雷_zll阅读 14,547评论 0 14
  • 忘记了uml类图连线之间的关系,记录一下。 1. 关联关系 关联(Association)关系是类与类之间最常用的...
    cutieagain阅读 5,864评论 0 2
  • UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别 软件开发过程中经常会遇到UML建模,那么你对...
    Android技术研究阅读 11,684评论 2 16
  • UML类图用来定义系统中的类,包括描述类的结构和类之间的关系。类图的主要作用于描述系统的静态结构。先看一张图(图片...
    Josaber阅读 11,295评论 0 5
  • 前言 UML(Unified Modeling Language)中文统一建模语言,是一种开放的方法,用于说明、可...
    Code4Android阅读 7,300评论 4 67