对象设计确定解空间中的类、关联、接口形式及实现操作的算法。 (一)面向对象设计的准则 1.模块化 面向对象开发方法很自然地支持了把系统分解成模块的设计原则:对象就是模块。它是把数据结构和操作这些数据的方法紧密地结合在一起所构成的模块。 2.抽象 面向对象方法不仅支持过程抽象,而且支持数据抽象。 3.信息隐藏 在面向对象方法中,信息隐藏通过对象的封装性来实现。 4.低耦合 在面向对象方法中,对象是最基本的模块,因此,耦合主要指不同对象之间相互关联的紧密程度。低耦合是设计的一个重要标准,因为这有助于使得系统中某一部分的变化对其它部分的影响降到最低程度。 5.高内聚 (1)操作内聚。 (2)类内聚。 (3)一般——具体内聚。 (二)面向对象设计的启发规则 1.设计结果应该清晰易懂 使设计结果清晰、易懂、易读是提高软件可维护性和可重用性的重要措施。显然,人们不会重用那些他们不理解的设计。 要做到: (1)用词一致。 (2)使用已有的协议。 (3)减少消息模式的数量。 (4)避免模糊的定义。 2.一般——具体结构的深度应适当 3.设计简单类 应该尽量设计小而简单的类,这样便以开发和管理。为了保持简单,应注意以下几点: (1)避免包含过多的属性。 (2)有明确的定义。 (3)尽量简化对象之间的合作关系。 (4)不要提供太多的操作。 4.使用简单的协议 一般来说,消息中参数不要超过3个。 5.使用简单的操作 面向对象设计出来的类中的操作通常都很小,一般只有3至5行源程序语句,可以用仅含一个动词和一个宾语的简单句子描述它的功能 6.把设计变动减至最小 通常,设计的质量越高,设计结果保持不变的时间也越长。即使出现必须修改设计的情况,也应该使修改的范围尽可能小。 (三)系统设计 系统设计是问题求解及建立解答的高级策略。必须制定解决问题的基本方法,系统的高层结构形式包括子系统的分解、它的固有并发性、子系统分配给硬软件、数据存储管理、资源协调、软件控制实现、人机交互接口。 1.系统设计概述 设计阶段先从高层入手,然后细化。系统设计要决定整个结构及风格,这种结构为后面设计阶段的更详细策略的设计提供了基础。 (1)系统分解。 系统中主要的组成部分称为子系统,子系统既不是一个对象也不是一个功能,而是类、关联、操作、事件和约束的集合。 (2)确定并发性。 分析模型、现实世界及硬件中不少对象均是并发