UML-(Unified Modeling Language)统一建模语言

1.介绍

UML 可以帮助我们做软件的需求分析和软件设计,它能够直观、形象、严谨地描述出业务概念、业务流程、客户需求。UML是一种基于面向对象的可视化的通用建模语言。它提供一组具有明确定义的图形符号,可以建立清晰的模型便于交流,同时所有的开发人员都可以无歧义地理解这个模型。

UML是一种富有表达力的语言,可以描述开发所需要的各种视图,并以此为基础组建系统。

2.分类

2.1UML定义了5类,10种模型图

五种图定义:

1.用例图:从用户角度描述系统功能,并指各功能的操作者。

2.静态图:包括类图,包图,对象图。

类图:描述系统中类的静态结构

包图:是包和类组成的,表示包与包之间的关系,包图描述系统的分层结构

对象图:是类图的实例

3.行为图:描述系统动态模型和对象组成的交换关系。包括状态图和活动图

活动图:描述了业务实现用例的工作流程

状态图:是描述状态到状态控制流,常用于动态特性建模

4.交互图:描述对象之间的交互关系

顺序图:对象之间的动态合作关系,强调对象发送消息的顺序,同时显示对象之间的交互

合作图:描述对象之间的协助关系

5.实现图:

配置图:定义系统中软硬件的物理体系结构

2.2 UML 大致可以分为两类:结构型和行为型

UML.png

图片来自 火球UML大战

3.各种图

3.1用例图

用例图表达的是什么角色(Actor)能够做什么事情(use case).

简单例子:

注意:扩展箭头执行被扩展对象。

Untitled.png

图片来自:火球UML大战

3.2 类图

类图描述系统中类的静态结构。不仅定义系统中的类,类之间的联系如关联、依赖、聚合等,也包括类的内部结构(类的属性和操作),帮助人们简化对系统的理解。

类图中的“类”与面向对象语言中的“类”的概念是对应的,是对现实世界中的事物的抽象。

UML支持的可见性标志:(+Public)(-private) (#protected) (~package)

Untitled.png

3.2.1 关联关系

关联关系(Association)关系式类与类之间最常用的一种关系,他是一种结构化关系,用于表示对象与另一个类对象之间有联系。如班级和学生。用实线连接有关联关系的两个类。

3.2.2“ 包含”关系

有两种表示法,一种是空心菱形,一种是实心菱形。 实心菱形更强烈,关系更紧密。

空心菱形的中文术语标准说法是聚合(Aggregation),实心菱形组合(Composition)。

汽车和发动机是聚合。 杯子和杯柄是组合。

关系为“has a ”。 整体和部分之间的关系。

具有组合关系的两个类,他们的生命周期是一致的。

菱形指向顶端

3.2.3 泛化关系

在面向对象中一般称为继承关系,存在于父类于子类、父接口与子接口之间。

箭头指向父类

3.2.4 依赖关系(实现)

依赖关系体现在某个类的方法使用另一个类的对象作为参数。 之间的关系为“使用”。

依赖关系使用一条带箭头的虚线表示,如A----->B(A依赖于B).

_

一个好的例子:

Untitled.png

图片来自: http://www.360doc.com/content/13/0304/13/10504424_269223190.shtml

3.3 活动图

活动图描述系统的动态行为。

每个活动指的是一个执行步骤或者一个操作。

活动图描述的是系统内部的逻辑执行过程。

Untitled.png

Untitled.png

图片来自:火龙果软件

Untitled.png

图片来自:火龙果软件

3.4 顺序图

顺序图是用来表示用例中的行为顺序。

顺序图包含了四个元素:对象(Object)、声明线(Lifeline)、消息(Message)和激活(Activation)

对象带下划线, 传递消息是实线实体箭头,返回消息是虚线

消息体:实心箭头(同步调用操作) ; 棍型箭头(异步操作)

<1> 点餐

Untitled.png

图片来自:火球UML大战

顺序图的循环及分值结构:

loop:循环,在满足循环条件的前提下,不断地重复做某些事情。

alt : alternative的缩写,条件分分支,根据不同的条件选择不同的分支。

opt : optional 的缩写,可选分支,满足一定条件则执行该分支,否则就跳过。

Untitled.png

图片来自:火球UML大战

参考资料:

《火球UML大战》

https://blog.csdn.net/lovelion/article/details/7838679

https://www.visual-paradigm.com/guide/uml-unified-modeling-language/what-is-class-diagram/

Last modification:January 14th, 2020 at 07:35 pm