当前位置: 代码迷 >> 综合 >> 软件设计、源码阅读之必备技能UML类图的绘制和理解
  详细解决方案

软件设计、源码阅读之必备技能UML类图的绘制和理解

热度:47   发布时间:2024-01-31 15:22:38.0

文章目录

      • 类图中类的属性或方法的关键字修饰符
      • 类图中的类、接口、枚举
        • 接口
        • 枚举
      • 类图中类之间的关系
        • 泛化
        • 实现关系
        • 关联
        • 聚合
        • 组合
        • 依赖
      • 总结

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

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

  • -中划线表示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类图中,关联关系使用实线+箭头表示:企鹅对气候有很大关联,企鹅必须要知道气候信息。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xsa7o3ti-1595560520591)(C:%5CUsers%5Cyangxh%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20200724104943875.png)]

聚合

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

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

image-20200724105437176

组合

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

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

image-20200724105804441

依赖

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

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

image-20200724104505004

总结

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

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