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
交个朋友吧