UML 能够帮助咱们作软件的需求分析和软件设计,它可以直观、形象、严谨地描述出业务概念、业务流程、客户需求。UML是一种基于面向对象的可视化的通用建模语言。它提供一组具备明肯定义的图形符号,能够创建清晰的模型便于交流,同时全部的开发人员均可以无歧义地理解这个模型。html
UML是一种富有表达力的语言,能够描述开发所须要的各类视图,并以此为基础组建系统。异步
五种图定义:ide
1.用例图:从用户角度描述系统功能,并指各功能的操做者。oop
2.静态图:包括类图,包图,对象图。ui
类图:描述系统中类的静态结构.net
包图:是包和类组成的,表示包与包之间的关系,包图描述系统的分层结构设计
对象图:是类图的实例3d
3.行为图:描述系统动态模型和对象组成的交换关系。包括状态图和活动图htm
活动图:描述了业务实现用例的工做流程对象
状态图:是描述状态到状态控制流,经常使用于动态特性建模
4.交互图:描述对象之间的交互关系
顺序图:对象之间的动态合做关系,强调对象发送消息的顺序,同时显示对象之间的交互
合做图:描述对象之间的协助关系
5.实现图:
配置图:定义系统中软硬件的物理体系结构
图片来自 火球UML大战
用例图表达的是什么角色(Actor)可以作什么事情(use case).
简单例子:
注意:扩展箭头执行被扩展对象。
图片来自:火球UML大战
类图描述系统中类的静态结构。不只定义系统中的类,类之间的联系如关联、依赖、聚合等,也包括类的内部结构(类的属性和操做),帮助人们简化对系统的理解。
类图中的“类”与面向对象语言中的“类”的概念是对应的,是对现实世界中的事物的抽象。
UML支持的可见性标志:(+Public)(-private) (#protected) (~package)
关联关系(Association)关系式类与类之间最经常使用的一种关系,他是一种结构化关系,用于表示对象与另外一个类对象之间有联系。如班级和学生。用实线链接有关联关系的两个类。
有两种表示法,一种是空心菱形,一种是实心菱形。 实心菱形更强烈,关系更紧密。
空心菱形的中文术语标准说法是聚合(Aggregation),实心菱形是组合(Composition)。
汽车和发动机是聚合。 杯子和杯柄是组合。
关系为“has a ”。 总体和部分之间的关系。
具备组合关系的两个类,他们的生命周期是一致的。
菱形指向顶端
在面向对象中通常称为继承关系,存在于父类于子类、父接口与子接口之间。
箭头指向父类
依赖关系体如今某个类的方法使用另外一个类的对象做为参数。 之间的关系为“使用”。
依赖关系使用一条带箭头的虚线表示,如A----->B(A依赖于B).
一个好的例子:
图片来自: http://www.360doc.com/content/13/0304/13/10504424_269223190.shtml
活动图描述系统的动态行为。
每一个活动指的是一个执行步骤或者一个操做。
活动图描述的是系统内部的逻辑执行过程。
图片来自:火龙果软件
图片来自:火龙果软件
顺序图是用来表示用例中的行为顺序。
顺序图包含了四个元素:对象(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/