UML概述
- 统一建模语言(Unified Modeling Language,简称UML)是一种用于软件系统建模的图形化语言。
- 包含了一系列的图表、符号和规则 ,用于描述软件系统的结构、行为和交互。可以用UML来表示软件设计和开发过程中的需求分析、系统设计、模块设计、实现和测试等工作。
- UML是由Object Management Group(OMG)提出的标准化的建模语言,目的是为软件开发人员提供可视化的通用语言,使得开发人员在软件开发过程中能够更好地协同工作,提高软件的质量和可维护性。
- 软考(系统架构设计师)中,UML统一建模语言是面向对象的需求分析的重要工具。
UML主要组成部分
- uml包含静态图和动态图两类,静态图主要用于描述系统的结构,动态图主要用于描述系统的行为。
- 顺序、通信、定时、交互概览图又统称为交互图
用例图:系统与外部参与的的交互
顺序图:时间循序
定时图:强调实际时间
类图
- 是描述类、接口、协同以及他们之间关系的图,用来显示系统中这些概念的静态结构。
- 组成元素:类(属性、方法)、关系(实现= 泛化 > 组合 > 聚合 > 关联 > 依赖)、多重度
多重度
1: 一个对象
0…:0个或多个对象
1…: 至少对应一个
*:对应多个对象
关系
关系类型 | 关系描述 | 图形标识 | 方向 | 举例 |
---|---|---|---|---|
泛化 | 一般与特殊的关系,是一种继承关系 | 带三角箭头的实线 | 箭头指向父类 | 动物-老虎 |
实现 | 类与接口的关系 | 带三角箭头的虚线 | 箭头指向接口 | Iuser-VIPuser |
组合 | 整体与部分的关系,部分不能离开整体而单独存在 | 带实心菱形的实线 | 菱形指向整体 | 公司-部门 |
聚合 | 整体与部分的关系,部分可以离开整体而单独存在 | 带空心菱形的实心线 | 菱形指向整体 | 汽车-轮胎 |
关联 | 是一种拥有的关系,它使一个类知道另一个类的属性和方法 | 带普通箭头的实心线(双向可以没有箭头) | 指向被拥有者 | 老师-学生-课程 |
依赖 | 一种使用的关系,即一个类的实现需要另一个类的协助 | 带箭头的虚线 | 指向被使用者 | 人-电脑 |
类图中不同关系的java代码示例
- 泛化:子类继承父类
//鸟类继承动物类
Public class Bird extend Animal{
}
- 实现:类实现接口
//大雁实现飞翔接口
Public class WideGoose impment IFly{
}
- 组合:整体-部分,contains a, 整体类有一个部分类(可能是list多个)的属性,并且生命周期相同(在整体类构造方法中,构造部分类)
//在鸟Bird类中,初始化时,实例化翅膀Wing,他们之间生命周期一样
Public class Bird{
private Wing wing;
Public Bird(){
wing=New Wing();
}
- 聚合:整体-部分,has a,部分是整体的成员变量,部分类可以作为整体类构造方法的入参(二者可独立存在)
//大雁作为成员变量传入雁群类
Public class WideGooseAggregate{
List<WideGoose> wideGooses
public WideGooseAggregate(List<WideGoose> wideGooses) {
this.wideGooses = wideGooses;
}
}
- 关联:拥有,被关联类作为关联类的成员变量。一个类的对象作为另一个类的成员变量传入或者返回值。一个类作为另一个类方法里的局部变量
1. 一个类的对象作为另一个类的成员变量传入或者返回值
//企鹅类引用气候对象
Public class Penguin {
private Climate climate;
}
2. 一个类作为另一个类方法里的局部变量
//气候类企鹅类方法里的局部变量
Public class Penguin {
public void print(){
Climate climate;
}
}
- 依赖:使用,一个类可以使用另一个类,一个类的对象作为另一个类的方法参数传入
//氧气类作为动物类中某个方法的参数
Public class Animal {
Public Metabolism(Oxygen oxygen) {
}
}
顺序图
- 描述对象间基于时间的动态交互
- 顺序图有四部分:参与者(Actor)或对象(Object)、生命线(Lift Line) 、激活期 和 消息。
用例图
- 描述一组参与者、用例和他们的关系
- 关系:
- 包含(include):做某事前必须先做什么事,通常是抽象出的多个用例的公共部分
- 扩展(extend):有可能做也可能不做
- 泛化:抽象与具体的关系
- 参与者:人、组织、系统、时间、温度等
协作图(通信图)
- 交互图的一种,强调对象间的消息收发关系
状态图
- 对类图的补充,展现此类对象具有的可能状态,以及某些事件发生时其状态转移情况。
- 状态(节点上的内容)、事件(线上的内容)
活动图
- 一种特殊的状态图。
- 描述一个操作中要进行的各项活动的执行流程,也通常用来描述一个用例的处理流程或某种交互流程
- 活动图节点是动作,状态图节点是状态
定时图
- 交互过程中真实的时间信息、时间段
构件图、包图
部署图
- 包含软硬件的映射关系、通信协议等