您现在的位置是:首页 > 大话设计模式网站首页

大话设计模式二一UML类图作用与使用方法

简介 本文主要介绍UML类图的概念、作用以及使用方法。

本文和大家重点讨论一下UML类图的使用,以及UML类图与设计模式之间的关系。

为什么要学习使用UML类图?

在软件开发工作初期,分析与设计是不可或缺的步骤。

何为分析?在我的理解里,分析就是:根据用户的需求,做出一系列与业务领域相关,与编程技术无关的整理与识别。

而设计,一定是分析结果完成之后,根据分析材料与技术平台,确定软件系统的架构、结构、编码方式及一切与具体技术有关的问题。

可以看到,设计与分析不同,它必须由计算机编程领域相关的人来完成,因为它和技术是息息相关的。

众所周知,UML(Unified Modelling Language,统一建模语言)已经在系统分析与设计中得到了广泛的采用。本文主要讲的是系统设计,不谈系统分析,在系统设计领域,UML类图是最重要也是使用最普遍的图之一。

UML类图是什么

UML类图一般实现于系统的设计阶段,其主要作用是描述系统的技术架构、结构,用来指导程序员编码。它包括系统中所有有必要指明的实体类、控制类、界面类及与具体平台有关的所有技术性信息。

UML类图是作为程序员编码的依据存在的,UML类图设计好之后,程序员只用专注于系统的编码实现即可,无需去关心系统的健壮性、耦合程度,因为这都是在设计阶段所考虑的。所以,UML类图的设计,可以看做是编程的核心部分。

由于在设计原则、设计模式的学习过程中,会大量使用UML类图,所以在学习设计模式之前,有必要对UML类图有个全面的了解认识。

UML类图使用方法

类的基本表示方式

在UML类图中,每一个矩形代表一个类,矩形从上到下包含类名、属性和方法,且用分割线隔开,如下图所示:

类图的表示方式

-表示private

#表示protected

~表示default,也就是包权限

_下划线表示static

斜体表示抽象

类与类之间的关系

在UML类图中,常见的有以下几种关系:依赖(Dependency), 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition)。

依赖关系

介绍:
依赖关系是一种使用关系,特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用依赖关系。

大多数情况下,依赖关系体现在某个类的方法使用另一个类的对象作为参数。

表示方法:
在UML类图中依赖关系用虚线箭头表示。

示例:

从上图我们可以看到,司机的驾驶方法只有传入了一个汽车对象才能发挥作用,因此我们说司机类依赖于汽车类。

泛化关系

介绍:
泛化关系也就是继承关系,用于描述父类与子类之间的关系,父类又称作基类或超类,子类又称作派生类。如下图所示中,猫类与狗类继承了动物类。

表示方法:
在UML类图中用带空心三角形的直线表示泛化关系

实现关系

介绍:
接口之间也可以有与类之间关系类似的继承关系和依赖关系,但是接口和类之间还存在一种实现(Realization)关系。如下图,汽车和火车都实现了交通工具接口。

表示方法:
在UML类图中用带空心三角形的虚线表示实现关系。

关联关系

关联关系又可进一步分为单向关联、双向关联和自关联。

单向关联

我们拿生活中常有的点外卖举例,每位顾客都有一个地址,那么在UML类图中,每位顾客都关联一个地址,而地址是单独存在的,这就是单向关联。如下图表示:

在UML类图中单向关联用一个带箭头的直线表示。

双向关联

在上图中,每位顾客都会购买一份快餐外卖,快递员送快餐时,每个快递也都有个顾客,顾客与快餐这两个对象互相持有对方类型的成员变量,那么这两个类就是双向关联的。

在UML类图中,双向关联用一个不带箭头的直线表示。

自关联

自关联在UML类图中用一个带有箭头且指向自身的直线表示。上图的意思就是产品类包含类型为产品的成员变量,也就是“自己包含自己”。

聚合关系

介绍
聚合关系表示一种弱的‘拥有’关系,即has-a的关系,强调的是“整体”包含“部分”,但是“部分”可以脱离“整体”而单独存在,这 两个对象具有各自的生命周期。

例如汽车与发动机,汽车”拥有”发动机,但发动机脱离汽车也是可以单独存在的。类图如下:

表示方法:
聚合关系用空心的菱形 实线箭头表示。

组合关系

介绍
组合关系与聚合关系见得最大不同在于:这里的“部分”脱离了“整体”便不复存在。比如下图:

显然,嘴是头的一部分,并且不能脱离了头而单独存在。

表示方法:
组合关系用实心的菱形 实线箭头表示。

以上就是本文所有内容。

文章评论

Top Error:远程服务器返回错误: (403) 已禁止。