uml总结
yuiyake 12/9/2021
# 第一章 概述
什么是uml
- 是一种用文本、图形和符号的集合来描述现实生活中各 类事物、活动、及其之间关系的语言。
uml组成
事物: 类,接口,协作,用例,构件,节点
- 行为事物
- 分组事物
- 注释事物
- 结构事物
关系:依赖,关联(读者书籍管理员),泛化(父子类),实现
图(视图):用例,逻辑,并发,组件,配置视图。
- UML有9种不同的图,通过它们的相互组合提供被建模系统的所有视图。九种图可以归结为五大类:
- 静态图包括类图、对象图和包图;
- 行为图包括状态图和活动图;
- 用例图;
- 交互图包括顺序图、协作图;
- 实现图包括组件图、部署图。
- UML有9种不同的图,通过它们的相互组合提供被建模系统的所有视图。九种图可以归结为五大类:
# 第二章 面向对象概述
# 基本概念
- 面向对象程序设计使用对象、类、继承、封装、消息等基本概念来进行程序的设计。
- 对象(Object)是面向对象的基本构造单元。
- 一个类定义了一组大体上相似的对象。
- 一个类所包含的方法和数据描述一组对象的共同行为和属性。
# 结构化vs面向对象
- 结构化思维用过程刻画数据间关系,对象思维直接用类表达数据间关系
- 结构化中,数据是死的,全部依赖算法操作,对象思维中,数据是活的,“她”知道自己的信息(属性),并能完成自己的工作(操作)
- 结构化思维更像是一个人在解决所有问题,对象思维更像是一个团队的分工协作
# 对象与类
- 对象是面向对象的基本构造单元,是系统用来描述事物的实体
- 组成:一组属性和一组方法
- 特征
- 模块性,继承,动态连接性
- 一个类所包含的方法和数据描述一组对象的共同行为和属性。
- 类抽象的过程就是用类的属性和操作来表示
- 特征:属性
# 封装与继承
对外访问时提供了4种访问控制级别:
- public:公有访问。
- protected:受保护的。
- private:私有访问。
- default:默认的。
继承具有传递性
# 面向对象开发过程
- 面向对象分析(OOA)
- 面向对象设计(OOD)
- 面向对象编程(OOP)
- 面向对象测试(OOT)
# 建模
- 模型是对现实存在的实体进行抽象和简化 ,过虑了非本质的细节信息
- 软件建模是捕捉系统本质的过程,把问题领域转移到解决领域的过程。
# 第四章 用例图
# 用例
- 用例模型的基本组成:用例,角色(参与者),系统
- 用例:描述系统的功能;是对系统功能的宏观的、整体的描述,可以细分为4种关系:泛化、包含、扩展和分组关系
- 参与者:指那些与系统进行交互的外部实体,通常它是系统的一个用户,但它也可以是其它系统或硬件设备,一般使用泛化关系表示继承关系
- 系统
# 用例图的作用
- 描述系统的功能需求和使用场景
- 促进各阶段开发工作的进度
- 验证和确认系统需求
# 用例之间的关系
- 用例与参与者之间具有关联关系
- 用例之间也存在着泛化关系、包含关系、扩展关系和分组关系
- 包含关系:其中一个用例的行为包含了另一个用例的行为。
- 扩展关系:没有子用例的参与也可以完成一个完整的功能。扩展点上增加新的行为和含义。
- 泛化关系:一般与特殊的关系。子用例继承父用例的行为和含义,还可以增加或覆盖父用例行为。
- 分组关系:一组用例放在一个文件夹中,对需求进行分类。
# 用例图的目的
- 提取和分析足够的需求信息,该模型应该表达用户需要什么
# 第五章 类图与对象图
# 类图概述
- 类:对一组具有相同属性、操作、关系和语义的对象的抽象。
- 类的行为是由一组操作决定,类是静态,用例是动态。
- 名称:唯一的字符串
- 属性:描述事物所具备的特征
- 语法:[可见性] 属性名 [:类型] [=初始值] [{属性字符串}],
- 可见性:public, private, protected
- 属性名:是类的一个特征,单字属性名小写
- 类型:说明属性的数据类型:String,float,int,boolean
- 初始值:为了保护系统完整性
- 属性字符串:指定关于属性的其他信息
- 语法:[可见性] 属性名 [:类型] [=初始值] [{属性字符串}],
- 操作:对类的对象所能做的事物的一个抽象。
- 语法: [可见性] 操作名 [(参数表)] [:返回类型] [{属性字符串}]
- 组成:名称、属性和操作
# 对象图概述
对象指的是一个单独的、可确认的物体、单元或实体,它可以是具体的也可以是抽象的,在问题领域里有确切定义的角色。
对象是边界清楚的任何事物
对象组成:
- 标识:
- 状态(属性):
- 行为:
对象图:参与交互的对象某一时刻的状态。
组成:
- 对象名
- 属性
接口:描述类行为的一组操作(抽象对象操作)
抽象类:包含抽象方法的类,其它类可以对其扩充
# 类与类之间的关系
- 依赖:
- 一个事物依赖于另一个事物
- 使用依赖、抽象依赖、授权依赖、绑定依赖
- 泛化:
- 存在于一般元素和特殊元素之间,即父子类
- 关联:
- 一个事物对象与另一个之间的关系
- 多重度:一个类实例能与另一个类多个实例相关联
- 种类:自返关联,二元关联,N元关联
- 分聚合和组合(总体与局部)
- 实现
- 一种模型元素与另一种连接起来(接口与实现类)
# 类图建模
识别方法:
- 名词识别法
- 用例识别类
- CRC分析法
- 组成:类,指责,协作
- 领域分析法
静态建模,动态建模
# 顺序图和通信图
# 概念
- 用例的实现由交互图来指定说明
- 交互图表示类or对象如何交互来实现系统行为
- 胡奥糊涂通过显示对象之间的关系和对象之间处理的消息来实现动态建模
- 交互图包括:顺序图,通信图,交互概览图,时序图
# 顺序图
概述
- 是强调消息时间顺序的交互图
- 描述类与类之间的方法调用过程
- 强调时间和序列,选序列图
基本内容
- 元素:角色,对象,生命线,激活,消息
- 角色:人or系统or子系统
- 对象:矩形框,交互活动图的对象放在最左边
- 生命线:休眠状态,激活状态
- 激活期:也叫控制焦点,代表顺序图的对象执行一个操作时期
- 消息:对象之间某种形式的通信。类型:同步,异步,同步且立即返回消息
- 元素:角色,对象,生命线,激活,消息
其他内容
- 创建对象create
- 销毁对象destroy
- 自关联消息self-Message
约束
- 满足某种条件时才会传递给对象叫约束,在uml图中用作控制流,在[]中
- 约束条件用于描述代码中if语句结构。
- 分类
- 条件约束
- 循环约束
- 组合片段
画顺序图步骤:
- 确定交互范围
- 确定参与的活动者和对象
- 确定生存周期
- 确定交互产生的信息
- 细化消息内容
# 通信图
概述
- 强调发送消息和接收消息的对象之间结构
- 显示一系列对象与其之间的联系及其消息
- 对象通常是命名or匿名类的实例
- 强调上下文相关,选通信图
基本内容
- 组成:活动者,对象,连接,消息
- 活动者:发送初始消息
- 对象:发送和接收消息,无法表示对象的创建和撤销,可以不指定对象的类
- 连接:表示两个对象共享一个消息
- 消息:组成:发送者,接收者,活动。消息可以:顺序执行、添加条件限制发送、 创建带有消息的对象实例、执行迭代。
- 组成:活动者,对象,连接,消息
技术应用
- 画图步骤:(*为可选)
- 确定交互上下文
- 确定参与的活动者or对象
- *为每个对象设置初始特性
- 确定活动者or对象之间连接
- 从引发交互的初始消息开始,将信息附到相应连接上,用带.的编号表示嵌套
- 细化
# 比较
- 顺序图和通信图都是通过描述对象和消息来表示系统动态行为(动态建模)
- 两者都直观规定了发送对象和接收对象的责任
- 语义上都是等价的
# 状态图和活动图
# 概念
- 状态图对类的对象生存周期来描述对象随时间变化的动态行为
- 活动图本质是流程图,跨不同时间活动的控制流
# 状态图
概述
- 对象的生命周期中满足某条件or等待某事件的一个条件和状况
- 状态是对对象属性值的抽象
组成:状态、转换、事件、活动、动作
- 状态:圆角矩形
- 组成:名称,进入or退出动作,内部转换,子状态,延迟事件
- 转换:带箭头直线,从一个状态到另一个。
- 组成:源状态,目标状态,触发事件,监护条件,动作
- 转换进入的状态是活动状态,离开的状态是非活动状态
- 事件:在转换的线上
- 动作:在状态里,发生事件时的处理
- 活动:也在状态里
- 菱形:条件判断
- 状态:圆角矩形
应用
- 对一个对象按事件排序方法建模
- 强调从状态到状态的控制流的状态
- 反应型对象:指这个对象可能处于稳定状态
- 特点:
- 相应外部事件
- 具有清晰生命周期
- 当前和过去行为存在依赖关系
- 反应后又变为空闲状态,等待下一次事件
步骤
- 寻找主要状态
- 确定状态转换
- 细化活动和转换
- 展开细节
# 活动图
概述
- 描述系统事件变化的行为
- 作用:是对系统的行为建模
- 两个或多个类对象之间的过程控制流
- 是一种特殊形式的状态机
组成:状态、转移、分支、分叉和汇合、泳道、对象流
- 转移:两个状态间的一种关系
- 分支与合并:无条件的动作流,有条件的动作流
- 分叉和汇合:表示并行发生的事件流,汇合用于同步并发分支,每个汇合可以有2or多个输 入转换和一个输出转换,分叉用来描述并发线程。
- 泳道:
- 将活动图中的活动划分成若干组,每个活动只能明确属于一个分区,分区可以用垂直 or水平实线画出。
- 分区没有顺序
- 动作流和对象流允许穿越分割线
- 对象流:动作使用对象or动作对对象的影响。
- 特点:一个对象可以由多个动作操纵,同一个对象可以多次出现
动作状态:指通过完成转换向另一个状态
- 特性:原子性,不可中断性,瞬时性
- 动作状态(只有一个动作)是活动状态的一个特例。
- 活动状态的内部活动可以用另一个活动图表示
建模
- 为工作流建模
- 为对象的操作建模
# 活动图与状态图比较
活动图与状态图都是状态机的表现形式
本质区别:
- 活动图着重表现活动间的控制流,是内部处理驱动的流程,强调控制流
- 状态图是着重表现状态间的转换,主要有外部事件参与。
活动图本质上是一种流程图,但活动图是面向对象的,流程图是面向对象的。