UML建模详解之 类图的绘制和理解

类图中类的属性或方法的关键字修饰符

代码里类的属性或方法的关键字在类图里用以下方式表示:

  • -中划线表示private
  • #表示protected
  • ~表示default,也就是包权限
  • _下划线表示static
  • 斜体表示抽象

类图中的类、接口、枚举

类图中的类,用一个三层矩形来表示,第一层为类的名称、第二层内容是类的属性(成员属性)、第三层为类的行为(方法)。

image-20200723215037471

接口

UML内接口默认是使用一个圆形的图案加名称表示,但是很不直观,我们也可以用三层矩形的方式进行表示,在名字上方加上《interface》区分

image-20200723220032441

枚举

UML类图内枚举的表现形式和接口的类似

image-20200723220407114

类图中类之间的关系

UML类图中把对象之间的关系大致分为以下几种:泛化(Generalization)、实现(Realization)、关联(Association)、聚合(Aggregation)、组合(Composition)、依赖(Dependency)

这里使用StarUML绘制,引用《大话设计模式》里面的一个类图进行讲解类图绘制中各个关系的处理:

动物类图

泛化

泛化(Generalization)表示类与类之间的继承关系,表示一般和特殊的关系。它指定了子类如何特化父类的特征和行为。

继承(泛化)表示是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。

在UML里继承(泛化)关系使用一个空心三角形箭头+实线 表示:鸟继承动物对象,鸟类继承了动物父类的属性:有生命,行为:新陈代谢、繁殖。自己特有的新属性有羽毛、没有牙齿、会下蛋

image-20200724100048537

实现关系

实现表示一个class类实现一个或多个interface接口的功能,表示类是接口所有特征和行为的实现,在UML类图中根据接口的不同表现形式,实现接口有两种表现形式

(1) 矩形接口图:使用空心三角形箭头+虚线表示:大雁会飞,实现飞翔接口

(img-AvfZeQ9o-1595560520588

(2)圆形接口图:又称棒棒糖表示法,使用实线连接圆形接口图表示:唐老鸭实现说人话接口

image-20200724104018298

关联

对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系

在UML类图中,关联关系使用实线+箭头表示:企鹅对气候有很大关联,企鹅必须要知道气候信息。

企鹅与气候关联

聚合

表示一种弱的‘拥有’关系,即has-a的关系,体现的是A对象可以包含B对象,但B对象不一定是A对象的一部分。 两个对象具有各自的生命周期

在UML类图中,聚合关系使用空心菱形+实线表示:雁群聚合了一堆大雁对象,每一只大雁都属于一个大雁群,一个大雁群可以有多只大雁。当大雁死去后大雁群并不会消失,两个对象生命周期不同。

image-20200724105437176

组合

组合是一种强的拥有、组成关系,体现了严格的部分和整体关系,部分和整体的生命周期一样

在UML类图中组合关系用实心菱形+实线表示:鸟和翅膀就是组合关系,因为它们是部分和整体的关系,并且翅膀和鸟的生命周期是相同的

image-20200724105804441

依赖

对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者方法、行为依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系

在UML类图中,依赖关系使用虚线箭头表示:动物需要依赖氧气和水才能新陈代谢

image-20200724104505004

总结

根据上述类图笔者总结出以下表格,方便理解和记忆:

泛化(继承)空心三角形箭头+实线表示类与类之间的继承关系,表示一般和特殊的关系。它指定子类如何特化父类的特征和行为
实现空心三角形箭头+虚线/实线连接圆形接口图表示指定类是指定接口所有特征和行为的实现
关联实线+箭头对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系
聚合空心菱形+实线表示一种弱的‘拥有’关系,即has-a的关系,体现的是A对象可以包含B对象,但B对象不一定是A对象的一部分
组合实心菱形+实线组合是一种强的拥有、组成关系,体现了严格的部分和整体关系,部分和整体的生命周期一样
依赖虚线箭头对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者方法、行为依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系

最后附上笔者为了方便记忆的打油诗:

泛化实现要记牢,实线虚线空三角

聚合组合得分清,空心实心是菱形

关联依赖最简单,实线虚线加箭头

  • 12
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清晨先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值