Object-Oriented Analysis and Design Using UML 翻译与学习 (十三)

Refining the Class Design Model

精炼类设计模型

 

目标

完成这个章节,你可以:

1、精炼领域模型的属性

2、精炼领域模型的关系

3、精炼领域模型的方法

4、声明领域模型的构造器

5、注解方法行为

6、使用接口创建组件

 

进程图

 

精炼领域模型的属性

精炼属性设计以下:

1、精炼属性的元数据

2、选择一个合适的数据类型

3、创建派生数据

4、应用封装

 

精炼属性元数据

一个在UML类图中的声明包括以下:

1、名字

2、可见性

3、类型

4、多样性

5、初始值

6、限制性(可变,只添加,冻结之一)

 

语法:[visibility] name [multiplicity] [: type] [= init- value] [{constraint}]

           [可见性] 名字[多样性] [: 类型] [=初始值] [{限制性}]

 

选择一个合适的数据类型

选择一个数据类型是以下的权衡:

1、抽象的透明性

2、计算上的时间

3、计算上的空间

 

 

创建派生属性

在分析时,你可能有一个属性,你知道这个属性可以从其他资源(表)中派生而来。

一个权威的例子是根据一个人的出生日期计算年龄。

 

应用封装

为了应用封装,顺着以下步骤走:

1、让所有属性私有(可见性)

2、为所有可读的属性添加公共访问器方法

3、为所有可写的属性添加公共修改器方法

 

一个封装的例子

 

精炼类关系

在分析和设计之间没有清楚的区别,尤其是对于给类之间的关系建模。

设计经常有以下重点细节:

1、类型:关联,聚合,组合

2、遍历方向(也叫导向)

3、合格的关系

4、声明关系管理方法

5、处理多对多关系

6、处理关系类

 

关系类型

有三种关系类型:

1、关联

2、聚合

3、组合

 

这些关系暗示,相关对象以某种方式绑定到源对象(通常作为一个实例的属性)。

有另外一种关系类型:依赖。依赖表示一个对象引用另一个对象去做某些工作,但是没有实例去保持这个那个对象。

 

关联

“The semantic relationship between two or more classifiers that
specifies connections among their instances.” (OMG page 537)

语义上的两个或多个量词之间的关系,这个关系指定实例之间的连接。

                                                                             ----OMG 537 页

 

 

聚合

“A  special  form  of  association  that  specifies  a  whole-part
relation between the aggregate (whole) and a component part.”
(OMG page 537)

 

它是一个特殊的关联形式,指定了一个在聚合体(整体)和组件部分之间的整体-部分的关系。

                                                                                                                   ----OMG 537 页

 

 

组合

“A  form  of  aggregation  that  requires  that  a  part  instance  be included  in  at  most  one  composite  at  a  time, 

and  that  the composite object is responsible for the creation and destruction of the parts.”  (OMG page 540)

 

一个聚合形式,它要求一个部分实例在一时间被包含在至少一个组合体中,并且这个组合对象是要对部分的创建和销毁负责。

                                                                                                                                                        ---- OMG 540 页

 

 

导向(导航)

一个导向箭头显示对象在运行时遍历(traversal)的方向。

 

在分析时有时候,你不知道软件需要哪个方向的关系导向。这个问题应当在设计时解决。

例如:

 

合格的关联

在一对一或多对多关联中,通过关联给“系统如何访问一个单一元素”建模是经常有效的。

 

关联方法

关联方法让客户端可以访问和改变关联的对象。有三种用例:一对一,一对多,多对多。

一对一关系需要一个实例变量。

 

一对多关系需要使用集合。

 

处理多对多关系

管理多对多关系是个挑战。

考虑在设计阶段放下这个需求。

 

处理多对多关联

如果多对多关联必须被保存,有时你可以在类之间添加一个类,以将多对多简化成两个一对多。

 

处理关联类

一个关联类只能存在于分析模型中。在设计时,它应该被转化为可编程类。

 

可选择性的,关联类可以放到两个主类中间。

 

精炼方法

方法是通过以下工作流方法定义的:

1、CRC分析,它定义责任

2、鲁棒性分析,它在服务类中定义方法

3、设计,它为属性和关联定义访问器和修改器

 

其他方法类型:

1、对象管理

2、单元测试

3、恢复,反转和值得赞美的操作

 

语法:

[visibility] name [({[param] [:type]}*)] [:return-value] [{constraint}]

[可见性] 名字 [({[参数] [:类型]}*)] [:返回值] [{限制性}]

 

注释方法行为

UML注释(annotations)可以被附加在方法上,以便记录方法的行为。

 

声明构造器

构造器初始化一个对象,而且语法和方法相近。

 

回顾耦合

理想情况下,你的模型在维护功能性需求和非功能需求时,应该具有低耦合性。

 

回归内聚

理想情况下,你的模型应该具有高内聚。

用接口创建组件

类可以被分组成内聚组件。这些组件有好的定义的提供接口和需求接口。

 

如果你用需求接口标记,那么需要依赖箭头。然而你可以展示箭头如以下插画例子一样:

 

总结

1、在设计工作流中,你必须提炼领域模型,一边反应实现范式。

2、这个章节描述,如何精炼以下领域模型特点:属性,关系,方法,构造器和方法行为(通过注释)。

3、类应该被回归,以便保证他们位置高内聚,低耦合。

4、使用好的定义的接口,类可以被分组成内聚组件。

 

//2017年3月12日20:32:54 这章翻译挺快的


//联系我,邮箱:bourne_w@sina.com

交个朋友吧

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值