UML基础入门

一、UML语言概述

1997年,OMG组织(Object Management Group,对象管理组织)发布了统一建模语言(Unified Modeling Language,UML)。

UML的目标之一就是为开发团队提供标准的通用的面向对象设计语言。

UML提供了一套IT专业人员期待多年的统一的标准建模符号。通过使用UML,这些人员能够阅读和交流系统架构图和设计规划图,就像建筑工人多年来使用建筑设计图一样。

二、UML中的各种图例

2.1 用例图(Use Case Diagram)

从用户角度描述系统功能。用例图的主要目的是帮助开发团队以一种可视化的方式来理解系统的功能需求。

用例图中包含以下内容:

  • 角色:角色是系统的边界,即使用系统特定功能的用户,用人形符号表示。
  • 用例:表示系统的某个功能,用椭圆符号表示。
  • 角色和用例的关系:角色和用例之间是使用关系,用带实线的箭头符号来表示。
  • 用例之间的关系:用例之间可存在包含关系和扩展关系。包含关系是指一个用例包含另一个用例的功能,扩展关系是指一个用例继承了另一个用例的功能。
用例图
2.2 类图(Class Diagram)

描述对象模型中类以及类之间的关系。类图显示了系统的静态结构,它包括以下内容:

  • 类:类是类图中的主要元素,用矩形表示,矩形的上层表示类名,中层表示属性,下层表示行为(方法)。抽象类的类名用斜体字表示,抽象方法也用斜体字表示。

  • 类之间的关系:包括关联、依赖、聚集、组合、泛化、实现这六种关系。

类图
2.2.1 类之间的关系

1、关联:类A与类B的实例之间存在特定的对应关系。belong a
2、依赖:类A访问类B提供的服务。use a
3、聚集:类A为整体类,类B为局部类,类A的对象由类B的对象组合而成。has a
4、组合:整体与部分的关系。 Contain a
5、泛化:类A继承类B。is kind of a
6、实现:类A实现了B接口。do a

2.2.2 关联关系(Association)

关联指的是类之间的特定对应关系,在UML中用带实线的箭头表示。按照类之间的数量对比,关联可分为以下三种:一对一关联、一对多关联、多对多关联。

举例:公司和员工;银行和客户。

2.2.3 依赖关系(Dependency)

依赖指的是类之间的调用关系,在UML中用带虚线的箭头表示。如果类A访问类B的属性或方法,或者类A负责实例化类B,那么可以说类A依赖类B。

举例:人依赖食物;电视机依赖电;理发师依赖剪刀和吹风机;鱼依赖水。

2.2.4 聚集关系(Aggregation)

聚集指的是整体与部分之间的关系,在UML中用带实线的菱形箭头表示。例如台灯和灯泡之间就是聚集关系。

举例:汽车的轮胎系统由四个轮胎聚合而成。

2.2.5 组合关系

整体与部分的关系,Contain a

举例:汽车是由发动机、离合器、车身、轮胎等组合而成。

2.2.6 泛化关系(Generalization)

泛化指的是类之间的继承关系。

2.2.7 实现关系(Realization)

实现指的是类与接口之间的关系。

在UML中用带虚线的三角形箭头表示,这里的接口指的是接口类型,接口名字用斜体字表示,接口中的方法都是抽象方法,也采用斜体字表示。

2.2.8 类图示例
类图示例

关系强弱顺序:实现≈泛化>组合>聚合>关联>依赖

2.3 状态转换图(State Transition Diagram)

描述对象所有可能的状态以及导致状态转换的转移条件。只需要为个别具有复杂的状态转换过程的类提供状态转换图。

状态图表示对象在它的生命周期中所处的不同状态,以及状态之间的转换过程。状态图包括以下基本元素:

  • 初始点:用实心圆来表示。
  • 状态之间的转换:用箭头来表示。
  • 状态:用圆角矩形来表示。
  • 终止点:用内部包含实心圆的圆来表示。
状态图
2.4 时序图(Sequence Diagram)

描述对象间的动态协作关系,强调对象之间消息发送的时间顺序,同时显示对象之间的交互。

时序图显示用例(或者是用例的一部分)的详细流程。时序图有两个维度:

  • 水平维度:显示对象之间发送消息的过程。
  • 垂直维度:显示发送消息的时间顺序。
时序图
时序图2
2.5 协作图(Cooperation Diagram)

协作图能直观地显示对象间的协作关系。时序图和协作图合称为交互图。协作图与时序图包含的信息相同,UML工具(如Rational Rose)能够根据时序图自动生成协作图,反之亦然。

协作图与时序图的区别:

  • 时序图演示的是对象与角色随着时间的变化进行的交互,而协作图则不参照时间,直接显示对象与角色之间的交互过程。

  • 协作图能更加直观地显示对象之间的协作过程,设计师可以根据协作图来分析和调节对象之间的功能分布。

协作图

时序图按照时间顺序布图,而写作图按照空间结构布图。

2.6 组件图(Component Diagram)

描述系统中各个软件组件之间的依赖关系,还可以描述软件组件的源代码的组织结构。

组件图的主要用途是显示软件系统中组件之间的依赖关系,以及和其他第三方组件(例如类库)的依赖关系,此外,它还能显示包含软件的源程序代码的文件的物理组织结构。组件图既可以在一个非常高的层次上仅显示粗粒度的组件,也可以在较低的层次上展示某个组件的组成结构。

组件图
2.7 部署图(Deployment Diagram)

定义系统中软硬件的物理体系结构。它可以显示实际的计算机和设备(用节点表示)以及他们之间的连接关系,在节点中,还可以显示软件组件在硬件环境中的布局。

部署图中最主要的元素是节点,一个节点可以代表一台物理机器,或代表一个虚拟机器节点,节点用三维立方体表示,在每个节点下方可以表明在此节点上运行的可执行程序。

部署图
2.8 对象图(Object Diagram)

对象图显示某时刻对象和对象之间的关系。一个UML对象图可看成一个类图的特殊用例,实例和类可在其中显示。

对象图的目的与类图类似。不同的是,一个类图代表一个抽象的模型,包括类和它们之间的关系。但是,由于对象存在生命周期,因此UML对象图只能在系统某一时间段存在。这意味着对象图是更接近实际的系统行为。目的是在一个特定的时刻捕捉到静态的系统视图。

对象图的目的概述如下:

  • 正向和逆向工程
  • 一个系统的对象间的关系
  • 一个交互的静态视图
  • 了解对象的行为和他们的关系从实用的角度来看
对象图
对象图-对象表示法
2.9 活动图
2.9.1 活动图概览

活动图是状态机的一个特殊例子,它强调计算过程中的顺序和并发步骤。活动图所有或多数状态都是活动状态或动作状态,所有或大部分的转换都由原状态中完成的活动触发。

2.9.2 活动图的含义

活动图是一种用于描述系统行为的模型视图,它可用来描述动作和动作导致对象状态改变的结果,而不用考虑引发状态改变的事件。通常,活动图记录单个操作或方法的逻辑、单个用例或商业过程的逻辑流程。

在UML中,活动图的起点用来描述活动图的开始状态,用黑的实心圆表示。活动图的中止点描述活动图的终止状态,用一个含有实心圆的空心圆表示。活动图中的活动既可以是手动执行的任务,也可以是自动执行的任务。

活动图
2.9.3 活动图与状态图的区别

活动图可以算是状态图的一个变种,并且活动图的符号与状态图的符号非常相似,有时会让人混淆。活动图的主要目的是描述动作及对象的改变结果,而状态图则是以状态的概念描述对象、子系统、系统在生命周期中的各种行为。活动图中的状态转换不需要任何触发事件。活动图中的动作可以放在泳道中,而状态图则不可以。

2.9.4 活动图的作用

活动图是模型中的完整单元,表示一个程序或工作流,常用于计算流程和工作流程的建模。活动图着重描述用例实例或对象的活动,以及操作实现中所完成的工作。活动图通常出现在设计的前期,即在所有实现决定前出现,特别是在对象被指定执行所有活动前。

活动图的作用主要体现在以下几点:

  • 描述一个操作执行过程中所完成的工作。说明角色、工作流、组织和对象是如何工作的。

  • 活动图对用例描述尤其有用,它可对用例的工作流建模,显示用例内部和用例之间的路径。它可以说明用例的实例是如何执行动作以及如何改变对象状态的。

  • 显示如何执行一组相关的动作,以及这些动作如何影响它们周围的对象。

  • 活动图对理解业务处理过程十分有用。活动图可以画出工作流用以描述业务,有利于领域专家进行交流。通过活动图可以明确业务处理操作是如何进行的,以及可能产生的变化。

  • 描绘复杂过程的算法,在这种情况下使用的活动图和传统的程序流程图的功能是差不多的。

2.9.5 泳道

为了对活动图的职责进行组织而在活动图中将活动状态分为不同的组,成为泳道(Swimlane)。每个泳道代表了特定含义的状态职责的部分。在活动图中,每个活动只能明确的属于一个泳道,泳道明确地表示了哪些活动是由哪些对象进行的。每个泳道都有一个与其它泳道不同的名称。

每个泳道都可能由一个或者多个类实施,类所执行的动作或拥有的状态按照发生的事件顺序自上而下排列在泳道内。

在活动图中,每个泳道通过垂直实线与他的邻居泳道相分离。泳道的上方是名称,不同泳道中的活动既可以顺序进行,也可以并发进行。虽然每个活动状态都指派了一条泳道,但是转移则可能跨越数条泳道。

泳道
2.10 UML图行符号汇总
UML图行符号汇总

你可能感兴趣的:(UML基础入门)