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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,142评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,298评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,068评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,081评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,099评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,071评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,990评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,832评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,274评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,488评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,649评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,378评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,979评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,625评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,643评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,545评论 2 352

推荐阅读更多精彩内容

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