UML
UML-(Unified Modeling Language)统一建模语言
1.介绍
UML 可以帮助我们做软件的需求分析和软件设计,它能够直观、形象、严谨地描述出业务概念、业务流程、客户需求。UML是一种基于面向对象的可视化的通用建模语言。它提供一组具有明确定义的图形符号,可以建立清晰的模型便于交流,同时所有的开发人员都可以无歧义地理解这个模型。
UML是一种富有表达力的语言,可以描述开发所需要的各种视图,并以此为基础组建系统。
2.分类
2.1UML定义了5类,10种模型图
五种图定义:
1.用例图:从用户角度描述系统功能,并指各功能的操作者。
2.静态图:包括类图,包图,对象图。
类图:描述系统中类的静态结构
包图:是包和类组成的,表示包与包之间的关系,包图描述系统的分层结构
对象图:是类图的实例
3.行为图:描述系统动态模型和对象组成的交换关系。包括状态图和活动图
活动图:描述了业务实现用例的工作流程
状态图:是描述状态到状态控制流,常用于动态特性建模
4.交互图:描述对象之间的交互关系
顺序图:对象之间的动态合作关系,强调对象发送消息的顺序,同时显示对象之间的交互
合作图:描述对象之间的协助关系
5.实现图:
配置图:定义系统中软硬件的物理体系结构
2.2 UML 大致可以分为两类:结构型和行为型
图片来自 火球UML大战
3.各种图
3.1用例图
用例图表达的是什么角色(Actor)能够做什么事情(use case).
简单例子:
注意:扩展箭头执行被扩展对象。
图片来自:火球UML大战
3.2 类图
类图描述系统中类的静态结构。不仅定义系统中的类,类之间的联系如关联、依赖、聚合等,也包括类的内部结构(类的属性和操作),帮助人们简化对系统的理解。
类图中的“类”与面向对象语言中的“类”的概念是对应的,是对现实世界中的事物的抽象。
UML支持的可见性标志:(+Public)(-private) (#protected) (~package)
3.2.1 关联关系
关联关系(Association)关系式类与类之间最常用的一种关系,他是一种结构化关系,用于表示对象与另一个类对象之间有联系。如班级和学生。用实线连接有关联关系的两个类。
3.2.2“ 包含”关系
有两种表示法,一种是空心菱形,一种是实心菱形。 实心菱形更强烈,关系更紧密。
空心菱形的中文术语标准说法是聚合(Aggregation),实心菱形是组合(Composition)。
汽车和发动机是聚合。 杯子和杯柄是组合。
关系为“has a ”。 整体和部分之间的关系。
具有组合关系的两个类,他们的生命周期是一致的。
菱形指向顶端
3.2.3 泛化关系
在面向对象中一般称为继承关系,存在于父类于子类、父接口与子接口之间。
箭头指向父类
3.2.4 依赖关系(实现)
依赖关系体现在某个类的方法使用另一个类的对象作为参数。 之间的关系为“使用”。
依赖关系使用一条带箭头的虚线表示,如A----->B(A依赖于B).
一个好的例子:
图片来自: http://www.360doc.com/content/13/0304/13/10504424_269223190.shtml
3.3 活动图
活动图描述系统的动态行为。
每个活动指的是一个执行步骤或者一个操作。
活动图描述的是系统内部的逻辑执行过程。
图片来自:火龙果软件
图片来自:火龙果软件
3.4 顺序图
顺序图是用来表示用例中的行为顺序。
顺序图包含了四个元素:对象(Object)、声明线(Lifeline)、消息(Message)和激活(Activation)
对象带下划线, 传递消息是实线实体箭头,返回消息是虚线
消息体:实心箭头(同步调用操作) ; 棍型箭头(异步操作)
<1> 点餐
图片来自:火球UML大战
顺序图的循环及分值结构:
loop:循环,在满足循环条件的前提下,不断地重复做某些事情。
alt : alternative的缩写,条件分分支,根据不同的条件选择不同的分支。
opt : optional 的缩写,可选分支,满足一定条件则执行该分支,否则就跳过。
图片来自:火球UML大战
参考资料:
《火球UML大战》
https://blog.csdn.net/lovelion/article/details/7838679
https://www.visual-paradigm.com/guide/uml-unified-modeling-language/what-is-class-diagram/