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

    xiaoxiao2021-03-25  115

    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

    交个朋友吧

     

     

     

     

     

     

    转载请注明原文地址: https://ju.6miu.com/read-16342.html

    最新回复(0)