类与类图
类
三个格子的长方形,类名-属性-操作
属性
- 根据详细程度不同,属性可以包括属性的可见性,属性名称,类型,多重性,初始值和特性
- 可见性
-
- / 蓝色框 public 共有
-
- / 蓝框+锁 private 私有
-
/ 蓝框+钥匙 protected 受保护
- ~ / package 最高级包
-
类的关系
关联
对具有相同结构特性,行为特性,关系和语义的链的描述
- 链就是一个实例,链式关联关系的实例,表示类之间的关系。表示为两个类之间的一条实现
- 关联可以有两个或多个关联端,每个关联端连接到一个类。
- 可以用箭头表示单项关联
- 关联的元素
- 关联名:在肩头上进行标识,表示A与B是‘’关系
- 关联角色:两端的类可以由某种角色参与。表示为直线两端的表示。上面是角色名下面是数量。
- 关联类:关联本身可以由类来进一步描述。表示为从线上连接出的虚线。
- 关联的约束:表示为两个关联线之间的虚线,用文字表示类型。如表示两个关联是互斥关系,不可同时
- 限定关联:在两端表限定符,表示只在这个限定内起作用,一般与非限定关联连用
- 关联种类
- 自返关联/递归关联:同一个类多个对象之间的关联
- 二元关联:最多见的
- N元关联:多个类之间的关联
关联
关联角色
关联约束
限定关联
N元关联
聚集和组合
- 聚集:特殊的关联,表示类之间整体与部分的关系。(空菱形指向整体)
- 图形A可以有样式B,A+B可以表示有样式的图形,但A与B又可以单独存在
- 组合:一种特殊的聚集,与聚集的不同为,组合关系的整体与部分具有同样的生命周期(实心菱形指向整体)
- 图形A和图形中心B是组合,图形A不存在时B也会不存在
- 图形A和图形中心B是组合,图形A不存在时B也会不存在
泛化
一般元素与特殊元素的分类关系。类似于类与类之间的继承关系。
空三角形指向被泛化的类。
依赖
修改X的定义会导致Y的定义也被修改,则Y依赖于X。虚线箭头指向被依赖类。
例如更改课程类名称会影响学生类选课方法的参数。
边界类,控制类,实体类
- 边界类:位于系统和外界的交界处,直接与外部设备交互的类等,每个参与者至少与一个边界类相连
- 实体类:保存要放进持久存储体的信息。如数据库文件等
- 控制类:负责其他工作的类。
寻找类
- 根据用例描述中的名词确定类的候选者
- 使用CRC(类、职责、协作)分析法寻找类。
- 根据边界类、实体类和控制类的划分来帮助发现系统中的类
- 对领域进行分析,或利用已有的领域分析结果得到类
- 参考设计模式来确定类
- 根据某些软件开发过程提供的指导原则
状态图与活动图
状态图
主要用于描述一个对象在其生存期间的动态行为,表现一个对象所经历的状态序列,引起状态转移的事件,以及因状态转移而伴随的动作。
元素
- 包括状态。转换,事件,动作
- 状态:指在对象的生命周期种话的某个条件或状况,在此期间对象满足某些条件,执行某些活动或等待事件。
- 所有对象都具有状态,是对象执行了一系列活动的结果,事件发生后对象的状态发生变化。
- 初态:一个状态图只有一个初态。表示状态图的起始,必须要有一个输出的无触发转换来保证总保持在初态(实心圆)
- 终态:可以有多个或没有。(空心圆)
- 组合状态:包含一些嵌套的子状态,其中也有初始态与终态
- 历史状态:记住组合状态中退出时所处的子状态,可以直接进入这个状态而不是从组合状态的开始
- 中间状态:名字域+内部转移域,后者可选。下图为一个完整中间态例子
- 动作
- 入口动作:表示进入这个状态所要执行的第一个动作
entry/... - 出口动作:退出的最后一个动作
exit/... - 内部变迁:在状态内的动作不引起状态变化
do/...
- 入口动作:表示进入这个状态所要执行的第一个动作
- 事件:触发状态转换的条件,如开门,打开开关等。如果没有触发事件则原状态执行完毕自动换到目标状态
- 可以理解为if线
event-name ( comma-separated-parameter-list )
- 动作:事件发生后执行的一组动作,并把状态由原状态转为目标状态,动作前加“/”
- 转换
- 当一个特定事件发生或者某些条件满足,一个源状态下的对象在完成一定动作后将发生状态的转变,转向另一个称为目标状态的状态。
event-signature [ guard-condition ] / action- 外部转换: 一种改变对象状态的转换。从源状态箭头指向目标状态
- 内部转换:状态转后仍然是本身,不触发入口动作出口动作
- 完成转换:又称为自转换,没有表明触发器的事件,由状态中活动的完成引发的转换。
- 与内部转换的不同:是离开后重新进入,会触发入口出口动作。
- 复合转换:由简单转换组成,通过分支合并组合在一起,在箭头上标有触发器判定
活动图
用于描述系统的工作流程和并发行为
表示内容与状态图类似。用泳道根据活动职责划分区域,根据活动职责放入不同泳道。
元素:活动,动作流,分支与合并,分叉与汇合,泳道,对象流
构件图/部署图
构件图
- 构件:系统中遵从一组接口且提供其实现的物理的,可替换的部分。是定义了良好接口的软件模块。
- 构件图:一组构件以及他们之间的相互关系,包括编译,连接,或执行时构建之间的依赖关系。
- 描述了如何把软件的逻辑模型映射为运行的实体。
- 元素:构件,接口,依赖关系
部署图
与构件图一起是对OO系统物理方面建模的两个图。用来显示系统中计算节点的拓扑结构和通信路径,与节点上允许的软构件等。
- 结点:存在于允许时的代表计算资源的物理元素,节点一般具有一些内存。有处理机和设备两种类型。
- 处理机:可以执行程序的硬件构件|CPU等
- 设备:无计算能力的硬件构件|调制解调器,终端等
- 连接:两个硬件之间的关联关系。由于连接关系是关联,所以可以加上角色多重性等。