当前课程知识点:软件理论与工程 > 第4章 UML方法 > 4.3 UML关系和图 > 4.3 UML关系和图
大家好
这一部分
我们来讨论一下
UML建模当中的
关系
和UML的图的一个概述
UML有事物
关系和图
三个结构块组成
在事物当中有结构事物
行为事物
分组事物和辅助事物
那么关系呢
包括
关联关系
依赖关系
泛化关系
和实现关系
下面我们就分头来看一下
这几种关系
UML中的“事物”
和“事物之间的关系”
构成了UML的模型元素
UML事物之间的关系
能够把事物联系在一起
组成有意义的结构模型
每一个模型元素
都有一个与之相对应的图形元素
UML中的关系
包括
关联关系
依赖关系
泛化关系
实现关系
聚合关系和组合关系
我们先看一下关联关系
关联关系表示类与类之间的连接
它使得一个类知道另外一个类的属性和方法
关联关系连接元素和链接实例
它可以表示一种
has a的一个关系
在模型的图形符号方面
它是由一个实线
加上一个箭头来组成
在关联的箭头两端
可以标注关联双方的角色
和多重性
比如我们这张图上显示了
Player这个类
和Team这个类
一个Team可以有很多个Player
Player Play on a Team
这个就是一个关联关系
下面我们再看一下依赖关系
依赖关系描述一个元素对另一个元素的依附
依赖关系用源模型
指向目标模型的带箭头的虚线表示
它含有一种use a的一个含义
一个元素
(被依赖事物的提供者)
它的变化将会影响到另一个元素
(依赖事物的接收者)
或者向其(接收者)提供一些信息
在这个图中 我们看到有一个例子
是Human要依赖Air
Human这个类要依赖Air这个类
人类要依赖于空气
那么 这个关联关系中
被依赖的事物的提供者就是Air
那么
Air的变化将会影响到
Human这个类的一些变化
再下面是泛化关系
泛化关系也称为继承关系
泛化关系
用一条带空心三角的箭头的实线来表示
它是由
子类指向父类
比如在这个图当中的
根节点Animal
那么它泛化出来有三个
子类
有
Amphibian
Mammal和Reptile
这三个子类
都继承了Animal的一些基本的特征
同时
它还有各自具体的个性化的特征
这就是我们继承
当中的一个具体的概念
在泛化关系当中
最顶上的是根节点
最下面的是叶子节点
下一层对上一层进行属性或者是方法的继承
我们然后再看一下实现关系
实现关系描述了
一个元素实现另一个元素
接口声明了一个规定的服务的约定
接口的实现负责执行接口的全部语义
定义
并实现该项服务
其中接口只是行为的说明
而不是结构
也不是具体的实现
在图中
显示了接口
对它所关联的类的一个实现关系
下面是一个聚合关系
聚合其实是一个强版本的关联
它由空心菱形
加上实线
加上一个箭头
来组成
它表示的是一个own a的一个关系
比如图中这个例子
聚合关系显示的是
Human
箭头指向了Heart
那么
这个图形的元素表达的含义是说
Human own a Heart
也就是人
有一个心脏
Human own a Heart
这是一个聚合的关系
除了聚合关系
我们还有一种是
组合关系
它与聚合关系的区别在于
符号上是用一个实心的菱形
加上实线
加上箭头
那么组合关系表达的含义是
is part of
表示
a这个类
是另外一个b这个类的一个部分
或者是说b这个类
是由a这个部分
a这个类组成的
组合是关系当中最强的一个版本
整体类由部分类组成
部分类需要整体类才能够存在
销毁整体类将同时会销毁部分类
在图中这个例子
Human
和Heart之间这个组合关系
表示的是
Heart is part of Human
当Human这个整体类
如果去掉销毁的时候
Heart这个部分类
自然也会随之而销毁
那么刚才我们看了UML当中的关系
有关联关系
泛化关系
依赖关系
和实现关系
那么UML当中是由事物
关系
和最重要的图
组成的
那么我们看完了事物 看完了关系
下面我们来看一下
UML当中的图
UML当中有九种图
其中有五种是静态模型的图
和四种动态模型的图
静态模型的图用来描述系统的结构
动态模型的图用来描述系统的行为
在UML图中
静态结构的图包括
类图
对象图
构件图
部署图
和
用例图
在UML当中的动态模型图包括
顺序图
协作图
状态图和活动图
那么 这一章显示了
我们的静态结构图
和动态行为图的
英文的表示
静态结构的Static Diagrams
包括Use-Case Diagrams
Class Diagrams
Object Diagrams
Component Diagrams
和
Deployment Diagrams
那么 我们的行为的图
Dynamic Diagrams
包括Sequence Diagrams
Collaboration Diagrams
Statechart Diagrams
和Activity Diagrams
那么这些图具体可以表示什么样的模型元素
和什么样的含义呢
我们的静态图中的表示结构的部分有类图
类图表示类
以及类之间的相互关系
对象图跟类图类似
表示对象以及对象之间的相互关系
另外 我们的静态图还有
跟实现相关的
构件图和部署图
构件图表示的是构件及其相互依赖关系
部署图则描述的构件
在各个物理节点上的部署关系
那么
还有 我们有一些动态的行为的图
有顺序图
协作图
状态图和活动图
顺序图强调的是
时间顺序的交互关系的图
协作图强调的是对象协作的交互的图
顺序图和协作图都是交互图
那么 还有状态图和活动图
是表示行为的图
状态图表示的是类
经过一系列的状态变化
活动图可以用来对工作流进行建模
另外很重要的一个就是用例图
用例图是需求捕获和测试的重要依据
用例图是需求分析的时候
给用户展现的
系统可以提供的行为
用户要使用的系统的一些功能
UML除了有九种图
静态图五种
动态图四种
另外还有RUP的4+1的视图
4+1的视图
像我们在这张图上展示的
是以用例视图为核心
可以开发出来逻辑视图
进程视图
实现视图
和
部署视图
那么我们来分头看一下这五种视图的
具体的含义
首先
核心是用例视图
用例试图描述系统应具备的功能
也就是被称为参与者的外部用户
所能观察到的功能
用例是系统的一个功能的单元
用例可以被描述为参与者与系统之间的一次
交互作用
参与者可以是一个用户
也可以是另外一个系统
客户对系统要求的功能
被当作多个用例
在用例图中进行描述
其中的一个用例
就是对系统的一个用法的通用描述
用例模型的用途就是列出系统的用例和参与者
并显示哪个参与者
参与了哪个用例的执行
用例视图是其他视图的核心
用例视图的内容直接驱动了其他视图的开发
以用例视图为核心驱动
首先 我们应该开发出来系统的逻辑视图
逻辑试图描述用例视图中提出的系统的
功能的实现
与用例视图相比
逻辑视图主要关注系统的内部
它既描述了系统的静态结构
类
对象
以及它们之间的关系
也描述了系统内部的动态协作关系
系统的静态结构在类图和对象图中进行描述
而动态模型
则在状态图 时序图
协作图
以及活动图
这四种UML的动态图中进行描述
逻辑视图的使用者主要是设计人员和开发人员
当我们获取了逻辑视图之后
我们可以构建我们的进程视图
进程视图主要考虑资源的有效利用
代码的并行执行
以及
系统环境中异步事件的处理
除了将系统划分为并发执行的控制以外
进程视图还需要处理
线程之间的通信
和同步
进程视图也可以叫做并发视图
它的使用者是开发人员和系统的集成人员
进程视图由状态图
协作图
以及活动图组成
再下面一个视图是组件视图
因为组件是不同类型的代码模块
它是构造应用软件的基本单元
组件视图描述了系统的实现模块
以及它们之间的依赖关系
组件视图
也可以添加组件的其它的附加信息
例如资源的分配
或者是其他管理信息
组件视图主要由组件图构成
它的使用者主要是开发人员
最后一个视图是部署视图
部署视图显示的是系统的物理部署关系
它描述位于节点上的运行实例的部署情况
部署视图主要由部署图来表示
它的使用者是开发人员
系统集成人员
和测试人员
部署视图还允许评估
分配结果
和资源的分配情况
我们刚才讲了UML有九种图
五种静态图和四种动态图
那么我们为什么需要这么多种图
来构造UML模型呢
因为各种不同的UML图
可以让你从多个角度来考察一个系统
要注意的一点是
并不是我们构造的每一个UML模型
都必须包含我们刚才说的
九种所有的图
事实上 大多数的UML模型
只包含其中的一部分图
根据我们系统建模的需要
你选择合适的模型的图
来表达你要表达的系统的内容
原因是
一个系统有多个不同类型的风险承担者
也就是那些在不同的方面
与这个系统有利益相关的人
它们考虑问题的出发角度不同
所关注的特征和关注的侧面不同
所以需要不同的图来进行描述
我们举一个简单的例子
假如我们要构造一个洗衣机相关的一个模型
如果你是一个正在设计一台洗衣机的马达
那么以你的视角来观察系统
会得到一个关于马达的机械原理的一个视图
如果你是正在编写这个洗衣机的操作指令的话
那么 你可能会得到
关于这个洗衣机如何使用的一些步骤的
这样的一幅视图
要是你正在设计洗衣机的整体外观
那么你观察到的这个系统的方式
与你作为一个洗衣机用户观察的方式
就又是不同了
由于我们不同的利益相关者
所关心的问题
想要表达的内容和侧重点不同
所以我们需要不同的图
来构造我们的模型
到现在为止 我们讲述了
UML相关的图
我们的图有
静态图和动态图
有五种静态图
有类图
对象图
用例图
构件图和部署图
我们有四种动态图
包括顺序图
包括状态图
包括协作图
今天我们的内容就分享到这里
谢谢大家
-课程概述
-1.1 软件的本质
-1.2 软件工程
--1.2 软件工程
-1.3 软件过程结构
-1.4 过程模型
--1.4 过程模型
-1.5 敏捷开发方法
-第1章 习题
--第1章 习题
-2.1 需求工程过程
-2.2 需求获取
--2.2 需求获取
-2.3 需求分析
--2.3 需求分析
-2.4 过程建模
--2.4 过程建模
-2.5 面向对象建模
-第2章 习题
--第2章 习题
-3.1 设计概述
--3.1 设计概述
-3.2 设计的概念
-3.3 设计模型元素
-3.4 体系结构概述
-3.5 体系结构风格
-3.6 构件级设计
-3.7 UI设计
--3.7 UI设计
-3.8 基于模式的设计
-第3章 习题
--第3章 习题
-4.1 UML概述
-4.2 UML 及UML中的事物
-4.3 UML关系和图
-4.4 UML 图细节(上)
-4.4 UML 图细节(下)
-第4章 习题
--第4章 习题
-5.1 软件测试策略
-5.2 测试传统的应用系统
-5.3 测试面向对象的应用系统
-5.4 测试web应用系统
-5.5 测试移动应用系统
-第5章 习题
--第5章 习题
-6.1 软件项目估算
-6.2 软件过程管理
-6.3 软件配置管理
-6.4 项目版本控制及调试
-第6章 习题
--第6章 习题