【UML】统一建模语言UML 基础
文章目录
- 一、概述
- 1.1 - 什么是建模
- 1.2 建模的原则
- 1.3 软件建模的实现过程
- 二、 UML
- 2.1 UML中10种图
- 三、用例图
- 3.1 用例之间的关系 —— 泛化关系
- 3.2 用例之间的关系 —— 包含关系
- 3.3 用例之间的关系 —— 扩展关系
- 四、类图
- 4.1 类的表示方法
- 4.2 类之间的关系 —— 泛化关系
- 4.3 类之间的关系 —— 实现关系
- 4.4 类之间的关系 —— 依赖关系
- 4.5 类之间的关系 —— 关联关系
- 4.6 关联关系的名称
- 4.7 关联关系的角色
- 4.8 关联关系的多重性
- 4.9 类之间的关系 —— 关联 - 聚合
- 4.10 类之间的关系 —— 关联 - 组合
一、概述
1.1 - 什么是建模
统一建模语言
开发之前 规划 骨架规划好,然后
什么是建模,
软件设计:把软件开发想清楚的过程
软件工程:对软件开发全过程进行建模和管理
互联网开发模式,敏捷开发。
比如12个功能,只做一个核心功能,投放市场看用户反馈,早早与用户需求完全靠拢,极限编程。
模型:对问题的书面上的无歧义文字或图形的描述。简而言之,模型是对现实的简化。通过模型,人们可以了解所研究事物的本质。
模型是对现实实际问题的简化,比如地图。
1.2 建模的原则
1)选择建立什么样的模型对如何发现和解决问题具有重要的影响。正确的模型有助于提高开发者的洞察力。
盖狗窝 和 盖高楼不一样,盖高楼需要考虑避雷,电梯规划等等的。
2)每个模型可以有多种表达方式。使用者的身份和使用的原因是评判模型好坏的关键
3)最好的模型总是能够切合实际。模型是现实的简化,必须保证简化过程不会掩盖任何重要的细节。
1.3 软件建模的实现过程
软件建模的作用是把来源于现实世界的问题转化为计算机可以理解和实现的问题。
现实世界 —映射—> 计算机世界
软件建模的实现过程是从需求入手,用墨香表达分析设计过程,最终将模型映射程软件实现。
需求 --> 模型 --> 编码
二、 UML
- UML(United Modeling Language, 统一建模语言): 是一种基于面向对象可视化建模语言。
- UML采用了一组形象化的图形(如类图)符号作为建模语言,使用这些符号可以形象地描述系统地各个方面
- UML通过建立图形之间的各种关系(如类与类之间的关系)来描述模型。
2.1 UML中10种图
- 类图
- 对象图
- 包图
- 组件图
- 部署图
- 用例图
- 时序图
- 协作图
- 状态图
- 活动图
三、用例图
1 - 用例图(Use Case Diagram): 也称为用户模型图,是从软件需求分析到最终实现的第一步,它是从客户的角度来描述系统功能。
2 - 用例图包含 3 个基本组件:
参与者(Actor): 与系统打交道的人或其他系统即使用系统的人或事物。在 UML 种参与者用人形图标表示
用例(Use Case): 代表系统的某项完整功能。在 UML 种使用一个椭圆来表示
关系: 定义用例之间的关系 —— 泛化关系、扩展关系、包含关系
3.1 用例之间的关系 —— 泛化关系
泛化关系:表示同一业务的目的(父用例)的不同技术实现(各个子用例)。在UML中,用例泛化用一个三角箭头从子用例指向父用例。以下是某购物网站为用户提供不同的支付方式
3.2 用例之间的关系 —— 包含关系
一个用例可以包含其他用例具有的行为,并把它包含的用例行为作为自身行为的一部分。在 UML 中包含关系用虚线箭头加 "<<include>>"
,箭头执行被包含的用例。
3.3 用例之间的关系 —— 扩展关系
如果在完成某个功能的时候偶尔会执行另外一个功能,则用扩展关系表示,在UML中扩展关系用虚线箭头加<<extend>>
, 箭头指向被扩展的用例。
四、类图
类图是面向对象系统建模中最常用的图,是定义其他图的基础。
类图主要是用来显示系统中的类,接口以及它们之间的关系。
类图包含的主要元素有类、接口和关系。其中关系有泛化关系、关联关系、依赖关系和实现关系。在类途中也可以包含注释和约束
4.1 类的表示方法
- 类是类图的主要组件,由三部分组成:类名、属性和方法。在UML中,类用矩形来表示,顶端部分存放类的名称,中间部分存放类的属性,属性的类型及值,底部部分存放类的方法,方法的参数和返回。
- 在UML中可以根据实际情况由选择的隐藏属性部分或方法部分或者两者都隐藏。
- 在UML中,公有类型由
+
表示,私有类型用-
表示,保护类型用#
表示,UML的工具开发上可以使用自己定义的符号表示不同的可见性
4.2 类之间的关系 —— 泛化关系
- 在UML中,泛化关系用来表示类与类,接口与接口之间的继承关系,泛化关系有时也称为“is a kind of” 关系
- 在UML中泛化关系用一条实线空心箭头由子类指向父类
4.3 类之间的关系 —— 实现关系
在UML中,实现关系用来表示类与接口之间,实现关系用一条虚线空心箭头由子类指向父类。
4.4 类之间的关系 —— 依赖关系
对于两个相对独立的系统,当一个系统负责构造另一个系统的实例,或者依赖另一个系统的服务时,这两个系统之间体现为依赖关系。例如生产零件的机器和零件,机器负责构造零件对象,充电电池和充电器,充电电池通过充电器来充电。自行车Bicycle和打气筒Pump,自行车通过打气筒来充气
class Bicycle
{
public:
void run();
};
// 如果说 Person类 有一个成员方法,将Bicycle当作一个形参来传递,并且Person没有 Bicycle成员
// 就说Person类依赖于 Bicycle
class Person
{
public:
void goToWork(Bicycle* bcl)
{
bcl->run();
}
};
4.5 类之间的关系 —— 关联关系
对于两个相对独立的系统,当一个系统的实例与另一个系统的一些特定实例存在固定的对应关系时,这两个系统之间为关联关系。例如客户和订单,每个订单对应特定的客户,每一个客户对应一些特定的订单;公司和员工,每一个公司对应一些特定的员工,每个员工对应一特定的公司;自行车和主人,每辆自行车属于特定的主人,每个主任有特定的自行车。而充电电池和充电器之间就不存在固定的对应关系,同样自行车和打气筒之间也不存在固定的对应关系。
// 如果说 Person2 类 有一个成员方法,用到了另外一个 Bicycle类,并且还拥有Bicycle的成员
// 就说Person2 关联 Bicycle
class Person2
{
public:
void goToWork()
{
bicycle->run();
}
private:
Bicycle bicycle;
};
关联关系比依赖关系更紧密一些
4.6 关联关系的名称
关联关系可以有一个名称,用于描述该关系的性质。此关联名称应该是动词短语,因为它表明源对象正在目标对象上执行动作。
4.7 关联关系的角色
当一个类处于关联的某一端时,该类就在这个关系中扮演一个特定的角色。具体来说,角色就是关联关系中一个类对另一个类所表现的职责。角色名称是名词或名词短语。
4.8 关联关系的多重性
指有多少对象可以参与该关联,多重性可以用来表达一个取值范围,特定值,无限定的范围
一个人拥有 1-n台自行车 一个自行车只能被1个人拥有
4.9 类之间的关系 —— 关联 - 聚合
- 聚合关系是关联关系的一种,是更强的关联关系。
- 聚合和整体和部分之间的关系,例如汽车由引擎、轮胎以及其他零件组成。
- 聚合关系也是通过成员变量来实现的。但是关联关系所设计的两个类处在同一个层次上,而聚合关系,两个类处于不同的层次上,一个代表整体,一个代表部分。
4.10 类之间的关系 —— 关联 - 组合
- UML类图关系中组合关系是关联关系的一种,是比聚合还要强的关系。
- 代表整体对象负责代表部分对象的生命周期