uml图语法知识点
class <类名>class CarCarspeeddrivevoidCarVehicleSportsCarCarEngineCarCarWheelDriverCarCarmyCar<<User>>LoginIdleRunningon startIdleRunningCalculatePrintBackorderUtilitiesMathUtilsUtilitiesMathUtilsUtilit
·
-
UML 概述
- 定义:统一建模语言(UML)是一种用于对软件密集型系统进行可视化建模的语言。它提供了一种标准的方式来描述软件系统的架构、行为、数据等多个方面,有助于软件开发人员、架构师、分析师等不同角色之间的沟通。
- 用途广泛:不仅可以用于软件设计,还可以用于业务流程建模、系统分析、数据库设计等多个领域。
-
UML 图的分类及基本语法
-
类图(Class Diagram)
- 类的表示
- 一般形式为
class <类名>,例如class Car就定义了一个名为Car的类。在类的内部,可以定义属性和方法。属性的表示形式为<可见性> <属性名> : <类型>,可见性包括+(公共)、-(私有)、#(受保护)。例如- speed : int表示一个私有属性speed,类型是整数。方法的表示形式为<可见性> <方法名>(<参数列表>) : <返回类型>,如+ drive() : void表示一个公共方法drive,没有参数,返回类型为void。
- 一般形式为
- 类之间的关系
- 实现(Realization):用于接口和实现类之间的关系,用空心三角形箭头和虚线表示。例如,如果
Car实现了Vehicle接口,可以表示为Car..> Vehicle。 - 继承(Generalization):用空心三角形箭头表示。例如,
SportsCar继承自Car,可表示为SportsCar --> Car。 - 组合(Composition):用实心菱形箭头表示。与聚合不同,组合关系中的部分对象不能独立于整体对象存在。例如,
Engine和Car之间是组合关系,因为发动机是汽车的组成部分,没有汽车发动机就没有意义,可表示为Car *-- Engine。 - 聚合(Aggregation):是一种特殊的关联,用空心菱形箭头表示。例如,
Car和Wheel之间是聚合关系,因为车轮是汽车的一部分,但车轮可以独立于汽车存在,可表示为Car o-- Wheel。 - 关联(Association):用一条直线表示两个类之间的关联关系。如果是双向关联,可以在直线两端标注角色名。例如,
Driver和Car之间存在关联关系,可以表示为Driver - Car。如果要表示多重性,如一个司机可以驾驶多辆车,一辆车可以被多个司机驾驶,可以写成Driver "1" - "n" Car。
- 实现(Realization):用于接口和实现类之间的关系,用空心三角形箭头和虚线表示。例如,如果
- 类的表示
-
对象图(Object Diagram)
- 类似于类图,但它是类图的实例化。对象图展示的是在某个特定时刻,系统中对象的状态以及它们之间的关系。对象的表示形式为
<对象名> : <类名>,例如myCar : Car表示一个Car类的对象myCar。对象之间的关系与类图中对应的关系表示方法类似。
- 类似于类图,但它是类图的实例化。对象图展示的是在某个特定时刻,系统中对象的状态以及它们之间的关系。对象的表示形式为
-
用例图(Use - Case Diagram)
- 参与者(Actor):用一个小人图形表示,代表与系统交互的外部实体,如用户、管理员等。参与者的名称写在小人下方,例如
<<User>>。 - 用例(Use - Case):用椭圆形表示,代表系统提供的功能。用例的名称写在椭圆内部,如
Login。 - 关系:
- 关联(Association):参与者和用例之间用直线连接,表示参与者可以执行该用例,如用户和登录用例之间的关联。
- 包含(Include):用带箭头的虚线表示,箭头从基本用例指向被包含的用例。例如,
Process Order用例包含Calculate Total用例,表示在处理订单过程中需要计算总价。 - 扩展(Extend):也是用带箭头的虚线表示,但箭头方向相反,从扩展用例指向基本用例。例如,
Pay with Credit Card扩展Make Payment用例,表示在付款用例基础上可以用信用卡付款的扩展情况。
- 参与者(Actor):用一个小人图形表示,代表与系统交互的外部实体,如用户、管理员等。参与者的名称写在小人下方,例如
-
序列图(Sequence Diagram)
- 对象生命线(Object Lifeline):用一条垂直的虚线表示一个对象在一段时间内的存在。对象名称写在虚线顶端。
- 消息(Message):用带箭头的直线表示对象之间传递的消息。箭头方向表示消息的流向。消息可以是同步的(用实心箭头表示)或异步的(用开放箭头表示)。例如,
customer -> server : request表示顾客对象向服务器对象发送一个请求消息。 - 激活框(Activation Box):用一个矩形框表示对象执行某个操作的时间段,显示在对象生命线的垂直虚线上。例如,当服务器对象处理顾客的请求时,在服务器对象的生命线上会出现一个激活框,表示处理请求的时间范围。
-
协作图(Collaboration Diagram)
- 也称为通信图,主要关注对象之间的协作关系和消息传递顺序。对象用矩形表示,对象之间的关系和消息传递与序列图类似,但消息编号用于表示消息的顺序。例如,
1: customer.request(server)表示顾客向服务器发送请求是第一个消息。
- 也称为通信图,主要关注对象之间的协作关系和消息传递顺序。对象用矩形表示,对象之间的关系和消息传递与序列图类似,但消息编号用于表示消息的顺序。例如,
-
状态图(State Diagram)
- 状态(State):用圆角矩形表示,内部写上状态名称,如
Idle、Running。 - 转换(Transition):用带箭头的直线表示从一个状态到另一个状态的转换。箭头线上可以标注触发转换的事件和条件。例如,
Idle -[on start]-> Running表示在on start事件发生时,从Idle状态转换到Running状态。
- 状态(State):用圆角矩形表示,内部写上状态名称,如
-
活动图(Activity Diagram)
- 活动(Activity):用圆角矩形表示,代表一个操作或任务,如
Calculate、Print。 - 控制流(Control Flow):用带箭头的直线表示活动之间的顺序关系,如
Start -> Calculate -> Print -> End表示从开始活动,经过计算、打印活动,最后到结束活动的流程。 - 决策点(Decision Point):用菱形表示,根据不同的条件选择不同的活动分支。例如,在一个订单处理活动图中,在
Check Stock活动后,通过决策点判断库存是否充足,从而决定是Fulfill Order还是Backorder活动。 - 合并点(Merge Point):也用菱形表示,用于将多个分支合并为一个流程。例如,在并行执行多个活动后,通过合并点将流程合并继续后续活动。
- 活动(Activity):用圆角矩形表示,代表一个操作或任务,如
-
-
高级语法和概念
-
包(Package)在类图中的表示
- 在大型系统设计中,包用于对类进行分组管理。在 UML 类图中,包用一个带有标签的文件夹形状表示,标签为包名。例如,
<<package>> Utilities表示一个名为Utilities的包。类可以放在包中,类与包之间的关系可以通过包的嵌套或者依赖关系来体现。如果类MathUtils属于Utilities包,在表示上可以将MathUtils类的定义放在Utilities包的图形内部,并且在引用其他包中的类时,可以表示出包之间的依赖关系,如Utilities包中的类依赖于DataAccess包中的类,可以用带箭头的虚线从Utilities包指向DataAccess包来表示这种依赖关系。
- 在大型系统设计中,包用于对类进行分组管理。在 UML 类图中,包用一个带有标签的文件夹形状表示,标签为包名。例如,
-
约束(Constraint)的表示
- 约束用于对 UML 元素添加额外的规则或限制。在类图中,约束通常用花括号
{}括起来,放在相关元素旁边。例如,在一个表示订单和产品的类图中,对于Order类和Product类之间的关联关系,可以添加约束{ordered}表示订单中的产品是有顺序的;在状态图中,对于状态转换可以添加时间约束,如{after 5s}表示在某个状态转换要在 5 秒之后才会发生。
- 约束用于对 UML 元素添加额外的规则或限制。在类图中,约束通常用花括号
-
stereotypes(版型)的应用
- stereotypes 是一种对 UML 元素进行扩展和分类的机制。它们通常用双尖括号
<< >>表示,放在元素名称之前。例如,在类图中可以定义<<interface>> Shape表示Shape是一个接口;在用例图中可以有<<system>> Order Processing System来明确表示一个系统用例。不同的版型可以有不同的图标表示方式,一些 UML 工具会根据版型来改变元素的显示风格,以更好地体现其特殊性质。
- stereotypes 是一种对 UML 元素进行扩展和分类的机制。它们通常用双尖括号
-
交互概览图(Interaction Overview Diagram)
- 它是一种结合了活动图和序列图特点的 UML 图。交互概览图可以用于描述系统的高层交互流程,其中包含了控制流和交互片段。控制流用活动图的方式表示,如用圆角矩形表示活动,用菱形表示决策点等。交互片段则类似于序列图,展示了对象之间的消息传递细节。例如,在一个软件系统的启动过程描述中,用交互概览图可以先通过活动图的形式展示从系统加载到各个模块初始化的控制流程,然后在某些关键的模块交互部分通过交互片段展示具体的对象之间的消息传递,如配置模块和数据库模块之间如何交换信息来完成系统配置的加载。
-
时间图(Timing Diagram)
- 主要用于描述对象状态随时间的变化以及对象之间在时间维度上的交互。在时间图中,时间轴是水平方向的,对象状态的变化用垂直的线条和状态区间来表示。例如,对于一个简单的交通信号灯系统,可以用时间图来描述红灯、绿灯、黄灯状态随时间的交替变化,并且可以展示不同信号灯之间的时间协调关系,如绿灯亮起后多久黄灯亮起,黄灯亮起后多久红灯亮起等。同时,时间图也可以表示对象之间的消息发送时间,如一个传感器对象在某个时间点发送信号给控制器对象,这些时间关系都可以清晰地在时间图中展示。
-
更多推荐


所有评论(0)