[Unity设计模式与游戏开发]UML入门

前言

UML类图对软件开发者而言应该是必须要了解的工具之一,也是大学软件设计专业必学的课程之一,对我们理解设计模式有非常大的好处,但很惭愧由于我的大学专业并不是软件设计所以我之前其实对UML只是大致了解,但有一些符号还是有些模糊,因此也就特地在整理巩固一下。

UML基本介绍

  1. UML就是统一建模语言,是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的类图。
  2. UML本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和他们之间的关系,比如类、接口、实现、泛化、依赖、组合、聚合等,如下图
    在这里插入图片描述
    3)使用UML来建模,常用的工具有Rational Rose,也可以使用一些插件来建模

UML常见类图模型

1.用例图:对系统的使用方式分类.
2.类图:显示类和它们的相互关系。
3.对象图:只显示对象及它们的相互关系。
4.活动图:显示人或对象的活动,其方式类似于流程图。
5.状态机图:显示生命周期比较有趣或复杂的对象的各种状态。
6.通信图:显示在某种情形下对象之间发送的消息。
7.顺序图:显示与通信图类以的信息,但强调的是顺序,而不是连接。
8.包图:显示相关的类如何组合,对开发人员有用。
9.部署图:显示安装已完成系统的机器、过程和部署制品。
10.组件图:显示可重用的组件(对象或子系统)及期接口。
11.交互总图:使用顺序图喧赤活动的务个步骤。
12.时间图:显示消息和对象状态的准确时间限制。
13.复合结构图:显示对象在聚合或复合中的相互关系,显示接口和协作的对象
常用的 UML 图可分静(态)图、动(态)图两类,静态图主要描绘软件的静态结构,而动态图主要描绘软件的动态行为。
常用 UML 动态图(5 个):用例图,活动图,状态机图,序列图,通信图。
常用 UML 静态图(4 个):类图,包图,部署图,构件图。

UML类图

在这里插入图片描述
在所有UML图中,类图是使用评率最高的UML图。类图用于描述系统中所包含的类已经他们之间的相互关系,帮助人们简化对系统的理解,它是系统分析和设计阶段的重要产物,也是系统该变化和测试的重要模型依据。
类图主要关系有:泛化(Generalization),实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)。

依赖(Dependency)

【依赖关系】:是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖。
【代码表现】:局部变量、方法的参数或者对静态方法的调用
【箭头及指向】:带箭头的虚线,指向被使用者

例如:程序员需要依赖计算机
在这里插入图片描述

再举一个例子:

public void PersonServiceBean
{
	private PersonDao personDao;
    public void save(Person person){}
    public IDCard getIDCard(Integer personid){}
    public void modify(){}
    {
    	Department department = new Department();
    }
}

转成UML如下:
在这里插入图片描述

依赖小结:
1)类中用到了对方
2)如果是类的成员属性
3)如果是方法的返回类型
4)是方法接受的参数类型
5)方法中使用到

泛化(Generalization)

**【泛化关系】:是一种继承关系,它是依赖关系的特例,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。**例如:苹果树是树的一种,即有苹果树的特性也有树的共性。
【代码体现】:类继承另一个类
【箭头指向】:带三角箭头的实线,箭头指向父类
在这里插入图片描述

实现(Realization)

【实现关系】:是一种类与接口的关系,表示类是接口所有特征和行为的实现。
【代码体现】:类实现接口成员
**
【箭头指向】:带三角箭头的虚线,箭头指向接口**
在这里插入图片描述

关联(Association)

【关联关系】:类与类之间的关系,是一种拥有的关系,它使一个类知道另一个类的属性和方法;
【代码体现】:成员变量
【箭头及指向】:带普通箭头的实心线,指向被拥有者

在这里插入图片描述
上图,表示企业和员工的关联关系,员工都属于一个企业
除此之外,关联关系允许互相关联,比如夫妻关系,可以互相关联。也允许自关联,即自己也是自己的成员之一。

聚合(Aggregation)

【聚合关系】:是整体与部分的关系,关联关系的一种特例,且部分可以离开整体而单独存在。如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。
聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。
【代码体现】:成员变量
【箭头及指向】:带空心菱形的实心线,菱形指向整体

在这里插入图片描述

组合(Composition)

**【组合关系】:是整体与部分的关系,但部分不能离开整体而单独存在。**如公司和部门是整体和部分的关系,没有公司就不存在部门。
组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。
【代码体现】:成员变量
【箭头及指向】:带实心菱形的实线,菱形指向整体

在这里插入图片描述

组合和聚合的区别

组合跟聚合很类似,但又比较容易混淆,聚合在类中是以成员变量的形式存在,组合是在类中定义的成员变量是New了之后的对象,上面聚合已经拿车和轮胎举例,而组合再举一个例子人跟脑袋的关系,脑袋不能单独离开人而独立存在,而人也不能没有脑袋。这样两个例子就很能对比出组合和聚合的关系。

public class Person
{
	private IDCard card;//聚合关系
    private Head head = new Head();//组合关系
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-osCBrx3n-1586844010920)(Unity-设计模式-UML/12.png)]

下面这张图是从网上下载的上面各种关系的一个综合图:
泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖
在这里插入图片描述

类图中细节符号含义

UML是一种统一建模语言,在使用过程中就有统一的细节表示,下面是几种通用的表示方法,不论你在使用什么工具,总体表示差异并不大。
类:
抽象类,类名使用斜体显示。
字段、属性、方法:
"+"表示public
"-"表示private
"#"表示protected
接口:
与类图的区别主要是顶端有<<接口>>显示,见上面的示例图。

UML类图工具

UML工具比较多,常用的三大UML建模工
(1)PowerDesign
(2)Rose
(3)Visio
(4)StartUML
还有一些免费的工具有:
(1)UMLet
(2)ArgoUML
(3)JUDE
(4)BOUml
(5)Visual Paradigm
在线建工具:
https://www.processon.com

注意:Visual Studio 2017貌似要手动添加UML模块,但我添加之后还是没有找到可创建的模板,我用VS2013就可以使用UML,百度有搜到同行说2017有问题。

设计模式系列教程汇总

http://dingxiaowei.cn/tags/设计模式/

教程代码下载

https://github.com/dingxiaowei/UnityDesignPatterns

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页