UML
UML面向对象建模
对象模型表示静态的、结构化的系统的“数据”性质。用面向对象方法开发软件,通常需要建立3种形式的模型,它们分别是描述系统数据结构的对象模型,描述系统控制结构的动态模型和描述系统功能的功能模型。
对象模型-UML类图
UML描述属性:可见性 属性名: 类型名[=初值|{性质串}]
可见性通常有下述3种(如果未声明可见性,则表示尚未定义,没有默认的可见性):
§ 公有的(public):(+)
§ 私有的(private):(-)
§ 保护的(protected):(#)
花括号括起来的性质串明确地列出该属性所有可能的取值
UML描述操作:可见性 操作名(参数表): 返回值类型{性质串}
操作可见性的定义方法与属性相同。
参数表是用逗号分隔的形式参数的序列:参数名:类型名=默认值
关系的符号
类间关系:
○ 泛化(Generalization)/ 继承:
§ 普通泛化
§ 受限泛化:
□ 多重:一个子类可以同时多次继承同一个上层基类
□ 不相交:一个子类不能多次继承同一个基类
□ 完全:父类的所有子类都已在类图中穷举出来了
□ 不完全(默认):父类的子类并没有都穷举出来
○ 实现(Realization)/ 细化:接口实现
类与实例间关系
○ 依赖(Dependence):使用类(方法中使用)
○ 关联(Association):使用类(作为对象的属性)
§ 普通关联
§ 关联限定:在类图中把限定词放在关联关系末端的一个小方框内
§ 关联角色:显式标明参与此关联的对象的角色
§ 关联类:为了说明关联的性质可以引入一个关联类来记录这些信息。关联类通过一条虚线与关联连接
○ 聚合(Aggregation)/ 聚集:作为对象中属性,多个相对独立对象集合在一起
§ 共享聚合:处于部分方的对象可同时参与多个处于整体方对象的构成
§ 组合聚合:部分类完全隶属于整体类,部分与整体共存
○ 组合(Composition)强关联:作为对象中属性,本身就是对象的一部分,独立使用无意义
细见:https://www.jianshu.com/p/2828874af134
动态模型-UML状态图
规定了对象模型中的对象的合法变化序列。对一个对象来说,生命周期由许多阶段组成,生命周期中的阶段也就是对象的状态。状态与事件密不可分,一个事件分开两个状态。事件表示时刻,状态代表时间间隔。通常,用UML提供的状态图来描绘对象的状态、触发状态转换的事件以及对象的行为。各个类的状态图通过共享事件合并起来,从而构成系统的动态模型。
功能模型-UML用例图
表示变化的系统的“功能”性质。通常功能模型用UML用例图:描述外部行为者(actor)所理解的系统功能。在UML中把用用例图建立起来的系统模型称为用例模型。UML用例之间主要有扩展和使用两种关系,它们是泛化关系的两种不同形式:
- 扩展关系
向一个用例中添加一些动作后构成了另一个用例,这两个用例之间的关系就是扩展关系,后者继承前者的一些行为,通常把后者称为扩展用例。 - 使用关系
当一个用例使用另一个用例时,这两个用例之间就构成了使用关系。通常在描述一般行为的变化时采用扩展关系;在两个或多个用例中出现重复描述又想避免这种重复时,可以采用使用关系