当前位置:文档之家› 第4章类图及对象图-其他

第4章类图及对象图-其他


39
例如:
40
注意点:
7、描绘类图时,应根据所要表现的应用 需要来提取要素,绘制类图。
41
例如:
描述公司与个人雇佣关系的类图。
方法1:
方法2:
42
问题为:
提取企业与个人雇佣关系的类图。
一个企业可以雇佣多个人员。企业的属性包括 名称、住址、电话、简况。人员的情况包括姓名、 年龄、性别、住址、电话、简历等。雇佣的信息包 括雇佣的开始日期、截止日期,简要说明等。双方 要签订雇佣合同。雇佣还涉及到人员所从事的工作 岗位。
第 章 类图及对象图-其他
4.5类图的阅读 4.6绘制类图 4.7几个特殊问题
4
1
4.5 类图的阅读
1. 2. 3. 4. 有哪些类 类之间存在的关系 多重性 类图的结构特点以及各个属性和方法的含义
2
4.5 类图的阅读
3
4.5 类图的阅读
读图过程 • 读出类:
– Order、OrderItem、Customer、Consignee、DeliverOrder、 Peddlery、Prodcut
– 分析信息
• 名词、名词短语 • 动词、动词短语
• 使用CRC卡片 (class Responsibility collaborator)分析寻找类
– 脑力风暴收集信息
– 关键业务用类表示,其他卡片作为属性
19
2.寻找类
4.6.2 绘制类图
• 确定潜在的对象类
– 通常陈述中的名词或名词短语是可能的潜在对象,他们以不同的形 式展示出来,如:
4.6.2 绘制类图
4.实例
• 得到候选类
• 在使用“名词动词法”寻找类的时候,很多团队会在此耗 费大量的时间,特别是对于中大型项目,这样很容易迷失 方向。其实在此主要目的是对问题领域建立概要的了解, 无需太过咬文嚼字
28
4.6.2 绘制类图
4.实例
• 关联分析、建模、多重性分析,再建模
29
4.6.2 绘制类图
– 是否有系统必须处理的设备? – 是否有组织部分(organization parts)?
– 业务中的执行者扮演什么角色?这些角色可以看作类,如客户、操 作员等。
21
4.6.2 绘制类图
3.定义类
• 标识属性
– 属性表示类的稳定特征,即为了完成客户规定的目标所必须保存的 类的信息,一般可以从问题陈述中提取出或通过对类的理解而辨识 出属性。 – 分析员可以再次研究问题陈述,选择哪些应属于该对象的内容,同 事对每个对象回答下列问题:“在当前的问题范围内,什么数据项 (复合的和/或基本的)完整地定义了该对象?”
• 外部实体(如其它系统、设备、人员),他们生产或消费计算机系统 所使用的信息 • 物体(如报告、显示、信函、信号),它们是问题域的一部分 • 发生的事物或事件(如,性能改变或完成一组机器人移动动作),它 们出现在系统运行的环境中 • 角色(如管理者、工程师、销售员),他们由与系统交互的人扮演
• 组织单位(如,部分、小组、小队),他们与一个应用有关
31
练习1:
绘制图书馆图书借阅管理的类图。
对于图书馆里的每一种图书,计算机管理目录 中包括:书名、作者、ISBN号、出版社、单价。每 一种图书馆都藏多册,每一册图书对应着一个唯一 的图书编号。有许多注册读者,读者的信息包括读 者编号、姓名、出生日期、职业、电话、通信地址、 邮政编码、邮箱。每一个读者拥有一个借书证,借 书证包括读者编号、注册日期、读者类型。读者每 次可以凭借书证借图书,图书馆要对读者借书登记 借书记录,借书记录中登记读者、所借图书、借出 日期、返还日期、管理员等信息。 32
• 统一分析类
9
4.6.1 用例分析
分析类
10
4.6.1 用例分析
分析类 • 边界类 • 实体类 • 控制类
11
4.6.1 用例分析
边界类 • 位于系统于边界的交界处,如窗体、对话框、报表、与外 部设备或系统交互的类等
12
4.6.1 用例分析
实体类 • 保存永久信息,最终可能映射数据库中的表和字段
4.5 类图的阅读
一张复杂的类图
7
第 章 类图及对象图
4
4.6 绘制类图
4.6.1 用例分析 4.6.2 绘制类图
8
4.6.1 用例分析
分析对象行为 • 补充用例描述 • 对每一个用例实现
– 从用例行为中发现(分析)类
– 把用例行为分发给(分析)类
• 对每一个(分析)类
– 描述职责
– 描述属性和关系
4
4.5 类图的阅读
读图过程 • 多重性:用来说明关联的两个类之间的数量关系
5
4.5 类图的阅读
读图过程
• 理解方法和图:
– Order类,有两个方法:dispatch()和close(),从名字中可以 猜出它们分别实现“分拆订单生成送货单”和“完成订单”
– DeliveOrder()类中则有一个Close()方法,同理它应该表示“完成送 货”
– 而在OrderItem中有一个stateChange()方法和deliverState,不难 猜出它就是用来改变其“是否交给送货人”标志位的 – 先调用Order的dispatch()方法,它将根据其包含的OrderItem中 产品信息,来按供应商户分拆成若干个DeliverOrder。商户登录系 统后就可以获取其DeliverOrder,并在执行完后调用close()方法。 这时,就调用OrderItem的stateChange()方法来改为其状态。同 时再调用Order的close()方法,判断该Order的所有的OrderItem 6 是否都已经送到了,如果是就将其真正close掉
24
4.6.2 绘制类图
4.实例
• 发现类
• 小王是一个爱书之人,家里各类书籍已过千册,平时又时 常有朋友外借,因此需要一个个人图书管理系统。该系统 应该能够将书籍的基本信息按计算机类、非计算机类分别 建档,实现按书名、作者、类别、出版社等关键字的组合 查询功能。在使用系统录入新书籍时系统会自动按规则生 成书号,以修改信息,但不能够删除记录。该系统还应该 能够对书籍的外借情况进行记录,可对外借情况列出打印。 另外,还希望能够对书籍的购买金额、册数按特定时限进 行统计。
• 为控制时间的发生而监控对象的操作
23
4.6.2 绘制类图
3.定义类
• 协作者
– 一个类可以用它自己的操作去操纵它自己的属性,从而完成某一特 定的责任,一个类也可和其它类协作来完成某个责任。如果一个对 象为了完成某个责任需要向其它对象发送消息,则我们说该对象和 另一对象协作。协作实际上标识了类间的关系。 – 为了帮助协作者,可以检索类间的类属关系。如果两个类具有整体 与部分关系(一个对象是另一个对象的一部分),或者一个类必须 从另一个类获取信息,或者一个类依赖于(depends-upon)另一个 类,则他们间往往有协作关系。
• 设计类
– 针对具体的语言,考虑类的实现细节
17
4.6.2 绘制类图2Leabharlann 步骤• 分析问题域,确定需求
• 寻找类,确定类的含义和职责 • 定义类的属性和操作 • 确定类之间的关系 • 绘制类图
18
4.6.2 绘制类图
2.寻找类
• 使用名词/动词分析寻找类
– 收集相关信息
• 补充的需求规格说明 • 用例 • 项目词汇表 • 其他文档
25
4.6.2 绘制类图
4.实例
• 筛选备选类
– “小王”、“人”、“家里”很明显是系统外的概念,无需对其建 模
– 而“个人图书管理系统”、“系统”指的就是将要开发的系统,即 系统本身,也无需对其进行建模
– “书籍”是一个很重要的类,而“书名”、“作者”、“类别”、 “出版社”、“书号”则都是用来描述书籍的基本信息的,因此该 作为“书籍”类的属性处理,而“规则”是指书号的生成规则,书 号是书籍的一个属性,因此“规则”可以作为编写“书籍”类构造 函数的指南
4.实例
• 职责分析
– 书籍类:从需求描述中,可找到书名、类别、作者、出版社;同时 从统计得需求中,可得知“定价”也是一个关键的成员变量
– 书籍列表类:书籍列表就是全部得藏书列表,其主要得成员方法是 新增、修改、查询(按关键字查询)、统计(按特定时限统计册数 与金额)
– 借阅记录类:借阅人(朋友)、借阅时间 – 借阅记录列表类:主要职责就是添加记录(借出)、删除记录(归 还)以及打印借阅记录
– “基本信息”则是书号、作者、类别等描述书籍基本信息统称, “关键字”则是代表其中之一,因此无需对其建模 26
– “功能”、“新书籍”、“信息”、“记录”都是在描述需求时使
4.6.2 绘制类图
4.实例
• 筛选修改类
– “计算机类”、“非计算机类”是该系统中图书的两大分类,因此 应该对其建模,并改名为“计算机类书籍”和“非计算机类书籍”, 以减少歧义 – “外借情况”则是用来表示一次借阅行为,应该成为一个候选类, 多个外借情况将组成“外借情况列表”,而外借情况中一个很重要 的角色是“朋友”——借阅主体。虽然到本系统中并不需要建立 “朋友”的资料库,但考虑可能需要列出某个朋友的借阅情况,因 此还是将其列为候选类。为了能够更好地表述,将“外借情况”改 名为“借阅记录”,而将“外借情况列表”改名为“借阅记录列表” – “购买金额”、“册数”都是统计的结构,是一个数字,因此不需 建模,而“特定时限”则是统计的范围,也无需建模,不过从分析 27 中,可以返现,隐藏着一个关键类——书籍列表,也就是执行统计
• 场所(如制造场所、装载码头),它们建立问题和系统所有功能的环 境 • 构造物(如四轮交通工具、计算机),它们定义一类对象,或者定义 20 对象的相关类
4.6.2 绘制类图
相关主题