Object-Oriented Analysis and Design Using UML翻译与学习 (M-B)

    xiaoxiao2021-03-26  22

    构建软件解决方案

     

    目标

    完成这个模块(章节),你可以:

    1、为解决模型定义一个Java技术包层级树

    2、识别满足精心设计的领域模型的Java技术代码

     

    进程图

     

    为解决方案定义包结构

    1、在UML中呈现Java技术包

    2、应用包依赖原则

    3、隔离子系统和框架到包中

    4、开发一个满足解决方案的包结构

     

    使用UML包

    1、一个UML包是一个为了给其他UML图或元素分组的模型结构

    2、一个UML包也可以用来代表Java技术包(一组相关的类)

     

     

    应用包规则

    1、包依赖

    2、通用闭包原则(CCP)

    3、无环依赖原则(ADP)

    4、稳定依赖原则(SDP)

    5、稳定抽象原则(SAP)

     

    简单的包依赖

    “ If changing the contents of a package P2 (might) impact the contents of  another  package  P1, 

    hen  we  can  say  that  P1  has  a  package dependency on P2. ”           (Knoernschild page 24)

    如果改变包P2的内容可能影响包P1的内容,那么我们可以说P1对P2有包依赖。

                                                                                                         ----Knoernschild 24页

     

     

    通用闭包原则

    “ Classes that change together, belong together. ”       (Knoernschild page 26)

    类一起改变,相互属于    ----Knoernschild 26页

     

    1、通用闭包原则(CCP)识别包内聚;强调所有的服务被所有的包提供

    2、CCP倾向于通过关心的隔离给包分组

         例如:

         2.1通过一个用例一起给网络组件分组

         2.2给相关的领域模型类一起分组

     

    无环依赖原则

    “ The   dependencies   between   packages   must   form   no   cycles. ”      (Knoernschild page 27)

    包之间的依赖必须形成无环。   ----Knoernschild 27

     

     

    稳定依赖原则

    “ Depend in the direction of stability. ”      (Knoernschild page 29)

    依赖于稳定的方向。    ----Knoernschild29页

     

    稳定性意味着一个组件是固定的,永久的,不变的。

    1、业务服务和实体倾向稳定

    2、实体比服务更加稳定

    3、UI组件倾向易改变

    4、工具类倾向于稳定

     

    稳定依赖原则(SDP)和通用闭包原则(CCP)想SunTone AM的阶层划分技术致敬:

    1、组件越接近资源层越稳定

    2、组件越接近客户端阶层越不稳定

     

    //2017年4月8日21:30:41 加油

     

    稳定抽象原则

    “ Stable packages should be abstract packages. ”        (Knoernschild page 31)

    稳定包应该是抽象包。             ----Knoernschild 31页

     

    这个原则是对类和组件的依赖反转原则的扩展。

    1、低稳定包对其他包应该依赖抽象,而不是具体的(类和组件)

    2、抽象类和接口倾向于比实现类改变的频率更低

    3、决定包的抽象程度的公式是 A= Na / Nc

     

    隔离子系统和框架

    subsystem –“ A collection of modules, some of which are visible to other  subsystems  and  other  of  which  are  hidden. ” 

                                                                                                                                                        (Booch  OOAD page 519)

    子系统--一个模块的集合,有些模块是对其他系统可见,还有些不可见。    ----Booch  OOAD 519页

     

    framework –“ A collection of classes that provide a set of services for a particular domain;

    a framework thus exports a number of individual classes and mechanisms that clients can use or adapt. ”

                                                                                                                                  (Booch OOAD page 514)

    框架--一个类的集合,为特定领域提供服务的集合;框架于是导入一些客户端可以使用或改变后使用的独立类和机制。

                                                                                                                                              ----Booch OOAD 514页

    1、子系统和框架经常被放在它们自己的包中

    2、只有公共类和接口对包以外可见

     

    为解决模型开发包结构

    从包依赖原则来,有一些创建包结构的知道基线:

    1、把每一个阶层的依赖分组到它们自己的包。

         例如,业务服务和实体应该在它们自己的包中。

    2、在一个阶层中,把一起改变的组件分到它们自己的包中。例如,为网络应用的客户端阶层组件应该被分在一起。

    3、把服务的接口的集合分组进一个包,把它们的实现分进另一个包。

    4、隔离子系统到它们自己的包中。

     

    旅馆预定系统的包依赖通过阶层分类

     

    旅馆预定系统的应用层和虚拟平台之间的包依赖

     

     

    映射领域模型到Java技术类代码

    这一部分描述如何使用类图把Java技术代码写到实现建模中:

    1、类型信息

    2、属性

    3、关联

     

    类型信息

    Java可以识别三种类的声明:

     

    继承:

     

    接口实现:

     

     

    属性

    UML 语法

    [visibility] name [multiplicity] [: type] [= init- value] [{property-string}]

    [可见性] 名字[多样性] [: 类型] [= 初始值] [{可写属性字符串}]

    1、可见性

    2、类的范围

     

    关联

    类之间的关联经常通过作为类的属性来实现:

    重要的特点:

    1、导向

    2、多样性

    3、合格的关联

    4、聚合和组合

     

    导向

    导向箭头声明哪一个类必须实现关联和它的访问方法

    1、单向箭头

    2、双向箭头

     

    关联方法

    合理的封装也推荐保持 关联实例变量是私有的和提供共有方面和修改方法

     

    关联多样性

    使用数组或集合去保存多样关联对象:

     

    合格的关联

    多对多关联可以通过整数索引成为合格。例如:

    一个合格的关联也可以使用非整数键去执行查找操作。例如:

    聚合

    一个集合(类)的部分可以被聚合类外面的共享:

     

    组合

    组合(类)的部分一定不要暴露在组合类外面

    //组合的整体和部分的生命周期一致

     

    总结

    1、很重要的是,如何把组件和类分组到包中。你已经看到一些原则,这些原则可以帮助引导那个过程。

    2、UML可以接近的映射大多数面向对象语言。在这一个模块(章),你已经看到多个通用的类图和Java

    技术代码之间的映射

     

     

    //2017年4月9日19:15:17 搞快

     

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

    交个朋友吧

     

     

     

     

     

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

    最新回复(0)