当前课程知识点:软件理论与工程 > 第4章 UML方法 > 4.4 UML 图细节(上) > 4.4 UML 图细节(上)
大家好
下面我们一起来详细的了解一下
UML图中的
所有图的详细内容
我们已经知道UML的图中
有静态图和动态图
静态图当中有用例图
类图
对象图
构件图和部署图
动态图当中有顺序图
协作图
状态图和活动图
我们下面的时间就把这九种图
分别详细的了解一下
我们先看一下类图
类图的表示符号
如这张表格里面所示
最开始的
三个矩形
拼凑在一起
形成一个类的表示元素
第一栏是类名
第二栏是类的属性
第三栏是类的操作
包
包表示一个类图的集合
在一个包的内部
可以包含一些相关的类
包是一个组织图形元素
对象
对象是由两个小的矩形拼成的一个矩形
表示对象是类的一个实例
再下面是关联
关联用于表示类的对象之间的关系
其特殊的形式有
组成关联和聚集关联
聚集关联用空心菱形加上一个直线
而组成关系由一个实心的菱形
加上一个直线来表示
聚集关联用以表示类的对象之间的关系是
整体与部分的关系
组成关联用于表示类的对象之间的关系是
整体拥有各个部分
且部分与整体是共存亡的关系
另外 在类图当中我们还有可能用到的符号有
连接
用一根线来表示
连接用于表示对象之间的关联关系的一个实例
另外还有泛化关系和依赖关系
泛化关系用一个直线加上一个空心三角来表示
泛化关系还是可以叫做继承关系
定义了类和包之间的
一般元素和特殊元素之间的分类关系
依赖关系用一个虚线的箭头来表示
表示两个类之间的依赖关系
有两个类或者是包 X Y
修改X的定义会引起对外的定义的修改
我们就把这样的情况叫做Y依赖于X
另外 在每一个图的元素当中都会有
注释体
用一个斜角矩形
它用来说明
UML图中的某一个模型元素
的一些补充含义
另外还有一个注释连接
用来说明注释体
与它所补充说明的元素之间的对应关系
类图是把现实事物抽象出来
用图来表示
比如
我们WashingMachine这个类
它的类名叫做WashingMachine
WashingMachine这个类
它的属性有
brandName
modeName
seriaNumber
和capacity
这个类有相关的一些属性
和相关的一些操作
它的操作有 acceptColthes()
acceptDetergent()
有turnOn()
turnOff()等操作
我们需要注意的是
类名 属性名和操作名之间要有间隔来分开
在UML中
由多个单词组成的类名
每个单词的首字母要大写
且单词和单词之间不用空格
例如我们刚才看到那个类
WashingMachine的
W和M要大写
另外Washing和Machine之间不用空格
属性名和操作名也遵从相同的约定
但其首字母可以不用大写
比如我们刚才的操作
acceptColthes()
我们的a不需要大写
另外 在操作名后面要有一对括号
表示它是一个操作
我们看一个具体的类图的例子
这个类图显示了学生选课
教师教课
和
课程安排的一个类图模型
学生这个类可以选择课程这个类
之间用选课这个关联关系连接
选课这个关系可以有
它自己的一些属性
所以选课情况
也被抽象成为一个类
教师可以讲授课程
在教师和课程之间
用连接关系讲授
来连接起来
另外
课程和开课安排之间
开课安排也被抽象出了单独的一个类
开课安排用来描述不同课的
课程安排相关的信息
这个就是类图的一个简单的例子
看了类图 我们下面看一下对象图
Object diagram
对象的图标也是一个矩形
和类图的图标是一样的
但是对象名的下面要有一个下滑线
表示它是一个对象
在我们这个图的左边的这个图标里
具体的实例的名字
位于冒号的左边
而该实例所属的类的名称
位于冒号的右边
比如有一个对象叫做
myWasher:WashingMachine
它是属于WashingMachine这个类的
实例的名字
以小写字母开头
或者 它也可以是一个匿名的对象
像我们的图中的右半部分所显示的
并没有一个对象名
在冒号的前边没有对象名
但是冒号的后边显示了
这个匿名对象所属的类的名称
这仅仅意味着你指明了对象所属的类
但是你并没有提供一个具体的类型
并没有提供一个具体的对象名
对象图
显示的是在某个时刻
对象和对象之间的关系
比如我们图中的这个对象图
显示的是
公司Company
和不同的部门
以及部门当中的
员工之间的一个对象之间的关系
公司c:Company这样一个对象
属于Company这个类
c是它的对象名字
这个对象
它有两个Department
d1和d2
那么d1和d2是两个对象实例
d1属于Department
d2也属于Department
还有d3
然后再有一个员工p
它是属于Person这个类的一个对象
那么p呢 是属于
d3这个Department
员工这个对象p
它有一个
Contactinformation这样一个类
那么 这个类有一个匿名的对象
Contactinformation
这张图就显示了
Company Department
和Person
还有Contactinformation
这几个对象之间的一些关系
那么这些对象用线条连接起来
好 这是对象图的一个例子
下面我们看一下 用例图
用例图是需求模型当中最重要的一个图
用例图是从用户的观点
对系统的行为的一个概述
代表洗衣机用户的这样一个直立的小人
被称作为参与者
actor
椭圆形代表用例
用例就是参与者想要系统做的事情
参与者 他是发起用例的实体
可以是一个人
也可以是另外一个系统
参与者代表一个角色
而不是某个具体的人
用例位于一个代表着整个系统的矩形当中
而参与者
是在矩形之外
参与者
代表参与者在系统的外部
用例图有一些元素和符号
比如一个实线的椭圆代表一个用例
一个直立的小人代表参与者
一个矩形代表系统的边界
直线代表关联
一个箭头上面备注了
《extend》代表扩展关系
一个箭头上面《include》
代表包含关系
另外一个实线加一个空心的三角形
代表泛化关系
还有两个就是在每个图中都会用到的
注释体和注释连接元素符号
我们看一个例子
旅客要订票和查看今日的航班
这个里面 我们画出了两个用例图
一个是旅客订票用例
和查看今日航班用例
大家可以看出
这个用例的命名是站在用户的角度
从用户的观点出发来
定义的用例的名称
订票和查看今日航班
这个图的另外一个部分
右边的部分
是旅客处理订票用例
和显示今日航班用例
那么这个用例名
大家可以看出
是从系统的角度出发
定义的用例名称
那我们应该是从用户的角度
定义用例的名称
所以在这个例子当中
我们更倾向于用左边的用例名称
而不用右边的用例名称
用例 除了有用例图
在用例当中有很多细节的内容
这些内容我们可以用
用例规约来进行补充说明
在用例规约当中
我们要设定它的前置条件
它的基本事件流
和它的备选事件流
以及它的后置条件
这个用例规约就显示了
这个用例的ID
这个用例的参与者
以及这个用例的一些描述
以及很重要的 它的前置条件
基本事件流 被选事件流和它的后置条件
我们用用例规约来补充说明
在
用例图中
不能够详尽展示的用例的细节内容
再下面我们看一下构件图
构件图显示的是软件组成中的一个单元
图中的构件图显示在一个包里面
我们有五个构件
这个一个包里面还有一个子包
这个子包里面又包括了两个构件
那么 外边的这个是包的表示符号
里边的是构件的表示符号
构件图可能用到的元素符号有
构件
构件代表可执行的物理代码模块
还有接口
还有依赖关系
以及注释体
和注释连接
另外还有部署图
部署图是
描述了一个运行的硬件节点
以及在这些节点上运行的软件组件的
静态视图
部署图显示了系统的硬件
安装在硬件上的软件
以及异构的机器之间的连接
显示了基于计算机系统的
物理系统结构关系
部署图用到的元素符号 包括
节点
是用一个立方体来表示的
还有构件
还有对象
还有接口
以及连接
依赖关系
另外还有注释体和注释连接
那我们下面看一个部署图的例子
这张图显示客户A
它是属于一个个人电脑PC
个人电脑PC 客户A的这个节点
和服务器
通过《TCP/IP》协议进行连接
服务器和数据库服务器
通过《DecNet》协议进行连接
客户B的个人电脑
也通过《TCP/IP》协议
与服务器进行连接
那么 在这个部署图里面
我们有四个物理节点
就是客户A的个人电脑
客户B的个人电脑
以及服务器02
和我们的数据库服务器VAX
那么从这张图大家可以看出来
部署图显示的是
物理节点之间的连接关系
以及它们连接具有的属性
-课程概述
-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章 习题