Professional Documents
Culture Documents
类图
ACCP V4.0
回顾
用例图用于描述系统的需求
用例之间的关系有:包含或扩展关系
用例图用于表示系统的行为或功能
用例图的各个组成部分包括:系统、参与者和用
例
Rational XDE 可以方便的编写用例图
2 ACCP V4.0
目标
标识和理解关键抽象
标识所需的类
标识所需的类属性和方法
讨论类之间的各种关系
掌握如何在 Rational XDE 中绘制类图
3 ACCP V4.0
关键抽象
拍卖和拍卖物项 关键抽象
关键抽象是在系统范围上的一些重要概念,主要
是从需求中得到(例如词汇表、业务规约以及用
信用卡
例模型),这些概念也会涉及到系统所针对的业
业务实体 实体之间的关系
务领域知识。关键抽象通常表现为系统的实体
竞拍 ,
其重要的原因为:
分类 例如:一个拍卖就
包含一个拍卖物项
强调与系统设计有关的实体
在线拍卖
用户帐户和未付款项
排除系统外部多余的实体
最后,关键抽象成为分析模型中的类
4 ACCP V4.0
候选类
在分析的初始过程中阐明的类称为候选类
冗余类 无关类
多个类定义同一 任何不属于应用程
个实体 序域的类都需去除
标识类的角色 模糊类
保留基类,而排除 没有明确功能的
所有作为角色的类 类称为模糊类
标识候选类
5 ACCP V4.0
识别类 3-1
类是一组对象,这些对象具有共同的属性和共同的行为
类是创建对象的模板
类可捕获对象的本质
对象是类的实例化
6 ACCP V4.0
识别类 3-2
在标识类时,需查找:
有形事物
事件
扮演的角色
交互
位置
组织单位
7 ACCP V4.0
识别类 3-3
标识的类也称为候选类。可从以下方面标识类:
用例
用例 应用程序专家
分析以下方面可标识其他候选类:
以前的系统
相似的系统
候选类
相似的系统
以前的系统
8 ACCP V4.0
类图 2-1
类是对一组对象的描述,这些对象具有相似的属性、操作、关系
和行为。
结构 说明 语法
对一组对象的描述,这些对象具有相同
类
的属性、操作、方法、关系和语义
类名称 Window
类名称
size: Size
属性 属性 visibility: boolean
方法 display()
操作 hide()
9 ACCP V4.0
类图 2-2
类名称 属性值
类名称通常可对应于现实生活中的实体
属性类型
Order
类属性 类名称
AccountHolder
属性名称 -id: integer
-quantity: integer = 0 属性
属性(:特性,特征) -Name: String
-Age: Integer
<<Constructor>>
+Status: Boolean
访问模式 属性是进一步描述对象实例的数据。
+Order(id: integer)
# Hobby : String
<<accessor>>
+getQuantity(): integer
<<mutator>>
+setQuantity(id: integer) 方法
类方法 <<business logic>>
AccountHolder
+addOrder(id: integer)
-Name : String
操作(:方法、服务和行为) +cancelOrder(id:integer)
-Age : Integer
+Status : Boolean
操作是对象可执行的过程。
# Hobby : String参数类型
方法名
+GetName(): String 参数名称
称
+SetName(sName : String)
10 ACCP V4.0
在 Rational XDE 中构建类图
创建一个项目
新建一个类图
添加UML类
添加属性和操作(方法)
11 ACCP V4.0
对象图
实例化于
对象 类
CAH : AccountHolder
Name = “Charles”
Age = 35
Status = True
属性变量 赋予的值
12 ACCP V4.0
类关系
类不是孤立存在的
因此,类与类之间创建了一种关系:
组合 聚合
类关系可能指明某种共享关系
类关系可能指明某种类型的语义连接
接口与实现 类关系 依赖
关联 泛化与继承
13 ACCP V4.0
关联 2-1
结构 说明 语法
两个或多个类符之间的一种关系,此
关联 关系涉及类的各个实例之间的连接
识别类之后,需要识别关联
多重性(multiplicity)定义有多少对象参与了某个关系
各个类都可能与自身有关联
雇员 部门 公司
示例:“雇员为公司工作”
14 ACCP V4.0
关联 2-2
public class Person {
/** @modelguid {AE706A50-C99B-4002-B0BC-8BF3830FC5A7} */
private Car _Vehicle;
}
15 ACCP V4.0
泛化 2-1
结构 说明 语法
泛化 它是较一般类和较具体类之间的分类关系
泛化:标识各个类之间的共同性。
形状
抽象类 父类
指明特化类(子类)的对象可取代泛化类(父类)的对象。
{抽象}
是“is-a”关系。
泛化关系
圆圈 子类
16 ACCP V4.0
泛化 2-2
public class Printer {
/** @modelguid {949C10B9-AFE3-40BB-8201-3B87B5E23BB0} */
public void print() {
}
}
17 ACCP V4.0
依赖 2-1
结构 说明 语法
如果一个类依靠另一个类的服务来完成其
依存
角色,则它们之间的关系称为依存关系
依赖关系指明两个或多个类之间的语义关系,尽管两个类之间没有明确
的关联,一个类发生变化也会导致另一个类发生变化。
可用一种构造型来表示依赖的类型。
18 ACCP V4.0
依赖 2-2
public class Worker {
/** @modelguid {48434AC5-09B2-4769-A478-17A9CCF08596} */
public void purchaseCleaner(Cleaner clean) {
//use cleaner
//forget about cleaner
}
}
19 ACCP V4.0
聚合 2-1
结构 说明 语法
一种特殊形式的关联,指定了聚合(整
聚合
体)和组件部分之间的整体 - 部分关系
共享聚合(空心菱形)意味着在组合端的多重性有多个。
2..* 1..*
汽车
模拟“整体-部分”关系。 门 房子
整体 部分
20 ACCP V4.0
聚合 2-2
public class Computer {
/** @modelguid {5B07F355-C068-4F71-B2CC-
E5B5E9C298ED} */
private KeyBoard _KeyBoard;
}
21 ACCP V4.0
组合 2-1
结构 说明 语法
一种特殊形式的关联,指定了聚合(整
组合
体)和组件部分之间的整体-部分关系
这是一种更强的聚合,表达了类与类之间更强的耦合
组合的图形为实心菱形。
圆圈 点 圆圈
容器负责创建和删除各个部分。
点
多边形
22 ACCP V4.0
组合 2-2
import java.util.ArrayList;
/** @modelguid {AA7857DF-9F6C-4A65-A41D-E4A92998A343} */
public class Motor {
/** @modelguid {0BFB212F-9DCE-4D48-AE12-A2DDEA980E17} */
private ArrayList _Cogs = new ArrayList();
23 ACCP V4.0
接口和实现 2-1
• 类接口用于描述类的
外部可见行为。 符号
• 它呈现为一个圆圈与
名称一同出现。
• 类的实现是其内部视
图,涵盖了其行为的
验证 秘密
• 类的接口提供了其外
部视图,因此在隐藏
其结构以及其行为的
秘密时,强调了抽象
24 ACCP V4.0
接口和实现2-2
public interface ICargoTransport {
/** @modelguid {66855DC0-6F08-42DE-ADA1-FD06625C8605} */
public void loadCargo();
}
25 ACCP V4.0
绘制”在线拍卖”系统的类图
26 ACCP V4.0
总结
关键抽象是一个类或一个对象,可组成问题域词
汇的一部分
在派生关键抽象时,一定要记住抽象的层次不应
过高或过低
UML类是一个包括类名、属性和操作三个部分的
矩形
可通过以下方面标识类:
需求说明
用例
应用程序专家
研究系统
27 ACCP V4.0
类之间的各种类型的关系包括:
关联
泛化
依赖
聚合
组合
接口与实现
28 ACCP V4.0