C++编程失乐园

致力于解决论坛的不足,探讨C++的原理

UML随笔 之 类图描述

A.        类图

类

在 类图 中 类 用矩形框 来 表示, 它 的 属 性和操作分 别 列在分格中,若不需要表 达详细 信息 时 ,分格可以省略。

类间关 系

在 类图 中,除了需要描述 单独 的 类 的名 称 、 属 性和操作外,我 们还 需要描述 类 之 间 的 联 系,因 为没 有 类 是 单独 存在的, 它们 通常需要和 别 的 类协 作, 创 造比 单独 工作更大的 语义 。在UML 类图 中, 关 系用 类 框之 间 的 连线来 表示, 连线 上和 连线 端 头处 的不同修 饰 符表示不同的 关 系。 类 之 间 的 关 系有 继 承(泛化)、 关联 、聚合和 组 合。

1.        继 承:指的是一 个类 ( 称为 子 类 ) 继 承另外的一 个类 ( 称为 基 类 )的功能, 并 增加 它 自己的新功能的能力, 继 承是 类与类 之 间 最常 见 的 关 系。 类图 中 继 承的表示方法是 从 子 类 拉出一 条闭 合的、 单键头 (或三角形)的 实线 指向基 类 。例如, 图 3.2 给 出了MFC中CObject 类 和菜 单类 CMenu的 继 承 关 系。

类 的 继 承在C++中呈 现为 :

class B { }
class A : public B{ }

2.        关联 :指的是模型元素之 间 的一 种语义联 系,是 类 之 间 的一 种 很弱的 联 系。 关联 可以有方向,可以是 单 向 关联 ,也可以是 双 向 关联 。可以 给关联 加上 关联 名 来 描述 关联 的作用。 关联两 端的 类 也可以以某 种 角色 参与关联 ,角色可以具有多重性,表示可以有多少 个对 象 参与关联 。可以通 过关联类进 一步描述 关联 的 属 性、操作以及其他信息。 关联类 通 过 一 条虚线与关联连 接。 对 于 关联 可以加上一些 约 束,以加强 关联 的含 义 。
 
关联 在C++中呈 现为 :

class A{...}
class B{ ...}
A::Function1(B &b) //或A::Function1(B b) //或A::Function1(B *b)

即一 个类 作 为 另一 个类 方法的 参数 。

3.        聚合:指的是整体 与 部分的 关 系。通常在定 义 一 个 整体 类 后,再去分析 这个 整体 类 的 组 成 结构 。 从 而找出一些 组 成 类 , 该 整体 类 和 组 成 类 之 间 就形成了聚合 关 系。例如一 个 航母 编队 包括海空母 舰 、 驱护舰 艇、 舰载飞 机及核 动 力攻 击 潜艇等。需求描述中“包含”、“ 组 成”、“分 为 …部分”等 词 常意味着聚合 关 系。

4.        组 合:也表示 类 之 间 整体和部分的 关 系,但是 组 合 关 系中部分和整体具有 统 一的生存期。一旦整体 对 象不存在,部分 对 象也 将 不存在。部分 对 象 与 整体 对 象之 间 具有共生死的 关 系。

聚合和 组 合的 区别 在于:聚合 关 系是“has-a” 关 系, 组 合 关 系是“contains-a” 关 系;聚合 关 系表示整体 与 部分的 关 系比 较 弱,而 组 合比 较 强;聚合 关 系中代表部分事物的 对 象 与 代表聚合事物的 对 象的生存期无 关 ,一旦 删 除了聚合 对 象不一定就 删 除了代表部分事物的 对 象。 组 合中一旦 删 除了 组 合 对 象,同 时 也就 删 除了代表部分事物的 对 象。

在C++ 语 言中, 从实现 的角度 讲 ,聚合可以表示 为 :

class A {...}
class B { A* a; .....}

即 类 B包含 类 A的指 针 ;

而 组 合可表示 为 :

class A{...}
class B{ A a; ...}

即 类 B包含 类 A的 对 象。

准确的UML 类图 中用空心和 实 心菱形 对 聚合和 组 合 进 行了 区 分。

B.        对 象 图

对 象 图显 示某 时 刻 对 象和 对 象之 间 的 关 系,是 类图 的 变 化,一 个对 象 图 可看成一 个类图 的示例(example), 对 象 图 表示的是 类 的 对 象 实 例而不是 真实 的 类 。由于 对 象存在生命周期,因此 对 象 图 只能在系 统 某一 时间 段存在。

对 象 图 中 并 无新的表示法(除了 对 象名下要加下 划线 以外), 与类图 中的表示法一 样 ,可以 认为 ,只有 对 象而无 类 的 类图 就是一 个 “ 对 象 图 ”。
 
 
在 对 象 图 中, 对 象名可以有三 种 表示形式:

(1) 对 象名: 类 名

(2): 类 名

(3) 对 象名

把“ 动 名 词 ”看作 类图 ,把“ 爱国 ”看作 对 象 图 ,很明 显 , 对 象 图 就是 类图 的一 个 example而已。

posted on 2007-01-21 12:36 木木头 阅读(941) 评论(0)  编辑 收藏 引用 所属分类: UML工程

导航

<2007年1月>
日一二三四五六
31123456
78910111213
14151617181920
21222324252627
28293031123
45678910

统计

常用链接

留言簿(3)

随笔分类(29)

搜索

最新随笔

最新评论