UML 是一种常用的软件建模语言,其中类图是最常用的一类图。类图描述了系统中的类、接口、对象和它们之间的关系。除了类图,UML 还包括其他八种类型的图,包括用例图、活动图、时序图、状态图、组件图、部署图、对象图和通信图。
以下是 UML 中九种不同的类图的简单介绍:
-
类图(Class Diagram):类图是 UML 中最常用的图形类型,用于表示系统中的静态结构。它展示了类、接口和它们之间的关系,包括继承、实现、关联和依赖关系。类图还显示了类的属性和方法。
-
用例图(Use Case Diagram):用例图用于描述系统的功能和各个用户之间的交互。它展示了系统的不同角色、用例和它们之间的关系。
-
活动图(Activity Diagram):活动图用于表示工作流或业务流程,展示了一系列活动、操作和决策之间的顺序关系。
-
时序图(Sequence Diagram):时序图用于表示系统中对象之间的动态交互。它展示了对象在一定时间范围内发送消息和执行操作的顺序。
-
状态图(Statechart Diagram):状态图用于描述对象在其生命周期中的各种状态以及如何从一个状态转换到另一个状态。
-
组件图(Component Diagram):组件图用于表示系统中的组件,例如库、模块和子系统。它还显示了这些组件之间的依赖关系。
-
部署图(Deployment Diagram):部署图用于表示系统中的物理架构,包括硬件、软件和网络之间的关系。
-
对象图(Object Diagram):对象图用于表示系统中的对象及其实例,展示了它们之间的关系和属性。它类似于类图,但只表示对象的实例,而不是类本身。
-
通信图(Communication Diagram):通信图用于表示对象之间的交互,展示了一系列消息的传递和接收。它类似于时序图,但更加简化和易于理解。
以下是详细介绍:
1类图:
- 用于描述系统中的类(对象)本身的组成和类(对象)之间的各种静态关系。
- 类之间的关系:
依赖、泛化(继承)、实现、关联、聚合与组合
- 对于
继承(泛化)、实现(实现)
这两种关系比较简单,它们体现的是一种类与类、或者类与接口之间的纵向关系
。 其他的四种关系则体现的是类与类、或者类与接口之间的引用/横向关系
。这四种关系所表现的强弱程度来看,从强到弱依次为:组合>聚合>关联>依赖
。
参与者
与系统交互的用户或其他软硬件系统,用小人形表示。
用例
系统中执行的一系列动作,用椭圆表示。
关系
参与者与用例、参与者之间、用例之间的联系。
边界
一组用例描述的系统或子系统,用矩形框表示。
例题:酒店订房系统
某酒店订房系统描述如下:
- 顾客可以选择在线预订,也可以直接去酒店通过前台服务员预订;
- 前台服务员可以利用系统直接在前台预订房间;
- 不管采用哪种预订方式,都需要在预订时支付相应订金;
- 前台预订首选通过现金形式进行订金支付,若现金不足,则只能通过信用卡形式进行订金支付,但是网上预订只能通过信用卡进行支付;
- 利用信用卡进行支付时需要和信用卡系统进行通信;
- 客房部经理可以随时查看客房预订情况和每日收款情况。
什么是活动图(Activity Diagram)
活动图是UML用于对系统的动态行为建模的另一种常用工具,它描述活动的顺序,展现从一个活动到另一个活动的控制流,活动图在本质上是一种流程图;活动图着重表现从一个活动到另一个活动的控制流
活动图元素
动作状态(Action State)
动作状态是指原子的,不可中断的动作,并在此动作完成后通过完成转换转向另一个状态
在UML中的动作状态图用平滑的圆角矩形表示
动作状态的特点
动作状态是原子的,无法分解为更小的部分
动作状态是不可中断的,一旦开始运行就不能中断,一直运行到结束
动作状态是瞬时的行为,它所占用的处理时间极短,有时甚至可以忽略
动作状态可以有入转换,入转换可以是动作流,也可以是对象流;动作 状态至少有一条出转换,这条转换以内部的完成为起点,与外部事件无关
动作状态与状态图中的状态不同,它不能有入口动作和出口动作,更不能有内部转移
活动状态(Activity State)
活动状态用于表达状态机中的非原子的运行
在UML中活动状态和动作状态的图标相同,但活动状态可以在图标中给出入口动作和出口动作等信息
活动状态的特点
活动状态可以分解成其他子活动或者动作状态
活动状态的内部活动可以用另一个活动图来表示
和动作状态不同,活动状态可以有入口动作和出口动作,也可以有内部转移
动作状态是活动状态的一个特例,如果某个活动状态只包括一个动作,那么它就是一个动作状态
开始点
结束点
整个活动的结束
子流程的结束
子活动状态
选课活动图
4.时序图
时序图的元素
我们在画时序图时会涉及7种元素:角色(Actor)、对象(Object)、生命线(LifeLine)、控制焦点(Activation)、消息(Message)、自关联消息、组合片段。其中前6种是比较常用和重要的元素,剩余的一种组合片段元素不是很常用,但是比较复杂。我们先介绍前6种元素,在单独介绍组合片段元素。
角色(Actor)
系统角色,可以是人或者其他系统,子系统。以一个小人图标表示。
对象(Object)
对象位于时序图的顶部,以一个矩形表示。对象的命名方式一般有三种:
1 对象名和类名。例如:华为手机:手机、loginServiceObject:LoginService。
2 只显示类名,不显示对象,即为一个匿名类。例如::手机、:LoginSservice。
3 只显示对象名,不显示类名。例如:华为手机:、loginServiceObject:。
生命线(LifeLine)
时序图中每个对象和底部中心都有一条垂直的虚线,这就是对象的生命线(对象的时间线)。以一条垂直的虚线表。
控制焦点(Activation)
控制焦点代表时序图中在对象时间线上某段时期执行的操作。以一个很窄的矩形表示。
消息(Message)
表现代表对象之间发送的信息。消息分为三种类型。
同步消息(Synchronous Message)
消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息的接收者放弃或者返回控制。用来表示同步的意义。以一条实线+实心箭头表示。
异步消息(Asynchronous Message)
消息发送者通过消息把信号传递给消息的接收者,然后继续自己的活动,不等待接受者返回消息或者控制。异步消息的接收者和发送者是并发工作的。以一条实线+大于号表示。
返回消息(Return Message)
返回消息表示从过程调用返回。以小于号+虚线表示。
自关联消息
表示方法的自身调用或者一个对象内的一个方法调用另外一个方法。以一个半闭合的长方形+下方实心剪头表示。
时序图解释:
1,用户输入手机密码
2,打开手机
3,打开微信扫一扫
4,返回微信扫一扫界面
5.1 扫描商家收款码
5.2 商家生成收款二维码
5.3 返回收款二维码
5.4 识别商家收款码
6,提示用户输入微信支付密码
7.1 输入微信支付密码
7.2 微信验证用户输入密码正确
7.3 向商家汇款
7.4 汇款成功
8,提示用户支付成功
常用组合片段举例
抉择(Alt)
选项(Opt)
循环(Loop)
并行(Par)
5.状态图
UML状态图的组成
UML状态图主要由五种元素组成,分别是状态、转换、事件、动作和活动。
- 状态:表示对象的生命周期中的一种条件/情况,有初态和终态之分
- 转换:表示两种状态间的一种关系
- 事件:表示在某一时间与空间下所发生的有意义的事情
- 动作:表示一个可执行的原子操作,是UML能够表达的最小计算单元
- 活动:表示状态机中的非原子执行,一般由一系列动作组成
UML状态图实例
6.组件图
组件(Component)->构件
- 组件是定义了良好接口的物理实现单元,是系统中可替换的物理部件。
- 组件代表系统的一个物理实现块,代表逻辑模型元素如类、接口、协同等的物理打包。
- 构件通过它的提供接口和请求接口展现行为。
- 由于在UML2.0中,构件是一种类,因此构件具有属性、操作和可见性。这些概念的含义与在类图中定义的是一样的,只是在这里把这些概念应用在构件上。
组件的命名:
组件的名称有两种:简单名和路径名。并依据目标操作系统可以添加相应的扩展名,例如java
和dll
。
表示方式:组件用一个左侧带有突出两个小矩形的矩形来表示。
UML2.0中表示方式:构件用加构造型《component》的矩形框来表示,左上角添加以前的构件符号,如果没有构件细节可在中央直接写上名字。
(构造型和左上角的图标可以二选一)
UML2.0把构件分为基本构件和包装构件
- 基本构件
注重于把构件定义为在系统中可执行的元素。 - 包装构件
扩展了基本构件的概念,它注重于把构件定义为一组相关的元素,这组元素为开发过程的一部分。也即, 包装构件定义了构件的命名空间方面。在构件的命名空间中,可以包括类、接口、构件、包、用况、依赖(如映射)和制品。按照这种扩展,构件也具有如下的含义:可以用构件来装配大粒度的构件,方法为把所复用的构件作为大粒度构件的成分,并把它们的请求和提供接口连接在一起(简单理解:组件包含组件,组拼大组件)。
组件的种类
- 配置组件(Deployment Component):运行系统需要配置的组件,是形成可执行文件的基础—操作系统、JAVA虚拟机、DBMS;
- 工作产品组件(Work Product Component):包括模型、源代码和用于创建配置组件的数据文件,它们是配置组件的来源—UML图、java类和数据库表;
- 执行组件(Execution Component):在运行时创建的组件,是最终可运行的系统产生的允许结果—.net组件
7.部署图
部署图的组成
1)节点(Node)& 节点实例(Node Instance)
节点是存在与运行时的代表计算机资源的物理元素,可以是硬件也可以是运行其上的软件系统,比如64主机、Windows server 2008操作系统、防火墙等。
一般用立方体表示,如下图:
注:处理器是带阴影的立方体,设备是不带阴影的立方体
区别于节点,节点实例的名称会有下划线,并且节点类型前会有冒号(注:冒号前面可以有示例名称也可以没有示例名称),如下图:
2)构件(Artifact)
构件是软件开发过程中的产物,包括过程模型(比如用例图、设计图等等)、源代码、可执行程序、设计文档、测试报告、需求原型、用户手册等等。
构件表示如下,带有关键字«artifact»和文档图标:
3)连接(Association)
节点之间的连线表示系统之间进行交互的通信路径,这个通信路径称为连接。如下图所示,连接中可以标注上网络协议:
部署图实例
8.对象图
对象图的组成元素
对象图中的建模元素主要有对象和链。
- 对象
对象是类的实例,是一个封装了状态和行为的实体。对象通过其类型、名称和状态区别于其他对象而存在。
对象名:在矩形框的顶端显示。
类型:具体的类目
状态:由对象的所有属性以及运行时的当前值组成。
表示法:在对象名后跟一个冒号加上类型名,并且使用下划线与类进行区分。
- 链
链是类之间的关联关系的实例,是两个或多个对象之间的独立连接。因此,链在对象图中的作用类似于关联关系在类图中的作用。
之前专栏对UML类图的4种关联关系进行过详细拆解,这里同样不再赘述,有需要的可以移步查看▼
在对象图中,链同样使用一根实线段来表示。
链主要用来导航。链一端的一个对象可以得到另一位置上的一个或一组对象,然后向其发送消息。
03 对象图实例
9.通信图
通信图元素
通信图由三部分组成:对象(Object),链(Link) 和消息(Message)。
对象
对象,即类的实例,是为了共同完成某个目标的群体,通信图中主要描述在完成目标过程中,对象所参与的那部分活动。通信图中的对象与顺序图中的对象一样,使用人形图案或矩形来表示,如下图,其中a表示实例名,A表示类名。
链(对象关联)
在通信图中,链由一个或多个相连的线(直线或弧线)形成,链的两端是消息发送者和消息接收者,并且消息发送者与消息接收者可以是一样的。
对象之间的箭头方向表明对象之间交换的信息流,一个对象发出消息,箭头指向对象接收消息。链用于实现消息的传输。
与类的关系不同,通信图中的链是临时关联,只在本次交互中存在,而类的关联是永久的。
消息
通信图是通过一系列的消息来描述系统的动态行为。消息可以分为四种类型:
- 简单消息:指示消息类型未知或不重要的消息,可默认都使用简单消息替代。
- 同步消息:表示前一个消息处理完成后才能处理下一个消息。
- 异步消息:表示处理流不需要等到消息完成或传递反馈后才继续执行。
- 反身消息:对象自身内部的消息处理。
通信图与顺序图差异
相同点
- 具备相似的责任主体
- 都是通过消息驱动
- 具有顺序性
不同点
- 通信图中,对象无法创建和撤销,位置没有限制。
- 协作图展示对象间的关系使得更适用于获得对象结构的理解,顺序图则更适合获取调用过程的理解。
- 顺序图强调的是时间顺序,通信图强调的是空间的顺序。
顺序图和通信图是可以相互转换的。
实例
数据库登录
数据库登录顺序图
数据库登录通信图
标签:动作,对象,构件,消息,组件,UML From: https://www.cnblogs.com/renliqin/p/17881744.html