想学习设计模式,发现UML必不可少。我大自动化就没上过这么专业的专业课T T,先补补UML
UML(统一建模语言)分为三部分事物、关系和图,这三者关系简单表述就是图 = 事物 + 关系
事物:
结构事物
类:具有相同属性/操作的一组集合,用矩形表示,通常矩形中写有类名称以及属性和方法
组件:描述了一些类/接口的包,由一个带小方块的矩形表示,可以将其看做是一个可带有自身属性和方法的库
接口:描述了一个类或组件的方法集。一个类可以实现一个或多个接口,接口用一个带有名称的圆表示。一般依附于实现接口的类或组件中
协作:协作是一组类、接口或其他元素组成的群体。与组件不同,协作不能拥有自身的事物,所以协作更像是一个库。协作一般用一个包含名称的虚线椭圆表示
用例:一组序列动作描述,系统执行这些动作,将对用例的参与者,产生可观察的结果。用实线的椭圆表示,参与者用一个人形的图案表示
节点:表示一个物理元素,它在运行时存在,代表一个可计算的资源,比如一台数据库服务器。节点用一个立方体来表示
主动类:主动类能够启动控制活动,它的对象至少拥有一个进程或线程。主动类的表示也是一个矩形,只是边框使用的是粗线
行为事物
结构事物描述的是模型的静态部分,而行为事物描述的是模型的动态部分。
交互:对象都不是孤立存在的,他们之间通过传递消息进行交互。在图形上,交互的消息通常带箭头的直线表示
状态机:一个状态机是一个行为,它说明了对象在它的生命周期中响应时间所经历的状态序列以及它们对那些事件的响应。状态是指在对象的生命周期中,满足某些条件/执行某些活动或等待某些事件时的一个条件或状况。一个事件的到来,能够触发一个状态的转换
分组事物
分组事物是UML模型中负责分组的部分,可以把它看做一个个盒子,每个盒子里面的对象关系相对复杂,而盒子与盒子之间的关系相对简单
- 包:可以将元素组织成组的机制。结构事物或行为事物甚至其他的分组事物都可以放入包内。在图形上,包用一个再左上角带有一个小矩形的大矩形表示
注释事物
注释事物是UML模型的解释部分,这些注释事物用来描述、说明和标注模型的任何元素。
- 注释:一种主要的注释事物是注解。注解图形表示是右上角有折角的矩形
关系:
关联
描述两个或多个类之间的结构关系。比如企鹅和气候,这两个类就是关联关系,企鹅需要知道,需要了解气候规律,而当一个类“知道”另一个类时,可以用关联。关联用一条实线表示,可以有方向或标记
聚合
强关联关系,它表示的是整体与个体之间的关系,即has-a模型。整体和个体之间是可分离的,他们具有各自的生命周期,比如大雁和大雁群之间就是聚合关系。聚合关系用空心的菱形加实线箭头表示
合成
也是关联关系的特例, 它表示的是部分和整体的关系,即contations-a模型。这种关系比聚合强,整体和部分之间是不可分离的,他们具有相同的生命周期。比如说大雁和大雁翅膀之间就是合成关系。合成关系用实心菱形加实线箭头表示
依赖
依赖是两个事物间的语义关系,其中一个事物(独立事物)发送变化,会影响到另一个事物(依赖事物)。比如人和氧气,人有新陈代谢的行为,而新陈代谢又需要氧气的参与,因此这两个类之间就是依赖关系。一个依赖关系画成一条可能有方向的虚线,偶尔在其上还有一个标记
泛化
泛化是一种特殊/一般关系,是一般事物(父类)和该事物较为特殊的种类(子类)之间的关系。
实现
实现是结构事物间的语义关系,实现关系就是将一种元素(如类)与另一种元素(如接口)连接起来,其中接口只是行为的定义,而行为的具体实现,则由类来给出。比如说麻雀类和飞翔接口,麻雀就可以实现飞翔的接口。两种表示方法,一是空心三角加虚线,二是实线加空心圆圈。一般在两处会用到实现,一是在接口和实现他们的类或组件之间,另一种是在用例和实现他们的协作之间
图:
结构型UML(5种)
- 类图
- 构件图
- 部署图
- 包图
- 对象图
行为型UML(6种)
- 活动图
- 状态机图
- 顺序图
- 用例图
- 通信图
- 时序图
分析业务概念模式:类图
组织类图:包图
分析IT基础架构、软件架构:构件图、部署图
分析业务流程:活动图、状态机图、顺序图,其中大部分都使用活动图。若某流程围绕某个物品进行,且该物品在流程中转换多种状态,那么首选状态机图。若想清晰表达某过程中角色与角色之间的关系,各角色是如何进入过程的首选顺序图(顺序图更加强调角色先后顺序,通信图则更强调角色间相互关系)
系统的表达需求:用例图