面向对象设计

来源:互联网 发布:黑米软件作者 编辑:程序博客网 时间:2024/06/08 12:41
面向对象设计的任务是对面向对象分析的结果作进一步的规范化整理,以便能够被面向对象编程直接接受。
     概念
面向对象设计是一种软件设计方法,是一种工程化规范。这是毫无疑问的。面向对象设计的主要工作包括:
— 确定需要的类;
— 给每个类提供一组完整的操作;
— 明确地使用继承来表现共同点。
概括地说,面向对象设计就是“根据需求决定所需的类、类的操作,以及类之间关联的过程”。
从面向对象分析到面向对象设计是一个逐步扩充模型的过程。面向对象分析以实际问题为中心,可以不考虑与软件实现相关的任何问题,主要考虑“做什么”的问题;面向对象设计则是面向软件实现的实际开发活动,主要考虑“怎么做”的问题。
面向对象设计的目标是管理程序内部各部分的相互依赖。为了达到这个目标,面向对象设计要求将程序分成块,每个块的规模应该小到可以管理的程度,然后分别将各个块隐藏在接口(interface)的后面,让它们只通过接口相互交流。比如说,如果用面向对象设计的方法来设计一个客户端-服务器应用,那么服务器和客户端之间不应该有直接的依赖,而是应该让服务器的接口和客户端的接口相互依赖。
这种依赖关系的转换使得系统的各部分具有了可复用性。还是拿上面那个例子来说,客户端就不必依赖于特定的服务器,所以就可以复用到其他的环境下。如果要复用某一个程序块,只要实现必需的接口就行了。
面向对象设计是一种解决软件问题的设计范式(paradigm),一种抽象的范式。使用OOD这种设计范式,我们可以用对象来表现问题领域的实体,每个对象都有相应的状态和行为。面向对象设计是一种抽象的范式,抽象可以分成很多层次,从非常概括的到非常特殊的都有,而对象可能处于任何一个抽象层次上。另外,彼此不同但又互有关联的对象可以共同构成抽象:只要这些对象之间有相似性,就可以把它们当成同一类的对象来处理。
     原则
面向对象设计的主要原则如下。
1.模块化
面向对象开发方法很自然地支持了把系统分解成模块的设计原则:对象就是模块。它是把数据结构和操作这些数据的方法紧密地结合在一起所构成的模块。
2.抽象
面向对象方法不仅支持过程抽象,而且支持数据抽象。
3.信息隐藏
在面向对象方法中,信息隐藏通过对象的封装性来实现。
4.低耦合
在面向对象方法中,对象是最基本的模块,因此,耦合主要指不同对象之间相互关联的紧密程度。低耦合是设计的一个重要标准,因为这有助于使得系统中某一部分的变化对其他部分的影响降到最低程度。
5.高内聚
— 操作内聚。
— 类内聚。
— 一般-具体内聚。
      任务
面向对象设计的主要任务如下。
1.对象定义规格的求精
对于面向对象分析所抽象出来的对象、类,以及汇集的分析文档,面向对象设计需要有一个根据设计要求整理和求精的过程,使之更能符合面向对象编程的需要。这个整理和求精过程主要有两个方面:一是要根据面向对象的概念模型整理分析所确定的对象结构、属性、方法等内容,改正错误的内容,删去不必要和重复的内容等。二是进行分类整理,以便于下一步数据库设计和程序处理模块设计的需要。整理的方法主要是进行归类,对类、对象、属性、方法和结构、主题进行归类。
2.数据模型和数据库设计
数据模型的设计需要确定类、对象属性的内容、消息连接的方式、系统访问、数据模型的方法等。最后,每个对象实例的数据都必须落实到面向对象的库结构模型中。
3.优化
面向对象设计的优化设计过程是从另一个角度对分析结果和处理业务过程的整理归纳,优化包括对象和结构的优化、抽象、集成。
对象和结构的模块化表示为面向对象设计提供了一种范式,这种范式支持对类和结构的模块化。这种模块符合一般模块化所要求的所有特点,如信息隐蔽性好,内部聚合度强和模块之间耦合度弱等。集成化使得单个构件有机地结合在一起,相互支持。
      阶段
面向对象设计分为两个阶段,即高层设计和低层设计。
高层设计阶段开发系统的结构,构造软件的总体模型。在这个阶段中,应该标识出在具体的计算机环境中进行问题求解所需要的概念,并增加一批需要的类,其中包括那些能使软件系统与外部世界进行交互的类。高层设计阶段的输出是适合应用软件要求的类、类之间的关系,以及应用子系统的视图规格说明。图6-13说明了面向对象设计导出的系统结构的大致形式。
在高层设计的过程中,应当使子系统的高层部件之间的通信量达到最小,把子系统中相互之间存在高度交互的类划分在同一组中。
低层设计集中于类的详细设计阶段。类设计的目标是形成单一概念的模型(即一个概念用一个独立的类来表示),而且设计的部件应该是可复用的和可靠的。在类的设计过程中需要采用信息隐蔽、高内聚、低耦合等设计原则。重复使用现有的类是面向对象的技术的主要优点之一。
图6-13  面向对象设计导出的系统结构
      过程和步骤
Coad与Yourdon在设计阶段继续采用面向对象分析阶段中提到的5个层次(对象和类、结构、属性、服务和主题),这样有助于从分析到设计的自然过渡。根据Coad与Yourdon的面向对象设计方法,设计阶段的主要任务是利用这5个层次来建立系统的4个组成部分,即问题领域、用户界面、任务管理和数据管理。
1.问题领域
问题领域包括与我们所面对的应用问题直接相关的所有类和对象。实际上,在面向对象分析阶段就已经开始进行问题领域的分析。此时需要对它进行进一步的细化。面向对象分析得到了与应用有关的概念模型,面向对象设计应该对这个概念模型进行改进和增补。主要根据需求的变化来对面向对象分析阶段产生的模型中的类和对象、结构、属性和操作进行组合和分解,根据面向对象设计原则来增加必要的类、属性和关系。问题领域部分的设计包括:
— 复用设计
— 关联问题领域中的类
— 加入一般化的类以建立类间协议
— 调整继承的支持级别
— 改进性能
— 加入较低层的组件
2.用户界面
通常在面向对象分析阶段给出了所需的属性和操作,在面向对象设计阶段必须根据需求把交互的细节加入用户界面的设计中,包括有效的人机交互所必需的实际显示和输入。用户界面部分的设计主要由以下几个方面组成:
— 用户分类
— 描述人及其任务的脚本
— 设计命令层
— 设计详细的交互
— 继续扩展用户界面原型
— 设计人机交互类
— 根据图形用户界面进行设计任务管理部分的设计
3.任务管理
任务是进程的别称,是执行一系列活动的一段程序。当系统中有许多并发行为时,需要依照各个行为的协调和通信关系来划分各种任务,以简化并发行为的设计和编码。任务管理主要包括任务的选择和调整,它的工作包括:
— 识别事件驱动任务。
— 识别时钟驱动任务。
— 识别优先任务和关键任务。
— 识别任务之间的协调者。
— 对各个任务进行评审保证它能够满足选择任务的过程标准。
— 定义各个任务,说明它是什么任务、任务之间如何协调工作、如何通信。
4.数据管理
数据管理提供了在数据管理系统中存储和检索对象的基本结构,包括对永久性数据的访问和管理。数据管理的方法主要有三种,即文件管理、关系数据库管理,以及面向对象的数据库管理。数据管理设计包括:
— 数据存放设计。数据存放设计选择数据存放的方式(文件存放、关系数据库表格存放或面向对象的数据库存放)。
— 设计相应的操作。为每个需要存储的对象和类增加用于存储管理的属性和操作,在类和对象的定义中加以描述。
在每一个过程中,面向对象设计的基本操作步骤包括:
— 细化重组类。
— 细化和实现类间关系,明确其可见性。
— 增加属性,指定属性的类型与可见性。
— 分配职责,定义执行每个职责的方法。
— 对消息驱动的系统,明确消息传递方式。
— 利用设计模式进行局部设计。
— 画出详细的类图与序列图。