1.1. UML的基本构造块(Building Blocks)
事物是对模型中最具代表性的成分的抽象;关系是把事物结合在一起;图聚集了相关的事物。
1.1.1. UML中的事物(Things)
构成模型图的一些基本图示符号,它们表示一些面向对象的基本概念
1.1.1.1. 结构事物
1. 类(class):类是对一组具有相同属性、方法、关系和语义的对象的描述,一个类实现一个或多个接口
2. 接口(interface):接口描述了一个类或构件的一个服务的操作集,接口仅仅是定义了一组操作的规范,它并没有给出这组操作的具体实现
3. 协作(collaboration):协作定义了一个交互,它是由一组共同工作以提供某协作的角色和其它元素构成的群体,这些协作行为大于所有元素的各自行为的总和。因此,协作所有结构、行为和维度。一个给定的类可以参与几个协作
4. 用例(use case):用例是对一组动作序列的描述,系统执行这些动作将产生一个对特定的参与者(actor)有价值且可观察的结果
5. 主动类(activeclass):主动类是这样的类,其对象至少拥有一个进程或线程,因此它能启动控制活动
6. 构件(component):构件是系统中物理的、可替代的部件,它遵循且提供一组接口的实现
7. 节点(node):节点是在运行是存在的物理元素,它表示了一种可计算的资源,它通常至少有一些记忆能力处理能力。一个构件集可以驻留在一个节点内,也可以从一个节点迁移到另一个节点
1.1.1.2. 行为事物
行为事物是UML模型的动态部分。它们是模型中的动词,描述了跨越时间和空间的行为。共有两类主要的行为事物
1. 交互(interaction):交互是这样一种行为,他由在特定语境中共同完成一定特定任务的一组对象之间交换的消息组成。一个对象群体的行为或单个操作的行为可用一个交互来描述。
交互涉及一些其他元素,包括消息、动作序列(由一个消息所引起的行为)、links(对象间的连接)
2. 状态机(statemachine):状态机是这样一种行为,描述了一个对象或一个交互在生命周期内响应事件所经历的状态序列,单个类或一组类之间协作的行为可以用状态机来描述,一个状态机涉及到一些其他元素,包括状态转换(从一个状态到另一个状态的流) 事件(发转换的事物)和活动(对一个转换的响应)
1.1.1.3. 分组事物
分组事物是UML模型的组织部分
1. 包(package):包是把元素组织成组的机制
包是UML中唯一的组织机制
包可以拥有其他元素,这些元素可以是类、接口、构件、节点、协作、用例和图,甚至可以是其他包
一个包形成了一个命名空间,在一个包中同一种元素的名称必须是唯一的,不同包中的元素可以有相同的名称
1.1.1.4. 注释事物
注释事物是UML模型的解释部分,这些注释事物用来描述、说明和标注模型的任何元素,有一种主要的注释事物,称为注解
1. 注解(note):注解是一个依附于一个元素或一组元素之上,对它进行约束或解释的简单符号
1.1.2. UML中的关系(Relationgships)
表示基本图示符号之间的关系
1. 关联(Association):描述了两个或多个类之间的结构性关系。在图形上,把关联关系画成一条带箭头的实线
2. 依赖(Dependency):依赖是两个事物间的语义关系,其中一个事物(独立事物)发生变化会影响另一个事物(依赖事物)的语义,在图形上,把依赖画成一条可能有方向的虚线
3. 泛化(Generalization):泛化是一种特殊/一般关系,特殊元素(子元素)的对象可替代一般元素(父元素)的对象,用这种方法,子元素共享了父元素的结构和行为,在图形上,把泛化关系画成一条带有空心箭头的实线,它指向父元素
4. 实现(Realization):实现是类元之间的语义关系,其中一个类元指定了由另一个类元保证执行的契约在两种地方要用到实现关系:一种是在接口和实现它们的类或构件之间;另一种是在用例和实现它们的协作之间。在图形上,把实现关系画成一个带空心箭头的虚线
1.1.3. UML中的图(Diagrams)
特定的视角对系统所作的抽象描述
1. 用例图(use case diagrams):用来描述用户的需求,从用户的角度描述系统的功能,并指出各功能的执行者,强调谁在使用系统,系统为执行者完成哪些功能
2. 类图(class diagrams):用于定义系统中的类,包括描述类的内部结构和类之间的关系,类图主要用于描述系统的静态结构
3. 对象图(object diagrams):对象图是类图的一个实例,描述了系统在具体时间点上所包含的对象以及各个对象之间的关系
4. 状态图(statechart diagrams):用来描述类的对象所有可呢的状态以及事件发生时状态的转移条件
5. 活动图(activity diagrams):用来描述满足用例要求所要进行的活动以及活动时间的约束关系,使用活动图有利于识别系统的并行活动
6. 序列图(sequence diagrams):描述对象之间的交互顺序,着重体现对象间消息传递的时间顺序,同时也显示对象之间的交互过程
7. 协作图(collaboration diagrams):描述对象之间的合作关系,更侧重于说明哪些对象之间有消息的传递
序列图和协作图可以相互转化
8. 组件图(component diagrams):用来描述代码组件的物理结构以及各组件之间的依赖关系,一个组件可以是一个资源文件、一个二进制文件或者一个可执行文件
9. 部署图(deployment diagrams):定义了系统硬件的物理体系结构,用来描述实际的物理设备以及它们之间的连接关系
静态图:类图、对象图;行为图:状态图、活动图、交互图(序列图、协作图);实现图:组件图、部署图
1.2. UML的规则
1. 命名:为事物、关系和图起名
2. 范围:给一个名称以特定含义的语境
3. 可见性:怎样让其他人使用或者看见名称
4. 完整性:事物如何正确、一致地相互联系
5. 执行:运行或模拟动态模型的含义是什么
1.3. UML中的公共机制
1.3.1. 规格说明
规格说明提供了对构造块的语法和语义的文字叙述,
对系统进行了可视化,用来描述系统的细节
提供了一个语义底板,包含了一个系统的各种模型的所有部分,并且各个部分相互联系,并保持一致,因此UML图只不过是对底板的简单视觉投影,每一个图展现了系统的一个特定的方面
1.3.2. 修饰
UML表示法中的每一个元素都有一个基本符号,可以把各种修饰细节加到这个符号上
1.3.3. 通用划分
类/对象二分法:类是一个抽象;对象是这种抽象的一个具体形式。UML顶的每一个构造块几乎都存在像类/对象这样的二分法,例如:用例和用例实例(场景),构件和构件实例,节点和节点实例等
接口/实现二分法:接口声明了一个契约,而实现则表示了对该契约的具体实施,它负责如实实现接口的完整语义。几乎每一个UML的构造块都有像接口/实现这样的二分法
1.3.4. 扩展机制
对UML图示符号的扩展,包括构造型Stereotype、标注值Taggedvalue、约束Constraint