UML基础与Rose建模实用教程(第三版)
上QQ阅读APP看书,第一时间看更新

1.3.2 面向对象的设计

面向对象的设计是把分析阶段得到的需求转变成符合成本和质量要求的、抽象的系统实现方案的过程。从面向对象的分析到面向对象的设计,是一个逐渐扩充模型的过程。

系统设计确定实现系统的策略和目标系统的高层结构。对象设计确定问题解空间中的类、关联、接口形式及实现运用的算法。

1.面向对象的设计之准则

面向对象的设计之准则包括模块化、抽象、信息隐藏、低耦合和高内聚等特征,下面就对这些特征进行一一介绍。

(1)模块化:面向对象的开发方法很自然地支持了把系统分解成模块的设计原则—对象就是模块。它是把数据结构和操作这些数据的方法紧密地结合在一起所构成的模块。类的设计要很好地支持模块化这一准则,这样使系统能够具有更好的维护性。

(2)抽象:面向对象的方法不仅支持对过程进行抽象,而且还支持对数据进行抽象。抽象方法的好坏以及抽象的层次都对系统的设计有着很大的影响。

(3)信息隐藏:在面向对象的方法中,信息隐藏是通过对象的封装来实现的。对象暴露接口的多少以及接口的好坏都对系统设计有着很大的影响。

(4)低耦合:在面向对象的方法中,对象是最基本的模块,因此,耦合主要指不同对象之间相互关联的紧密程度。低耦合是设计的一个重要标准,因为这有助于使系统中某一部分的变化对其他部分的影响程度降到最低。

(5)高内聚:在面向对象的方法中,高内聚也是必须满足的条件,高内聚是指在一个对象类中应尽量多地汇集逻辑上相关的计算资源。如果一个模块只负责一件事情,就说明这个模块有很高的内聚度;如果一个模块负责了很多毫不相关的事情,则说明这个模块的内聚度很低。内聚度高的模块通常很容易理解,很容易被复用、扩展和维护。

2.面向对象的设计之启发规则

在面向对象的设计中,可以通过使用一些实用的规则来指导设计人员进行面向对象的设计。通常这些面向对象的设计之启发规则包含以下的内容:

(1)设计的结果应该清晰易懂:使设计结果清晰、易懂、易读是提高软件可维护性和可重用性的重要措施。显然,人们不会重用那些他们不理解的设计。

(2)一般到具体结构的深度应适当:通常来说,从一般到具体的抽象过程,抽象得越深,对于程序的可移植性也就越好,但是抽象层次过多会给程序的编写和维护带来很大的麻烦,一般来讲,适度的抽象能够更好地提高软件的开发效率和简化维护的工作。具体的情况需要系统分析员根据具体的情况进行抽象。

(3)尽量设计小而简单的类:系统设计应当尽量去设计小而简单的类,这样便于程序的开发和管理。

(4)使用简单的消息协议:简单的消息协议有助于帮助记忆和测试,一般来讲,消息中参数的个数不要超过3个。

(5)使用简单的函数或方法:以面向对象的设计方法设计出来的类,其中的函数或方法通常要设计得尽可能小,一般只有3~5行源代码即可。

(6)把设计变动减至最小:通常情况下,设计的质量越高,设计结果保持不变的时间也越长。即使出现必须修改设计的情况,也应该使修改的范围尽可能小。

3.系统设计

系统设计是问题求解及建立解决方案的高级策略。必须制定解决问题的基本方法,系统的高层结构形式包括子系统的分解、确定并发性、子系统分配给软硬件、数据存储管理、资源协调、软件控制实现、人机交互接口等。

系统设计一般是先从高层入手,然后细化。系统设计要决定整个结构及风格,这种结构为后面可以做出更详细策略的设计提供了基础。以下是整个系统设计的一般步骤。

(1)系统分解:系统中主要的组成部分称为子系统,子系统既不是一个对象也不是一个功能,而是类、关联、操作、事件和约束的集合。

(2)确定并发性:分析模型、现实世界及硬件中不少对象均是并发的。

(3)处理器及任务分配:各并发子系统必须分配给单个硬件单元,要么是一个一般的处理器,要么是一个具体的功能单元。

(4)数据存储管理:通常各数据存储可以将数据结构、文件、数据库组合在一起,不同数据存储要在费用、访问时间、容量及可靠性之间做出折中考虑。

(5)全局资源的处理:必须确定全局资源,并且制定访问全局资源的策略。

(6)选择软件控制机制:系统设计必须从多种方法中选择某种方法来实现软件的控制。

(7)人机交互接口的设计:设计中的大部分工作都与稳定的状态行为有关,但必须考虑用户使用系统的交互接口。