UML统一建模语言
UML包含3种构造块:事物、关系、图。
- 事物:模型中代表性成分的抽象
- 关系:把事物结合在一起
- 图:聚集了相关的事物
事物
结构事务:模型的静态部分,包括类、接口、协作、用例、主动类、构件、制品、结点
行为事物:模型的动态部分,包括交互、状态、活动
分组事物:模型的组织部分,包括包
注释事物:模型的解释部分
关系
依赖:A变化会影响B
关联:描述了一组链,链是对象之间的连接。两个类之间可以有多个不同角色标识的关联。
- 聚集:部分和整体生命周期不一致。整体消失了,部分仍然存在
- 组合:部分和整体生命周期一致。整体消失了,部分也要消失
泛化:子元素共享父元素的结构和行为,父类泛化子类,子类继承父类
实现:一个类元指定由另一个类元保证执行的契约
关联的多重度:一个类的实例能够与另一个类的多少个实例相关联
图
- 静态建模:类图、对象图、用例图
- 动态建模:序列图、通信图、状态图、活动图
- 物理建模:构件图、部署图
序列图、通信图被称为交互图。
类图:一组对象、接口、协作和它们之间的关系
用例图:一组用例、参与者已经它们之间的关系
对象图:某一时刻一组对象以及它们之间的关系
序列图(顺序图):以时间顺序组织对象之间的交互活动
类图
描述一组对象、接口、协作和它们之间的关系。
类图包括:
- 类
- 接口
- 协作
- 依赖、泛化和关联关系
类中权限修饰符包括:
+
:public公有的-
:private私有的#
:protected受保护的~
:package包的
类图用于对系统的静态设计视图建模,支持系统的功能需求。以下三种方式使用类图:
- 对系统的词汇建模
- 对简单的协作建模
- 对逻辑数据库模式建模
对象图
展示某一时刻一组对象以及它们之间的关系。
给出系统的静态设计视图和静态进程视图。
描述对象的静态快照。对象是类图中所建立事物的实例。
对象图包括对象和链。
用例图
用例图用于对系统的静态用例视图建模,支持系统的行为。两种使用方式:
- 对系统的语境建模
- 对系统的需求建模
展现一组用例、参与者以及它们之间的关系。
参与者:系统交互的外部实体,包括使用者、与系统交互的外部系统、基础设备。
用例:一个类,代表一类功能而不是使用该功能的某一具体实例。
关联:参与者和参与者之间。
包含、扩展:用例和用例之间。
扩展:一个用例执行的时候,可能会发生一些特殊的情况或可选的情况,这种情况就是这个用例的扩展用例。
泛化:子类继承父类,父类泛化子类。
交互图
对系统的动态方面建模。
有一组对象和它们之间的关系组成,包含它们之间可能传递的消息。
表现为序列图、通信图、交互概览图和计时图。
- 序列图:强调消息时间顺序
- 通信图:强调接收和发送消息的对象的结构组织
一般包含对象、链和消息
序列(顺序)图
强调对象之间信息的时间顺序,用于展示系统中一个用例和多个对象的行为。
是场景的图形化表示,描述以时间顺序组织的对象之间的交互活动。
- 参加交互的对象放在图的上方,水平排列
- 通常,发起交互的对象放在左边,下级对象依次放在右边
1.2.1:create()
:发送消息调用SR的create()
方法,该方法须在SR中实现。
序列图有对象生命线:垂直的虚线,表示对象在一段时间内存在。
序列图有控制焦点:瘦高的矩形,表示一个对象执行一个动作所经历的时间段。
通信(协作)图
强调收发消息的对象的结构组织。展现对象之间的消息流及其顺序。
- 通信图有路径:链的末端附上一个路径构造型。
- 通信图有顺序号:消息前加数字前缀。
序列图和通信图是同构的,可以相互转换。
状态图
展现一个状态机:由状态、转换、事件和活动组成。
关注系统的动态视图。对反应型对象建模。描述一个对象在多个用例之间的行为。
状态:系统的行为模式,规定系统对事件的响应方式。
- 响应包括:做动作、改变状态
状态图定义的状态有:初态、终态、中间状态
- 初态:
·
黑圆点 - 终态:
⊙
黑圆点外加一个圆,可以没有,也可以有多个。 - 状态:圆角四边形,必有状态名,可选状态变量、可选活动。
状态中活动表的语法格式:事件名(参数表)/动作表达式
。
事件:引起系统做动作或转换状态的控制信息:事件(监护信息)/动作
- 事件触发转换(迁移)
- 如果没有事件名,则会自动触发转换。
- 转换包括两个状态:源状态、目标状态。
动作可以在状态内执行,也可以在状态转换时执行。
三种标准事件:entry
、exit
、do
entry
:进入状态,立即执行exit
:退出状态、立即执行do
:内部活动、占有限时间、可以中断
活动图
特殊的状态图:展示系统内从一个活动到另一个活动的流程。
专注于系统的动态视图,强调对象间的控制流程。
包括:活动状态、动作状态、转换、对象。
常用方式:
- 对操作流建模
- 对操作建模
构件图
展现了一组构件之间的组织和依赖。
构件图专注于系统的静态实现视图。
将构件映射为一个或多个类、接口和协作。
部署图
面向对象系统的物理方面建模,展现制品的配置。
对静态部署视图建模,与构件图相关。
展现系统的软件和硬件的关系,在实施阶段使用。