目录
9.1概述
9.2 结构图
9.2.1 对象图
9.2.2 类图
9.2.3 构件/组件图
9.2.3 部署图
9.2.4 制品图
9.2.5 组合结构图
9.3 行为图
9.3.1 用例图
9.3.2 协作图
9.3.3 顺序/序列/时序图
9.3.4 活动图
9.3.5 状态图
9.3.6 通信图
9.4 交互图
9.1概述
-
基本概念
-
UML统一建模语言:是一种为面向对象系统的产品进行说明、可视化、编制文档的一种标准语言
-
UML文档:设计、开发人员采用UML语言进行系统分析设计的结果,并没有给出如何进行开发、采用何种开发流程,也不指导如何进行面向对象设计
-
UML3要素:UML基本构造块、支配这些构造块如何放置在一起的规则、运用于整个语言的一些公共机制
-
UML词汇表的3个构造块:事物—对模型中最具代表性成分的抽象、关系—把事物结合在一起、图—聚集了相关事物
-
-
UML4种事物
-
结构事物:静态部分,模型中的名词,描述概念/物理元素,包括类 class、接口 interface、协作 collaboration、用例 use case、主动类 active class、构件 component、制品 artifact、结点 node
-
行为/动作事物:动态部分,模型中的动词,描述跨越时间/空间的行为,包括交互 interaction、 状态机 state machine、活动 activity
-
分组事物:模型的组织部分,是一些由模型分解成的”盒子“,最主要的分组事物是包 package。结构事物、行为事物、分组事物都有可能放在一个包中。包是概念上的,只存在开发阶段,而组件在运行时存在
-
注释事物:模型的解释部分。用来描述、说明、标注模型的任何元素。主要的注释事物是注解 note,注解是依附于元素或元素之上,对它进行约束或解释的简单符号
-
-
UML系统视图
-
逻辑/设计视图:表示设计模型中在架构方面具有重要意义的部分,即类、子系统、包、用例实现的子集,从系统的静态结构、动态行为角度显示系统内部如何实现系统功能
-
进程视图:可执行线程、进程作为活动类的建模,是逻辑视图的一次执行实例,描述了并发与同步结构
-
实现视图:对组成基于系统的物理代码的文件、构件建模。源代码结构、实际执行代码通过实现视图反映
-
部署视图:把构件部署到一组物理节点上,表示软件到硬件的映射、分布结构
-
用例视图:最基本的需求分析模型,从外部参与者的角度描述系统功能
9.2 结构图
-
结构图:描述事物之间的关系
9.2.1 对象图
-
理解
-
展现某时刻一组对象及对象间的关系,描述类图中所建立事物实例的静态快照。对象快照采用对象图建模,给出系统静态设计视图、静态进程视图
-
类似于类图,但并不描述对象类,它们对实际的对象实例建模——显示实例属性的当前值
-
作为模型管理视图还可以含有包、子系统,二者都用于把模型元素聚集成更大的组块
-
9.2.2 类图
-
理解
-
描述系统的对象结构,显示构成系统的对象类及这些对象类之间的关系
-
用于静态视图建模,包含主动类的类图给出了系统的静态进程视图
-
主要支持系统的功能需求,即系统要提供给最终用户的服务
-
包括的主要内容有类、接口、协作和依赖、泛化、关联关系,也可以包含注解和约束
-
可以含有包、子系统,二者都用于把模型元素聚集成更大的组块
-
UML中构造型stereotype名称为«interface»表示接口,声明对象类所需要的服务,而服务具体如何执行,有实现它的具体类完成
-
-
类图建模方式
-
对系统词汇建模:决定哪些抽象是考虑中的系统的一部分,哪些抽象处于系统边界之外,并详细描述这些抽象和它们的职责
-
对简单协作建模:协作是一些共同工作的类、接口和其他元素的群体,提供一些合作行为强于所有这些因素的行为之和,要有相互协作的一组类来实现这些协作的语义
-
对逻辑数据库模式建模:将模式看作数据库概念设计的蓝图,类图对这些数据库模式进行建模,也称为领域类图。在很多领域中,要在关系/面向对象数据库中存储永久信息,可用类图对这些数据库的模式建模
-
-
关系
-
依赖关系 - - ►
-
两个事物间的语义关系,一个事物(独立事物)发生变化会影响另一个事物(依赖事物)的语义
-
依赖是几种关系中最弱的一种关系,使用类库就是其中的一种关系
-
两个类A和B,如果B的变化可能会引起A的变化,则称类A依赖于类B
-
-
泛化关系 —▻
-
泛化关系是一个类与它的一个/多个细化类间的关系,表示把几类对象类的公共属性、行为抽象成超类,其属性、方法被子类继承。继承是泛化的反关系,子类继承父类,而父类则是子类的泛化
-
泛化关系(一般-特殊关系、继承关系)描述一个参与者可以完成另一个参与者同样的任务,并可补充额外的角色功能,特殊元素/子元素对象可替代一般元素/父元素对象,子元素可共享父元素结构行为
-
-
实现关系 - - ▻
-
实现是类之间的语义关系,其中一个类制定了由另一个类元保证执行的契约
-
场景:在接口和实现它们的类或构件之间;在用例和实现它们的协作之间
-
实现关系将说明和实现联系起来。接口是对行为而非实现的说明,而类中则包含了实现的结构。一个或多个类可以实现一个接口,而每个类分别实现接口中的操作
-
-
关联关系
-
描述了一组链,链是对象之间的连接。关联提供了不同类的对象之间的结构关系,它在一段时间内将多个类的实例连接在一起。聚合、组合是一种特殊类型的关联,描述了整体和部分间的结构关系
-
描述一组对象之间连接的结构关系/链,有单向关联、双向关联、自身关联(只涉及一个类)。链上可添加多重度、角色名称说明关联的对象数量及行为
-
两个类之间可以有多个关联,这些关联需要由不同角色标识
-
has-a表示两个类之间存在整体与部分的组成关系,即其中一个类的数据成员的类型是另外一个类
-
-
关联关系—聚合关系 —◇
-
聚合是引用的合成,一个较大“整体”类包含一个/多个较小“部分”类,表示拥有关系的程度不如组合强
-
共享聚集关系,部分对象可在不同的整体对象间共享,“部分”可能同时属于多个“整体”
-
部分对象的生命周期可以与整体对象不同,部分可以脱离整体而单独存在。聚合暗示子类型独立于父类型而存在,当整体对象消失,部分对象依然可以存在并继续被使用
-
比如汽车和车轮,车坏了车轮还可以用,车轮坏了可以再换一个;班级和学生;购物车和商品
-
-
关联关系—组合关系 —◆
-
组合是值的合成,是一种很强的拥有关系,比聚合程度更强,也称为强聚合
-
组合聚集关系/合成关系,组合成的新对象完全支配其组成部分,包括其创建、湮灭等。一个组合关系的成分对象不能被另一个组合构成的对象共享,组合关系中的“部分”只能属于一个“整体”
-
“部分”与“整体”的生命周期相同,“部分”随着“整体”的创建而创建,消亡而消亡。组合暗示没有父类型, 子类型无法独立存在
-
比如一个公司包含多个部门,公司一旦倒闭,也就无所谓部门了;Magazine和Page;网店和商品
-
-
-
考点
-
填类名,方法名,属性名
-
填多重度
-
填关联关系:关联关系是双向关系,即关联的对象双方彼此都能与对方通信
1:表示一个集合中的一个对象对应另一个集合中1个对象; 0..*:表示一个集合中的一个对象对应另一个集合中的0个或多个对象(可以不对应) ;1..*:表示一个集合中的一个对象对应另一个集合中的一个或多个对象(至少对应一个); *:表示一个集合中的一个对象对应另一个集合中的多个的对象
-
9.2.3 构件/组件图
-
理解
-
是系统的静态实现视图,反映源代码架构和实际的执行代码
-
以图形化方式描述系统的物理结构,可以用来显示程序代码如何分解成模块
-
展现了一组组件/构件之间的组织和依赖,与类图相关,通常把构件映射为一个或多个类、接口、协作
-
构件是物理模块而不是逻辑模块,构件是可替换的、是组成系统的一部分、构件与类处于不同抽象层次
-
组件图 = 构件 Component + 接口 Interface + 关系 Relationship + 端口 Port + 连接器 Connector(下图供需接口标记错误)
-
9.2.3 部署图
-
理解
-
部署图描述系统中硬件、软件的物理架构,描述构成系统架构的软件构件、处理器、设备
-
对系统静态部署视图建模,与组件/构件图相关,通常一个节点包含一个/多个构件,依赖关系类似于包图
-
部署图经常被认为是一个网络图,对面向对象系统的物理方面建模的方法,展现了运行时处理结点、其中构件(制品)的配置。通常在实施阶段使用,以说明哪些组件、子系统部署于哪些结点
-
9.2.4 制品图
-
描述计算机中一个系统的物理结构。制品包括文件、数据库、类似的物理比特集合。制品通常与部署图一起使用。制品也给出了它们实现的类和构件
9.2.5 组合结构图
-
描述结构化类(构件或类)的内部结构,包括结构化类与系统其余部分的交互点。组合结构图用于画出结构化类的内部内容
9.3 行为图
-
行为图:描述参与者和用例之间的交互,或描述参与者如何使用系统
9.3.1 用例图
-
理解
-
用于静态视图建模:对系统的语境建模,对系统的需求建模
-
从外部参与者角度描述系统功能,展示了用例模型;从用户使用系统的角度对系统进行划分,对系统的使用方式进行分类
-
以图形化方式描述系统与外部系统及用户交互,以图形化方式描述谁将使用系统,以及用户期望以什么方式与系统交互,主要用在面向对象需求分析阶段
-
主要支持系统的行为,即该系统在它的周边环境语境中所提供的外部可见服务,包括说明这个系统应该做什么((从系统外部的一个视点出发), 而不考虑系统应该怎样做
-
展现了一组用例、参与者(表示人、硬件、其他系统可以扮演的角色)、参与者与用例间关联关系、用例间的扩展/包含关系
-
-
用例之间的关系
-
包含关系:当可以从两个/两个以上的用例中提取公共行为时,应使用包含关系表示。提取出来的公共用例称为抽象用例,原始用例称为基本用例/基础用例
-
扩展关系:如果一个用例明显地混合了两种/两种以上的不同场景,即根据情况可能发生多种分支,则可以将这个用例分为一个基本用例、一个/多个扩展用例,这样使描述可能更加清晰
-
泛化关系:当多个用例共同拥有一种类似的结构和行为时,可以将它们的共性抽象成父用例,其他用例作为泛化关系中的子用例
-
9.3.2 协作图
-
理解
协作图类似于序列图,但重点不是消息的时间顺序。它以一种网络格式表现对象之间的交互
9.3.3 顺序/序列/时序图
-
理解
-
描述了执行系统功能的各角色间相互传递消息的顺序关系
-
描述了以时间顺序组织的对象之间的交互活动,强调消息时间序列的交互图
-
关注沿着线性时间轴、生命线内部和生命线之间的条件改变。描述对象状态随时间改变的情况,很像示波器,适合分析周期、非周期性任务
-
以图形化方式描述了在一个用例/操作执行过程中,对象如何通过消息互相交互,说明了消息如何在对象之间被发送和接收以及发送顺序
-
参加交互的对象放在图的上方,沿水平方向排列。把这些对象发送和接收的消息沿垂直方向按时间顺序从上到下放置
-
以二维图的形式显示对象之间交互,纵轴自上而下表示时间,横轴表示要交互的对象,主要体现对象间消息传递的时间顺序,强调参与交互的对象及其间消息交互的时序
-
图中建模元素有:活动者、 对象、生命线、控制焦点、消息等
-
对象名标有下划线;生命线表示为虚线,沿竖线向下延伸;消息在序列图中标记为箭头;控制焦点由薄矩形表示
-
消息:是从一个对象的生命线到另一个对象生命线的箭头,用从上而下的时间顺序来安排
同步消息:进行阻塞调用,调用者中止执行,等待控制权返回,需等待返回消息,用实心三角箭头表示
异步消息:调用者发出消息后继续执行,不引起调用者阻塞,也不等待返回消息。消息由名称标识,还描述出消息的发出者、接收者,由空心箭头表示
-
9.3.4 活动图
-
理解
-
以图形化的方式描述一个业务过程、一个用例活动的顺序流,其本质上是一种流程图
-
是一种特殊的状态图,专注于系统的动态视图,对于系统的功能建模特别重要,强调对象间的控制流程,是对一个复杂用例中的业务处理流程进一步建模的最佳工具
-
描述活动顺序,展现从一个活动到另一个活动的控制流,是内部处理驱动的流程,将进程或其他计算结构展示为计算内部的控制流、数据流
-
包括活动状态、动作状态、转换对象。活动图有开始、结束、一系列动作,表示分支、合并、分岔、汇合① 分支:描述基于布尔表达式的可选择路径,可有一个入流和2个/多个出流,在每个出流上放置一个布尔表达式条件/监护表达式,每个出流的条件不应该重叠,但需要覆盖所有可能性
② 合并:描述当两条控制路径重新合并,不需要监护条件,只有一个出流
③ 分岔:描述把一个控制流分成两个/多个并发控制流,可以有一个进入转移和两个/多个离去转移,每个离去的转移表示一个独立的控制流,这些流可并行进行
④汇合:表示两个/多个并发控制流的同步,可以有两个/多个进入转移和一个离去转移,意味着每个进入流都等待,直到所有进入流都达到这个汇合处
-
9.3.5 状态图
-
理解
-
对一个特定对象的动态行为建模,说明了一个对象的生命周期——对象可以经历的各种状态,以及引起对象从一个状态向另一个状态转换的事件
-
展现了一个状态机,描述对象、子系统、系统的生命周期,可以了解到一个对象所能到达的所有状态以及对象收到的事件(消息、超时、错误、条件满足等)对对象状态的影响
-
针对具有可标记的状态、复杂的行为的对象构建状态图。可用于描述一个对象在多个用例中的行为;用于某些具有多个状态的对象而不是系统中大多数或全部对象;可以用于用户界面或控制对象
-
当对系统、类、用例的动态方面建模时,通常是对反应型对象建模。动态方面可包括出现在系统体系结构的任何视图中的任何一种对象的按事件排序的行为,这些对象包括类(各主动类)、接口、构件、节点
-
显示一个由状态(简单、组合状态)、转换(事件和动作)、活动组成的状态机,对于接口、类和协作的行为建模尤为重要,强调对象按事件次序发生的行为,并强调对象行为的事件顺序
-
状态:
① 对象的生命周期中某个条件/状态。在此期间对象将满足某些条件、执行某些活动、等待某些事件,是对象执行了一系列活动的结果
② 当某个事件发生后,对象状态将发生变化。嵌套在另一个状态中的状态称为子状态,且子状态可以是一个状态,含有子状态的状态称为组合状态/超状态
③ 当对象处于某状态时,这个状态称为徼活状态。任何从激活状态出发的转换所标识的事件被检测到发生时进行转换,而从当前状态出发的事件如果没有标注所检测到的事件名称,不激发任何转换,当前状态仍然是激活状态
-
转换
① 是两个状态之间的一种关系,表示对象将在源状态中执行一定动作,并在某个特定事件发生且某个特定的警戒/监护条件满足时进入目标状态
② 事件可能导致对象从一个状态移动到另一状态,即事件触发转换,而不是事件触发状态。引起转换的事件为触发器
② 转换可包含事件触发器、监护条件、状态(原状态、目标状态),监护条件只有在相应事件发生时才进行检查
-
事件:事件发生时检查监护条件。若满足相应事件进行相应转换,否则此事件没有引起状态改变
-
动作:一个可执行的不可中断的原子操作,执行时间忽略不计
-
活动:可以在状态转换时执行,也可以状态内执行
-
-
9.3.6 通信图
-
理解
-
描述对象间的调用关系,即一个类操作的实现,体现一种组织关系,强调收发消息对象的结构组织、参加交互对象的组织
-
顶点:即参加交互的对象。框的名称中带有“:”号,表示一个对象。“:”号前后分别表示对象名、类名
-
弧:即连接这些对象的链,用对象发送、接收的消息修饰这些链。表示对象间的组织关系、交互的消息流及其顺序关系
-
消息:对象之间连线上面的箭头所标识的是对象之间通信的消息。采用带箭头的连线加上消息本身及其表示时间顺序的序号来表示,附着在链旁
-
路径:能够体现出控制流的清晰的可视化轨迹
-
顺序号:表示一个消息的时间顺序而给消息加的一个前缀。控制流中每个新消息的顺序号单调增加,如1、2、3等,嵌套消息采用带点的序号标号,如表示嵌套在消息1中的第一个消息1.1,第二个消息1.2
-
9.4 交互图
-
理解
-
用于对系统的动态方面进行建模。一张交互图表现的是一个交互,由一组对象和它们之间的关系组成,包含它们之间可能传递的消息
-
大多数情况下,它包括对类接口、构件、节点的具体的或原型化的实例及其之间传递的消息进行建模。交互图可以单独使用,用于可视化、详述、构造和文档化一个特定的对象群体的动态方面,也可以用来对一个用例的特定控制流进行建模
-
交互视图描述了执行系统功能的各角色间相互传递消息的顺序关系,主要包括序列图、协作图,交互图表现为协作图、顺序图、通信图、交互概览图、定时图
-
定时图/计时图:它强调消息跨越不同对象或参与者的实际时间,而不仅仅只是关心消息的相对顺序
-
交互概览图:活动图、顺序图的混合物。它是活动图的变体,描述业务过程中的控制流概览,软件过程中的详细逻辑概览,以及将多个图进行连接,抽象掉了消息和生命线。强调控制流的交互图
-
通信图/协作图:强调接收、发送消息的对象的结构组织
-