1、面向对象的分析与设计第7章本章本章要点要点n 理解面向对象分析的主要任务和一般过程;n 初步掌握对象模型的建立方法;n 了解动态模型和功能模型的建立方法;n 理解面向对象设计的基本模型及主要内容。7.1 面向对象分析第7章面向对象分析(面向对象分析(Object Oriented Analysis,OOA)是软件开发过程中的问题定义和需求分析)是软件开发过程中的问题定义和需求分析阶段,这一阶段最后得到的是对问题领域的清晰、精确的定义。阶段,这一阶段最后得到的是对问题领域的清晰、精确的定义。OOA的目标是完成对所需求解的目标是完成对所需求解问题的分析,确定目标系统所要做的工作,定义所有与待解决问
2、题相关的类,并建立系统的模问题的分析,确定目标系统所要做的工作,定义所有与待解决问题相关的类,并建立系统的模型。型。OOA的核心思想是利用面向对象的概念和方法为软件需求建造模型,以使用户需求逐步精的核心思想是利用面向对象的概念和方法为软件需求建造模型,以使用户需求逐步精确化、一致化、完全化。为了达到这一目标,必须完成以下任务:确化、一致化、完全化。为了达到这一目标,必须完成以下任务:(1)与用户进行充分沟通,全面理解和分析用户需求,明确所开发的软件系统的职责,)与用户进行充分沟通,全面理解和分析用户需求,明确所开发的软件系统的职责,形成文件并规范地加以表述;形成文件并规范地加以表述;(2)识别
3、解决问题的对象集合及对象间的关系;)识别解决问题的对象集合及对象间的关系;(3)定义类(包括定义其属性和操作)并建立类间的层次关系;)定义类(包括定义其属性和操作)并建立类间的层次关系;(4)通过建立模型来表示对象之间的关系及行为特性。)通过建立模型来表示对象之间的关系及行为特性。7.1.1 面向对象分析的目标和任务面向对象分析的目标和任务7.1 面向对象分析第7章7.1.2 面向对象分析的过程面向对象分析的过程7.1 面向对象分析第7章1.分析需求文档分析需求文档系统分析通常是从一个需求文档系统分析通常是从一个需求文档(或称需求陈述或称需求陈述)和用户一系列的讨论开始的。大多数需和用户一系列
4、的讨论开始的。大多数需求陈述都是有二义性的、不完整的甚至不一致的。通过分析可以发现和改正需求文档中的歧求陈述都是有二义性的、不完整的甚至不一致的。通过分析可以发现和改正需求文档中的歧义性、不一致性,剔除冗余的内容,挖掘潜在的内容,弥补不足,从而使需求文档更完整、义性、不一致性,剔除冗余的内容,挖掘潜在的内容,弥补不足,从而使需求文档更完整、更准确。分析过程中,系统分析员除了要反复多次地与用户讨论沟通外,还应调研、观察和更准确。分析过程中,系统分析员除了要反复多次地与用户讨论沟通外,还应调研、观察和了解现有的类似系统,从而快速地建立一个原型系统,通过在计算机上运行原型系统,使得了解现有的类似系统
5、,从而快速地建立一个原型系统,通过在计算机上运行原型系统,使得分析员和用户尽快交流和相互理解,从而能更正确地、更完整地提取和确定用户的需求。分析员和用户尽快交流和相互理解,从而能更正确地、更完整地提取和确定用户的需求。7.1.2 面向对象分析的过程面向对象分析的过程7.1 面向对象分析第7章2.需求建模需求建模系统分析员根据所提取的用户需求,深入地理解用户需求,识别出问题域内的对象,并系统分析员根据所提取的用户需求,深入地理解用户需求,识别出问题域内的对象,并分析它们之间相互的关系,抽象出目标系统应该完成的任务,并用分析它们之间相互的关系,抽象出目标系统应该完成的任务,并用OOA模型准确地表示
6、出来,模型准确地表示出来,即用面向对象观点建立对象模型、动态模型和功能模型。即用面向对象观点建立对象模型、动态模型和功能模型。OOA模型是模型是OOD的基础,它应该准的基础,它应该准确、简洁地表示问题。通过建立模型,可以避免理解上的片面性,提高目标系统的正确性和确、简洁地表示问题。通过建立模型,可以避免理解上的片面性,提高目标系统的正确性和可靠性,在此基础上,编写出面向对象的需求规格说明书。可靠性,在此基础上,编写出面向对象的需求规格说明书。3.需求评审需求评审需求规格说明文档经用户、领域专家、系统分析员和系统设计人员以及其他有关人员评需求规格说明文档经用户、领域专家、系统分析员和系统设计人员
7、以及其他有关人员评审、并进行反复修改后形成定稿,该文档将成为面向对象设计的依据。审、并进行反复修改后形成定稿,该文档将成为面向对象设计的依据。7.1.2 面向对象分析的过程面向对象分析的过程7.1 面向对象分析第7章面向对象建模是面向对象建模是OOA的关键。的关键。OOA的模型要表示出系统的数据、功能和行为三方面的基的模型要表示出系统的数据、功能和行为三方面的基本特征,因此通常需要建立三种模型,分别是对象模型、动态模型和功能模型。其中:本特征,因此通常需要建立三种模型,分别是对象模型、动态模型和功能模型。其中:(1)对象模型描述系统的数据结构,它是用来描述系统包含的对象及对象之间关系的)对象模
8、型描述系统的数据结构,它是用来描述系统包含的对象及对象之间关系的模型;模型;(2)动态模型描述系统的控制结构,它是用来确定各个对象之间交互及整体的控制结)动态模型描述系统的控制结构,它是用来确定各个对象之间交互及整体的控制结构的模型;构的模型;(3)功能模型描述系统的功能,它是用来描述系统要实现的功能的模型。)功能模型描述系统的功能,它是用来描述系统要实现的功能的模型。7.1.3 面向对象分析的三种模型面向对象分析的三种模型7.1 面向对象分析第7章1.对象模型的五个层次对象模型的五个层次复杂问题复杂问题(大型系统大型系统)的对象模型由五个层次组成,即主题层、类的对象模型由五个层次组成,即主题
9、层、类|对象层、结构层、对象层、结构层、属性层和服务层,如图属性层和服务层,如图7-3所示。所示。7.1.4 对象模型的层次对象模型的层次7.1 面向对象分析第7章2.OOA的五项活动的五项活动OOA对象模型的五个层次对应着对象模型的五个层次对应着OOA过程中建立对象模型的五项活动。这五项活动是:过程中建立对象模型的五项活动。这五项活动是:确定类确定类|对象、识别结构、识别主题、定义属性、定义服务。对象、识别结构、识别主题、定义属性、定义服务。需要说明的是,这五项工作完全没有必要顺序完成,也无需在彻底完成一项工作以后再需要说明的是,这五项工作完全没有必要顺序完成,也无需在彻底完成一项工作以后再
10、开始另外一项工作,在分析过程中并不需要严格遵循自顶向下,逐步求精的原则。五项活动开始另外一项工作,在分析过程中并不需要严格遵循自顶向下,逐步求精的原则。五项活动可以同时可以同时(并行并行)处理,也可以从较高抽象层转移到较低的具体层,然后再返回到较高抽象层继处理,也可以从较高抽象层转移到较低的具体层,然后再返回到较高抽象层继续处理。例如,当系统分析员在确定类续处理。例如,当系统分析员在确定类|对象时,想到了该类应该包含的一个服务,于对象时,想到了该类应该包含的一个服务,于是把这个服务的名字写在服务层,然后又返回到类是把这个服务的名字写在服务层,然后又返回到类|对象层,继续寻找另外的类对象层,继续
11、寻找另外的类|对对象。象。7.1.4 对象模型的层次对象模型的层次7.1 面向对象分析第7章3.OOA的主要流程的主要流程面向对象分析大体上按照如图面向对象分析大体上按照如图7-4所示的顺序进行。所示的顺序进行。7.1.4 对象模型的层次对象模型的层次7.2 建立对象模型第7章OOA的核心是确定问题域中相关的对象,找出这些对象是个重要而复杂的过程。一般采的核心是确定问题域中相关的对象,找出这些对象是个重要而复杂的过程。一般采用基于词汇分析的方法:从目标系统的描述开始,找出其中的名词作为候选对象类,此外,用基于词汇分析的方法:从目标系统的描述开始,找出其中的名词作为候选对象类,此外,还可找出其中
12、的动词作为候选方法(即后面要介绍的服务),然后产生一个由对象(名词)还可找出其中的动词作为候选方法(即后面要介绍的服务),然后产生一个由对象(名词)和方法(动词)构成的表格,作为词汇分析的初步结果,最后从中选出确定的真正的对象类。和方法(动词)构成的表格,作为词汇分析的初步结果,最后从中选出确定的真正的对象类。如图如图7-5所示。所示。7.2.1 确定对象和类确定对象和类7.2 建立对象模型第7章采用系统词汇法确定对象类,并进行建模的具体做法如下:采用系统词汇法确定对象类,并进行建模的具体做法如下:(1)确定对象类)确定对象类(2)准备数据词典)准备数据词典(3)确定关联)确定关联(4)确定属
13、性)确定属性(5)使用继承来细化对象类)使用继承来细化对象类(6)完善对象模型)完善对象模型7.2.1 确定对象和类确定对象和类7.2 建立对象模型第7章主题是一种关于模型的抽象机制,起一种控制作用。引入主题有助于分解大型项目以便主题是一种关于模型的抽象机制,起一种控制作用。引入主题有助于分解大型项目以便成立工作小组来承担不同的主题任务。主题有两种表示形式,如图成立工作小组来承担不同的主题任务。主题有两种表示形式,如图7-7所示。所示。7.2.3 确定主题确定主题 7.2 建立对象模型第7章所谓服务是在接收到一条消息后所要进行的加工。定义服务时,首先定义行为,然后定所谓服务是在接收到一条消息后
14、所要进行的加工。定义服务时,首先定义行为,然后定义实例的通信。值得说明的是,确定服务和消息,只有在建立了动态模型和功能模型之后,义实例的通信。值得说明的是,确定服务和消息,只有在建立了动态模型和功能模型之后,才可能最后确定对象类的服务。本教材为保持案例的连续性,故将服务和消息在此介绍。才可能最后确定对象类的服务。本教材为保持案例的连续性,故将服务和消息在此介绍。确定一个类中的服务,主要取决于该类在问题中的实际作用以及求解过程中承担的处理确定一个类中的服务,主要取决于该类在问题中的实际作用以及求解过程中承担的处理责任,确定的原则如下:责任,确定的原则如下:(1)基本的属性操作服务。即类中应提供的
15、访问、修改自身属性值的基本操作。这类)基本的属性操作服务。即类中应提供的访问、修改自身属性值的基本操作。这类操作属于类的内部操作,可不必在对象模型中显式表示。操作属于类的内部操作,可不必在对象模型中显式表示。(2)事件的处理操作。动态模型中状态图描述了对象应接收的事件(消息),类和对)事件的处理操作。动态模型中状态图描述了对象应接收的事件(消息),类和对象中必须提供处理相应消息的服务,这些服务用于修改对象的状态(属性值)并启动相应的象中必须提供处理相应消息的服务,这些服务用于修改对象的状态(属性值)并启动相应的服务。服务。7.2.4 确定服务和消息确定服务和消息 7.2 建立对象模型第7章(3
16、)数据流图中处理框对应的操作。功能模型中的每个处理框代表了系统应实现的部)数据流图中处理框对应的操作。功能模型中的每个处理框代表了系统应实现的部分功能,而这些功能都与一个或几个对象中提供的服务相对应。因此,要仔细分析状态图和分功能,而这些功能都与一个或几个对象中提供的服务相对应。因此,要仔细分析状态图和数据流图,以便正确地确定对象应提供的服务。数据流图,以便正确地确定对象应提供的服务。(4)利用继承机制优化服务集合,减少冗余服务。应尽量抽取相似的公共属性和服务,)利用继承机制优化服务集合,减少冗余服务。应尽量抽取相似的公共属性和服务,以建立这些相似类的新父类,并在类的不同层次中正确定义各个服务
17、。以建立这些相似类的新父类,并在类的不同层次中正确定义各个服务。7.2.4 确定服务和消息确定服务和消息 7.3 建立动态模型第7章动态模型描述系统的动态行为,表现对象在系统运行期间不同时刻的动态交互。动态模型描述系统的动态行为,表现对象在系统运行期间不同时刻的动态交互。下列三个因素有关:下列三个因素有关:(1)状态。状态是对象在其生存周期中的某个特定阶段所具有的行为模式,它是对影)状态。状态是对象在其生存周期中的某个特定阶段所具有的行为模式,它是对影响对象行为的属性值的一种抽象。状态规定了对象对输入事件的响应方式。对象对输入事件响对象行为的属性值的一种抽象。状态规定了对象对输入事件的响应方式
18、。对象对输入事件的响应,既可以执行一个或一系列动作,也可以是仅仅改变对象本身的状态。状态有持续性,的响应,既可以执行一个或一系列动作,也可以是仅仅改变对象本身的状态。状态有持续性,占用一段时间间隔。占用一段时间间隔。(2)事件。事件是一个触发行为,是引起对象状态转换的控制信息,是引起对象从一)事件。事件是一个触发行为,是引起对象状态转换的控制信息,是引起对象从一种状态转换到另一种状态的事情的抽象。事件没有持续的时间,是瞬间完成的。种状态转换到另一种状态的事情的抽象。事件没有持续的时间,是瞬间完成的。(3)行为。行为也称服务,是指对象在某种状态下所做的一系列处理操作,行为是需)行为。行为也称服务
19、,是指对象在某种状态下所做的一系列处理操作,行为是需要消耗时间的要消耗时间的7.3 建立动态模型第7章1.构建事件追踪图构建事件追踪图要建立一个事件追踪图,通常首先要编写要建立一个事件追踪图,通常首先要编写脚本。脚本是系统执行某个功能的一系列事件。脚本。脚本是系统执行某个功能的一系列事件。脚本通常起始于一个系统外部的输入事件,结束脚本通常起始于一个系统外部的输入事件,结束于一个系统外部的输出事件,它可以包括发生在于一个系统外部的输出事件,它可以包括发生在此期间内系统所有的内部事件。此期间内系统所有的内部事件。7.3 建立动态模型第7章7.4 建立功能模型第7章功能模型主要用来说明系统内部数据是
20、如何传送和处理的,表示变化的系统的功能模型主要用来说明系统内部数据是如何传送和处理的,表示变化的系统的“功能功能”性质。功能模型描述了系统性质。功能模型描述了系统“做什么做什么”,它更直接、明确地反映了用户对目标系统的需求。,它更直接、明确地反映了用户对目标系统的需求。建立功能模型有助于软件开发人员更深入地理解整个问题域,改进和完善自己的设计。通常建立功能模型有助于软件开发人员更深入地理解整个问题域,改进和完善自己的设计。通常在建立对象模型和动态模型之后再建立功能模型。在建立对象模型和动态模型之后再建立功能模型。在在UML中,用用例图描述用例模型,用例图包含系统、行为者、用例、用例之间的关系中
21、,用用例图描述用例模型,用例图包含系统、行为者、用例、用例之间的关系等元素。其中:系统是一个提供用例的黑盒子,可用方框表示;行为者是与系统交互的角色等元素。其中:系统是一个提供用例的黑盒子,可用方框表示;行为者是与系统交互的角色或其他外部系统;用例是一个完整的功能,完成系统内部的计算及与行为者的交互,它对应或其他外部系统;用例是一个完整的功能,完成系统内部的计算及与行为者的交互,它对应于对象模型中的类所提供的服务;行为者与用例之间的关系用直线连接,表示两者之间有交于对象模型中的类所提供的服务;行为者与用例之间的关系用直线连接,表示两者之间有交换信息,称为通信联系。换信息,称为通信联系。7.4
22、建立功能模型第7章用数据流图建立功能模型的主要步骤如下:用数据流图建立功能模型的主要步骤如下:(1)确定输入和输出值;确定输入和输出值;(2)用数据流图表示功能的依赖性;用数据流图表示功能的依赖性;(3)具体描述每个功能;具体描述每个功能;(4)确定对象的约束;确定对象的约束;(5)确定功能优化的准则。确定功能优化的准则。功能模型中的数据流图往往形成一个层次结构。在这个层次结构中,一个数据流图中的功能模型中的数据流图往往形成一个层次结构。在这个层次结构中,一个数据流图中的过程(即处理)可以由下一层的数据流图作进一步说明。过程(即处理)可以由下一层的数据流图作进一步说明。7.4 建立功能模型第7
23、章7.5 面向对象设计第7章1.面向对象分析与面向对象设计的关系面向对象分析与面向对象设计的关系面向对象设计(面向对象设计(Object Oriented Design,OOD)是根据面向对象分析中确定的类和对象)是根据面向对象分析中确定的类和对象设计软件系统。从设计软件系统。从OOA到到OOD是一个逐步建立和扩充对象模型的过程。是一个逐步建立和扩充对象模型的过程。OOA是分析用户需求并建立问题域模型的过程,是解决系统是分析用户需求并建立问题域模型的过程,是解决系统“做什么做什么”问题的;问题的;OOD则则是根据是根据OOA得到的需求模型,建立求解域模型的过程,是解决系统得到的需求模型,建立求
24、解域模型的过程,是解决系统“怎么做怎么做”问题的。问题的。OOA主要是模拟问题域和系统任务,而主要是模拟问题域和系统任务,而OOD则是对则是对OOA的扩充,主要是增加各种组成部的扩充,主要是增加各种组成部分。具体来说,分。具体来说,OOA识别和定义类和对象。这些类和对象直接反映问题域和系统任务。而识别和定义类和对象。这些类和对象直接反映问题域和系统任务。而OOD识别和定义其他附加类和对象,它们反映需求的一种实现,当然,也可以交替进行这两识别和定义其他附加类和对象,它们反映需求的一种实现,当然,也可以交替进行这两个阶段的工作。从个阶段的工作。从OOA到到OOD是一个逐渐扩充模型的过程,分析和设计
25、活动是一个多次反复是一个逐渐扩充模型的过程,分析和设计活动是一个多次反复迭代的过程。迭代的过程。7.5.1 面向对象设计概述面向对象设计概述7.5 面向对象设计第7章2.面向对象设计的基本模型面向对象设计的基本模型OOD是在是在OOA模型的基础上建立对象模型的过程,两个阶段同样是建立对象模型,但侧重模型的基础上建立对象模型的过程,两个阶段同样是建立对象模型,但侧重点不同,点不同,OOA建立问题域对象模型,而建立问题域对象模型,而OOD建立求解域的对象模型。因此建立求解域的对象模型。因此OOD模型同样也由主题、模型同样也由主题、类类|&|对象、结构、属性和服务等五个层次组成,并且每个透明层在逻辑
26、上都划分为四个子系对象、结构、属性和服务等五个层次组成,并且每个透明层在逻辑上都划分为四个子系统统:问题域子系统(问题域子系统(PDC)、人机交互子)、人机交互子系统系统(HIC)、任务管理子系统、任务管理子系统(TMC)和数据和数据管理子系统管理子系统(DMC),具体面向对象设计的,具体面向对象设计的五个层次、四个组成部分构成的典型的面五个层次、四个组成部分构成的典型的面向对象设计模型如图向对象设计模型如图7-12所示。所示。7.5.1 面向对象设计概述面向对象设计概述7.5 面向对象设计第7章3.面向对象设计的主要工作面向对象设计的主要工作面向对象设计技术进行问题解决方案的设计工作的大致做
27、法是,它将问题的解决方案表述面向对象设计技术进行问题解决方案的设计工作的大致做法是,它将问题的解决方案表述为:为:“类关联类关联”的形式,其中,类包括问题空间(域)类、用户界面类(即人机交互类)、任的形式,其中,类包括问题空间(域)类、用户界面类(即人机交互类)、任务管理类和数据管理类,是从设计的角度出发对问题解决方案中的对象的抽象和描述,关联则用务管理类和数据管理类,是从设计的角度出发对问题解决方案中的对象的抽象和描述,关联则用于描述这些类和类之间的关系。于描述这些类和类之间的关系。7.5.1 面向对象设计概述面向对象设计概述7.5 面向对象设计第7章1面向对象设计的准则面向对象设计的准则在
28、进行面向对象设计的过程中,应该遵循软件设计的基本原理,此外,还要考虑面向对象在进行面向对象设计的过程中,应该遵循软件设计的基本原理,此外,还要考虑面向对象的特点。面向对象设计准则主要包括模块化、抽象、信息隐藏、低耦合、高内聚和复用性几点。的特点。面向对象设计准则主要包括模块化、抽象、信息隐藏、低耦合、高内聚和复用性几点。具体内容如下:具体内容如下:(1)模块化)模块化(2)抽象)抽象(3)信息隐藏)信息隐藏(4)低耦合)低耦合(5)高内聚)高内聚(6)复用性)复用性7.5.2 面向对象设计的准则和启发式规则面向对象设计的准则和启发式规则7.5 面向对象设计第7章2面向对象设计的启发式规则面向对
29、象设计的启发式规则(1)设计结果应该清晰易懂)设计结果应该清晰易懂(2)一般)一般/特殊结构的深度应适当特殊结构的深度应适当(3)设计简单的类)设计简单的类(4)使用简单的协议)使用简单的协议(5)设计简单的服务)设计简单的服务(6)最小设计变动)最小设计变动7.5.2 面向对象设计的准则和启发式规则面向对象设计的准则和启发式规则7.6 系统设计第7章系统设计确定实现系统的策略和目标系统的高层结构设计。系统设计是要将系统分解为若系统设计确定实现系统的策略和目标系统的高层结构设计。系统设计是要将系统分解为若干个子系统,子系统和子系统之间通过接口进行联系。系统设计的一般步骤如图干个子系统,子系统和
30、子系统之间通过接口进行联系。系统设计的一般步骤如图7-14所示:所示:7.5.2 面向对象设计的准则和启发式规则面向对象设计的准则和启发式规则7.6 系统设计第7章1将系统分解为子系统将系统分解为子系统(1)子系统之间的交互方式)子系统之间的交互方式在应用系统中,子系统之间的关系可分为客户在应用系统中,子系统之间的关系可分为客户/服务器(供应商)关系和同等伙伴(端对端)服务器(供应商)关系和同等伙伴(端对端)关系。关系。在客户在客户/服务器关系中,服务器关系中,“客户客户”的子系统调用作为的子系统调用作为“服务器服务器”的子系统,的子系统,“服务器服务器”完完成某些服务工作并返回结果。每个子系
31、统只承担一个角色,服务只是单向地从服务器流向客户端。成某些服务工作并返回结果。每个子系统只承担一个角色,服务只是单向地从服务器流向客户端。在同等伙伴关系中,每个子系统都可能调用其他子系统,因此每个子系统都必须了解其在同等伙伴关系中,每个子系统都可能调用其他子系统,因此每个子系统都必须了解其他子系统的接口,该方案比客户他子系统的接口,该方案比客户/服务器方案交互复杂,易发生设计错误。因此推荐尽量使用客服务器方案交互复杂,易发生设计错误。因此推荐尽量使用客户户/服务器关系服务器关系7.5.2 面向对象设计的准则和启发式规则面向对象设计的准则和启发式规则7.6 系统设计第7章(2)系统组织)系统组织
32、通常,系统中子系统结构的组织有两种方式:水平层次组织和垂直块状组织。通常,系统中子系统结构的组织有两种方式:水平层次组织和垂直块状组织。层次组织层次组织层次组织是将子系统按层组织成为一个层次软件系统,每层是一个子系统。层次组织是将子系统按层组织成为一个层次软件系统,每层是一个子系统。块组织块组织 块组织将系统垂直地分解成若干个相对独立的、弱耦合的子系统,一个子系统相当于一块,块组织将系统垂直地分解成若干个相对独立的、弱耦合的子系统,一个子系统相当于一块,每块提供一种类型的服务。每块提供一种类型的服务。7.5.2 面向对象设计的准则和启发式规则面向对象设计的准则和启发式规则7.6 系统设计第7章
33、(3)设计系统的拓扑结构)设计系统的拓扑结构由子系统组成完整的系统时,典型的拓扑结构有管道型、树型、星型等。设计者应该采用由子系统组成完整的系统时,典型的拓扑结构有管道型、树型、星型等。设计者应该采用与问题结构相适应的、尽可能简单的拓扑结构,以减少子系统之间的交互数量。与问题结构相适应的、尽可能简单的拓扑结构,以减少子系统之间的交互数量。7.5.2 面向对象设计的准则和启发式规则面向对象设计的准则和启发式规则7.6 系统设计第7章2.设计问题域类子系统设计问题域类子系统 问题域类是指那些直接从问题域类是指那些直接从OOA分析结果模型得到的类,它是让软件系统能够实现对应用问分析结果模型得到的类,
34、它是让软件系统能够实现对应用问题求解的最基本的类,也是面向对象软件系统的核心类。对问题域子系统的设计,即定义这些类题求解的最基本的类,也是面向对象软件系统的核心类。对问题域子系统的设计,即定义这些类或对象的细节。或对象的细节。虽然在虽然在OOA阶段已经标识和定义了系统的类与对象,以及它们之间的各种关系,但是随着阶段已经标识和定义了系统的类与对象,以及它们之间的各种关系,但是随着对需求理解的加深和对系统认识程度的逐步提高,开发人员还需要在对需求理解的加深和对系统认识程度的逐步提高,开发人员还需要在OOD阶段对阶段对OOA阶段得到的阶段得到的模型进行改进和增补,主要是对模型进行改进和增补,主要是对
35、OOA模型增添、合并或分解类与对象、属性及服务,调整继承关模型增添、合并或分解类与对象、属性及服务,调整继承关系等。系等。7.5.2 面向对象设计的准则和启发式规则面向对象设计的准则和启发式规则7.6 系统设计第7章3.设计用户界面类子系统设计用户界面类子系统用户界面类是指那些为实现人机交互接口而设计的类,它是使软件系统能够接收用户的命用户界面类是指那些为实现人机交互接口而设计的类,它是使软件系统能够接收用户的命令,并能够为用户提供信息所需要的类,所以也叫人机交互类。该类用以确定人机交互的细节,令,并能够为用户提供信息所需要的类,所以也叫人机交互类。该类用以确定人机交互的细节,对图形用户界面(
36、对图形用户界面(GUI),则包括指定窗口和报表的形式、设计命令层次等。),则包括指定窗口和报表的形式、设计命令层次等。尽管在尽管在OOA过程中已经对用户界面方面进行了分析,但是在过程中已经对用户界面方面进行了分析,但是在OOD过程中仍需继续完成这项过程中仍需继续完成这项工作,必须具体设计确定交互作用的时间、交互的方式和交互的技术等。工作,必须具体设计确定交互作用的时间、交互的方式和交互的技术等。7.5.2 面向对象设计的准则和启发式规则面向对象设计的准则和启发式规则7.6 系统设计第7章4.设计任务管理类子系统设计任务管理类子系统 任务(任务(Task)是一个处理过程或进程,它可能包含不同类的
37、多个操作的执行。而任务管理)是一个处理过程或进程,它可能包含不同类的多个操作的执行。而任务管理类是指那些为实现对多操作并发执行的管理任务而设计的类,它是使软件系统能够同时处理多个类是指那些为实现对多操作并发执行的管理任务而设计的类,它是使软件系统能够同时处理多个并发行为所需要的类。并发行为所需要的类。当软件系统中有并发行为时,需要依据各个行为的协调和通信关系,划分各种任务,以简当软件系统中有并发行为时,需要依据各个行为的协调和通信关系,划分各种任务,以简化软件系统结构的设计及部分编码工作。设计任务管理子系统主要有以下工作:化软件系统结构的设计及部分编码工作。设计任务管理子系统主要有以下工作:(
38、1)设计任务管理子系统)设计任务管理子系统(2)分析评审各个任务)分析评审各个任务(3)定义各个任务)定义各个任务 7.5.2 面向对象设计的准则和启发式规则面向对象设计的准则和启发式规则7.6 系统设计第7章5.设计数据管理类子系统设计数据管理类子系统数据管理类是指为实现对数据进行管理而设计的类,它是使软件系统能够对对象的属性值数据管理类是指为实现对数据进行管理而设计的类,它是使软件系统能够对对象的属性值进行存贮和检索所需要的类。设计数据管理类的目的是为了使得对对象属性值的管理独立于各种进行存贮和检索所需要的类。设计数据管理类的目的是为了使得对对象属性值的管理独立于各种不同的数据管理模式,包
39、括对永久性数据的访问和管理。不同的数据管理模式,包括对永久性数据的访问和管理。数据管理子系统是系统存贮和检索对象的基本设施,它建立在某种数据存储管理模式数据管理子系统是系统存贮和检索对象的基本设施,它建立在某种数据存储管理模式(文件、文件、关系数据库或面向对象数据库关系数据库或面向对象数据库)之上,而隔离了数据存储管理模式对对象存储或检索的影响。之上,而隔离了数据存储管理模式对对象存储或检索的影响。(1)选择数据存储管理模式)选择数据存储管理模式(2)设计数据管理类的操作)设计数据管理类的操作(3)数据的存储管理)数据的存储管理7.5.2 面向对象设计的准则和启发式规则面向对象设计的准则和启发
40、式规则7.7 类|&|对象设计第7章OOA阶段中得到的对象模型,通常并没有描述类中的服务。阶段中得到的对象模型,通常并没有描述类中的服务。OOD阶段主要是扩充、完善和阶段主要是扩充、完善和细化对象模型的过程。类细化对象模型的过程。类|&|对象设计是低层设计,设计类中的服务、实现服务的算法是对象设计是低层设计,设计类中的服务、实现服务的算法是OOD的重要任务,此外还要设计类的关联、接口形式以及进行设计的优化。的重要任务,此外还要设计类的关联、接口形式以及进行设计的优化。1.对象的设计描述对象的设计描述 2.设计类中的服务设计类中的服务3设计类的关联设计类的关联4.调整类的继承关系调整类的继承关系 5.优化设计优化设计 7.7 类|&|对象设计第7章