2023-12-07:UML中的各种图形与关系

发布时间 2023-12-07 18:19:14作者: AisaMaral

1.类图

类图描述系统静态结构。

在系统的逻辑视图中,类图用于表示类和它们之间的关系。我们利用类图来说明实体共同的角色和责任,这些实体提供了系统的行为。

  类关系:类的基本联系包括关联泛化聚合组合

  关联:用不带箭头的实线表示

  关联连接了两个类,体现了一种语义关系。关联通常用名词词组来标注,如下图中的Analyzes,以说明关系的实质。类可能与它自己有关联(称为自关联),如PlanAnalyst类的实例之间的协作。注意,这里同时使用了关联端名称和关联名称,目的是提供清晰性。

  关联可以进一步通过多重性来修饰(没有也可以)。多重性的语法如下:
  精确到1个。
  数目不限(0个或多个)。
  0..*:0个或多个。
  1..*:1个多多个。
  0..1:0个或1个。
  3..7:指定范围(3~7个,包含3和7)
  多重性应用于关联的目标端,说明源类的每个实例与目标类实例的连接个数。除非显式说明,否则关系的多重性就是未指定的。

  泛化:用带有封闭箭头的实线表示。箭头指向超类,关联的另一端是子类。

  子类继承超类的结构和行为。根据这些规则,一个类可以有一个(单继承)或多个(多继承)超类,超类间的名字冲突也可以根据所选语言的规则来处理。

  泛化关系不能有多重性指定。

   聚合:聚合用带有一个空心菱形的实线表示。菱形所在的一端是聚合体(整体),另一端的类代表它的实例构成了聚合对象的部分。

  聚合表明一种整体-部分的层次结构。
  自聚合和循环聚合关系是可能的。这种整体-部分的层次关系并不意味着物理上的包容:一个专业协会有一些成员,但不表示协会拥有它的成员。就如汽车和轮胎,当汽车销毁的时候,并不意味着轮胎也销毁了。即两个对象的生命周期是相互独立的。
  聚合关系末端的*(0个或多个)多重性进一步突出了这不是物理包容关系。

  组合:组合用带有一个实心菱形的实线表示。菱形所在的一端是整体,另外一端是部分。

  组合则是关联更强的聚合。部分与整体共存亡,是物理包容。
  整体所在的一端的多重性是1,因为根据定义,部分在整体之外就没有任何意义,整体拥有部分,部分的生命周期与整体式一样的。

2 用例图

  由参与者(Actor)、用例(Use Case)以及它们之间的关系构成的用于描述系统功能的动态视图称为用例图。要在用例图上显示某个用例,可绘制一个椭圆,然后将用例的名称放在椭圆的中心或椭圆下面的中间位置。
  要在用例图上绘制一个参与者(表示一个系统用户),可绘制一个人形符号。参与者和用例之间的关系使用带箭头或者不带箭头的线段来描述,箭头表示在这一关系中哪一方是对话的主动发起者,箭头所指方是对话的被动接受者。

注释

  用例图是需求分析中的产物,主要作用是描述参与者和用例之间的关系,帮助开发人员可视化的了解系统的功能。借助于用例图,系统用户、系统分析人员、系统设计人员、领域专家能够以可视化的方式对问题进行探讨,减少了大量交流上的障碍,便于对问题达成共识。
  用例图可视化地表达了系统的需求,具有直观、规范等优点,克服了纯文字性说明的不足。
  用例方法是完全从外部来定义系统功能,它把需求和设计完全的分离开来。我们不用关心系统内部是如何完成各种功能的,系统对于我们来说就是一个黑箱子。

  用例之间的关系
  1. 包含

  包含关系指用例可以简单地包含其他用例具有的行为,并把它所包含的用例行为作为自身行为的一部分。在UML中,包含关系是通过带箭头的虚线段加<>字样来表示,箭头由基础用例(Base)指向被包含用例(Inclusion)。

 

  2. 扩展

  在一定条件下,把新的行为加入到已有的用例中,获得的新用例叫做扩展用例(Extension),原有的用例叫做基础用例(Base),从扩展用例到基础用例的关系就是扩展关系。
  一个基础用例可以拥有一个或者多个扩展用例,这些扩展用例可以一起使用。

 

  3.泛化

  用例的泛化指的是一个父用例可以被特化形成多个子用例,而父用例和子用例之间的关系就是泛化关系。
  在用例的泛化关系中,子用例继承了父用例所有的结构、行为和关系,子用例是父用例的一种特殊形式。
  子用例还可以添加、覆盖、改变继承的行为。在UML中,用例的泛化关系通过一个三角箭头从子用例指向父用例来表示。

3 时序图

 时序图,又名序列图、循序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。

时序图时涉及7种元素:角色(Actor)、对象(Object)、生命线(LifeLine)、控制焦点(Activation)、消息(Message)、自关联消息、组合片段。其中前6种是比较常用和重要的元素,剩余的一种组合片段元素不是很常用,但是比较复杂。

角色(Actor)
  系统角色,可以是人或者其他系统,子系统。以一个小人图标表示。
  对象(Object)
  对象位于时序图的顶部,以一个矩形表示。对象的命名方式一般有三种:
  1 对象名和类名。例如:华为手机:手机、loginServiceObject:LoginService。
  2 只显示类名,不显示对象,即为一个匿名类。例如::手机、:LoginSservice。
  3 只显示对象名,不显示类名。例如:华为手机:、loginServiceObject:。
  生命线(LifeLine)
  时序图中每个对象和底部中心都有一条垂直的虚线,这就是对象的生命线(对象的时间线)。以一条垂直的虚线表。
  控制焦点(Activation)
  控制焦点代表时序图中在对象时间线上某段时期执行的操作。以一个很窄的矩形表示。
  消息(Message)
  表现代表对象之间发送的信息。消息分为三种类型。
  同步消息(Synchronous Message)
  消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息的接收者放弃或者返回控制。用来表示同步的意义。以一条实线+实心箭头表示。
  异步消息(Asynchronous Message)
  消息发送者通过消息把信号传递给消息的接收者,然后继续自己的活动,不等待接受者返回消息或者控制。异步消息的接  

  收者和发送者是并发工作的。以一条实线+大于号表示。
  返回消息(Return Message)
  返回消息表示从过程调用返回。以小于号+虚线表示。
  自关联消息
  表示方法的自身调用或者一个对象内的一个方法调用另外一个方法。以一个半闭合的长方形+下方实心剪头表示。

  常用组合片段
  抉择(Alt)
抉择在任何场合下只发生一个序列。 可以在每个片段中设置一个临界来指示该片段可以运行的条件。else 的临界指示其他任何临界都不为 True 时应运行的片段。如果所有临界都为 False 并且没有 else,则不执行任何片段。Alt片段组合可以理解为if..else if...else条件语句。

  选项(Opt)
  包含一个可能发生或不发生的序列。Opt相当于if..语句。

 

  循环(Loop)
  片段重复一定次数,可以在临界中指示片段重复的条件。Loop相当于for语句。

 

 

  并行(Par)
  并行处理,片段中的事件可以并行交错。Par相当于多线程。

4 部署图

  部署图(配置图):是用来显示系统中软件和硬件的物理架构。从部署图中,您可以了解到软件和硬件组件之间的物理关系以及处理节点的组件分布情况。使用部署图可以显示运行时系统的结构,同时还传达构成应用程序的硬件和软件元素的配置和部署方式。

  部署图用于描述部署软件组件的硬件组件。构件图和部署图密切相关。
  (1)可视化系统的硬件拓扑
  (2)描述用于部署软件的硬件组件
  (3)描述运行时处理节

   部署图由节点和关系两部分组成。有的部署图中也包含构件,但是构件必须在相对应的节点上,不是孤立的存在的。

   

  节点:计算资源的通用名称。包括处理器设备。两者的区别:前者是可以执行程序的硬件结构,如计算机和服务器等;后者是通过接口对外进行的服务,如打印机。
  标记:每个节点应该给出应有的标记说明,如操作系统,供应商等。
  表示:立体矩形框,处理器是带阴影的立方体,设备室不带阴影的立方体。

  关系:依赖和关联。
  同样在画关系时应该写明节点间联系的名称。如:服务器和客户端通过局域网连接。

5 活动图

  活动图是UML用于对系统的动态行为建模的另一种常用工具,它描述活动的顺序,展现从一个活动到另一个活动的控制流,活动图在本质上是一种流程图;活动图着重表现从一个活动到另一个活动的控制流

  动作状态(Action State)

  动作状态是指原子的,不可中断的动作,并在此动作完成后通过完成转换转向另一个状态,在UML中的动作状态图用平滑的圆角矩形表示

 

  动作状态是原子的,无法分解为更小的部分
  动作状态是不可中断的,一旦开始运行就不能中断,一直运行到结束
  动作状态是瞬时的行为,它所占用的处理时间极短,有时甚至可以忽略
  动作状态可以有入转换,入转换可以是动作流,也可以是对象流;动作 状态至少有一条出转换,这条转换以内部的完成为起点,与外部事件无关
  动作状态与状态图中的状态不同,它不能有入口动作和出口动作,更不能有内部转移

  活动状态(Activity State)
  活动状态用于表达状态机中的非原子的运行
  在UML中活动状态和动作状态的图标相同,但活动状态可以在图标中给出入口动作和出口动作等信息

  活动状态可以分解成其他子活动或者动作状态
  活动状态的内部活动可以用另一个活动图来表示
  和动作状态不同,活动状态可以有入口动作和出口动作,也可以有内部转移
  动作状态是活动状态的一个特例,如果某个活动状态只包括一个动作,那么它就是一个动作状态

  开始点

 

  结束点

  整个活动的结束

  子流程的结束

  子活动状态
  选课活动图

  分支与合并
  分支:一入多出
  合并:多入一出

  分叉与汇合
  分叉用将控制流分为两个或者多个并发运行的分支
  汇合用于同步这些并发分支,以达到共同完成一项事务的目的

  泳道

  对象流

  可以把对象放置在活动图中并用一个依赖将其连接到进行创建、修改或撤销等动作状态或者活动状态上,对象的这种使用方法就构成了对象流
  对象流是动作状态或者活动状态与对象之间的依赖关系,表示动作使用对象或动作对对象的影响
  可以理解为数据流

 6 状态图

  个状态图表示一个状态机,主要用于表现从一个状态到另一个状态的控制流。它不仅可以展现一个对象拥有的状态,还可以说明事件(如消息的接收、错误、条件变更等)如何随着时间的推移来影响这些状态。

  状态图用于对系统的动态方面建模,动态方面指出现在系统结构中任一对象按事件排序的行为,其中这些对象可以是类、接口、构件和节点。

   UML状态图主要由五种元素组成,分别是状态转换事件动作活动

  状态:状态是状态机的重要组成部分,她描述了状态机所在对象动态行为的执行所产生的结果(结果:一般指能影响此对象对后续事件响应的结果)。UML图中使用一个圆角矩形表示一个状态。

  转换:转换是状态间的关联。它们用于对一个实体的不同状态间的关系建模。当某个实体在第一个状态中执行一定的动作,并在某个特定事情发生并且某个特定的条件满足时进入下一个状态。转换由5个部分组成,分别为源状态、目标状态、触发事件、监护条件和动作。

 

  事件:表示在某一时间与空间下所发生的有意义的事情

  动作:表示一个可执行的原子操作,是UML能够表达的最小计算单元

  活动:表示状态机中的非原子执行,一般由一系列动作组成