面向对象设计及实现

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

CH7面向对象技术面向对象设计可分为系统设计和类(对象)设计。系统设计是高层设计,主要确定实现系统的策略和目标系统的高层结构。类-&-对象设计是低层设计,主要确定解空间中的类、关联、接口形式及实现服务的算法;高层设计主要确定系统的结构、用户界面,即用来构造系统的总的模型,并把任务分配给系统的各个子系统。CH7面向对象技术1.面向对象设计的设计准则(1)模块化模块化是软件设计的重要准则。在面向对象开发方法中,将对象定义为模块。对象把数据结构和作用在数据上的操作(方法)封装起来构成模块。对象是组成系统的基本模块。(2)抽象类是一种抽象数据类型,在该数据类型之上,可以创建对象(类的成员)。类包含相似对象的共同属性和服务,它对外定义了公共接口,构成了类的规格说明(即协议),供外界合法访问。(3)信息隐藏在面向对象方法中,对象是属性和服务的封装体,这就实现了信息隐藏。类结构分离了接口与实现,类的属性的表示方法和操作的实现算法,对于类的用户来说,都应该是隐藏的,用户只能通过公共接口访问类中的属性。CH7面向对象技术(4)弱耦合所谓耦合,是指一个软件结构内不同模块之间互连的依赖关系。依赖关系越多耦合度越强,依赖关系越少耦合度越弱。在面向对象方法中,对象是最基本的模块,不同对象之间相互关联的依赖关系表示了耦合度。衡量设计优良的一个重要标准就是弱耦合,弱耦合的设计中某个对象的改变不会或很少影响到其他对象。不同对象之间耦合是不可避免的。两个对象必须相互联系相互依赖时,应该通过类的协议(即公共接口)实现两个对象相互依赖(耦合),而不是通过类的具体实现细节来描述。(5)强内聚所谓内聚,是一个模块内各个元素彼此结合的紧密程度。结合得越紧密内聚越强,结合得越不紧密内聚越弱。强内聚也是衡量设计优良的一个重要标准。在面向对象设计中,内聚可分为下述三类:CH7面向对象技术1)服务(操作)内聚。一个服务应该是单一的,即只完成一个任务。2)类内聚。类内聚要求类的属性和服务应该是高内聚的,而且它们应该是系统任务所必需的。一个类应该只有一个功能,如果某个类有多个功能,通常应该把它分解成多个专用的类。3)一般-特殊内聚。一般-特殊内聚表示:一般-特殊结构符合领域知识的表示形式,也就是说,特殊类应该尽量地继承一般类的属性和服务。这样的一般-特殊结构是高内聚的。(6)可重用在面向对象设计中,一个类的设计应该具有通用性,为开发相似的系统提供软件重用可能。因此,在软件开发过程中,为了实现重用,既要尽量重用已有的类,又要创建可重用的新类。CH7面向对象技术2.设计策略在使用面向对象方法学开发软件的实践中,得出了下面一些基于经验的启发规则,这些规则往往能帮助软件开发人员设计出好的方案来,以保证软件的质量。(1)设计结果应该清晰易懂(2)一般-特殊结构的深度应适当(3)设计简单的类(4)设计简单的协议(5)设计简单的服务(6)减少设计变动CH7面向对象技术3.系统分解与组织面向对象设计同过程设计一样,自顶向下进行功能分解。在设计比较复杂的应用系统时,将系统分解成若干个比较小的部分,再分别设计每个部分。这样既简化了应用系统,又降低了设计的难度,并有利于实现和维护。系统是根据功能来分解的,我们将系统分解的各个部分(即系统的主要组成部分)称为子系统。子系统间交互的形式和交互的信息由接口确定,因此,接口应该简单、明确。CH7面向对象技术(1)面向对象设计的五个层次、四个部分面向对象设计模型同样由主题、类-&-对象、结构、属性和服务等五个层次组成,并且又扩充了问题域(PDC)、人机交互(HIC)、任务管理(TMC)和数据管理(DMC)四个部分。典型的面向对象设计模型如图3.3.23示。CH7面向对象技术人机界面HICPDCTMCDMC问题论域任务管理数据管理主题层类-&-对象层结构层属性层服务层图3.3.23典型的面向对象设计模型CH7面向对象技术(2)子系统间的交互方式在应用系统中,子系统之间的关系可分为客户/服务器关系和同等伙伴关系两种。这两种关系对应两种交互的方式,即客户/服务器交互方式和同等伙伴交互方式。通常,系统使用客户/服务器关系,因为单向交互更容易理解,也更容易设计和修改,而双向交互相对困难些。(3)系统组织将子系统组织成完整的系统有两种方式,即水平层次组织和垂直块组织。1)层次组织层次组织是将子系统按层组织成为一个层次软件系统,每层是一个子系统。上层建立在下层的基础上,下层为上层提供必要的服务。低层子系统提供服务,相当于服务器,上层子系统使用下层提供的服务,相当于客户。CH7面向对象技术2)块组织块组织将系统垂直地分解成若干个相对独立的、弱耦合的子系统,一个子系统相当于一块,每块提供一种类型的服务。例如,图3.3.24示一个典型应用系统的组织结构。计算机硬件操作系统人机交互控制像素图形屏幕图形窗口图形仿真软件包应用包(4)设计系统的拓扑结构:构成完整系统的拓扑结构有:管道型、树型、星型等。CH7面向对象技术[补充]:概括地说,面向对象软件开发方法采用面向对象设计(OOD)技术进行问题解决方案的设计工作,它将问题的解决方案表述为:类+关联的形式,其中,类包括问题空间类、用户界面类、任务管理类和数据管理类,是从设计的角度出发对问题解决方案中的对象的抽象和描述,关联则用于描述这些类和类之间的关系。因此,面向对象设计工作主要包括问题空间类、用户界面类、任务管理类和数据管理类的设计,具体工作内容和步骤如图3.3.25所示。CH7面向对象技术图3.3.25面向对象设计工作内容和步骤CH7面向对象技术一、问题空间类是指那些直接从面向对象分析模型设计得到的类,它是使软件系统能够实现对问题的求解的最基本的类,也是面向对象软件系统的核心类。利用面向对象分析技术对问题进行了分析描述之后,就可以直接将其结果用于问题空间类的设计,即直接将分析所得到的对象、对象与对象之间的关联确定为类以及类与类之间的关联,这些直接从分析结果得到的类就是问题空间类。以一个字处理系统为例,如下图所示:CH7面向对象技术图示:结构化方法设计结果CH7面向对象技术又例:下图示以及表1~8所示的是大学教务管理问题中的问题空间类。图示:大学教务管理问题中的问题空间类CH7面向对象技术表5.1Class:Student(学生)数据变量序号名称定义类型中文名称备注1IDchar(8)描述型学号2Namechar(24)描述型姓名3Sex[男,女]描述型性别枚举类型4Birthdaydate描述型出生日期5EnrollmentDaydate描述型入学日期6Departmentchar(24)描述型系别7Specialitychar(24)描述型专业8Passwordchar(6)描述型密码9Application[注册,选课]描述型申请枚举类型CH7面向对象技术操作序号名称接口参数返回值中文名称备注1GetID()ID读入学号GetPassword()Password读入密码2VerifyPassword()True/Fasle检验3GetApplication()Application询问4PutApplication()NULL回答5Note(message)NULL通知6ChangePassword(NewPassword,OldPassword)NULL修改CH7面向对象技术表5.2Class:Graduate(研究生)表5.3Class:UnderGraduate(本科生)表5.4Class:RegisterRec(注册记录)表5.5Class:Course(课程)表5.6Class:GraduateCourse(研究生课程)表5.7Class:UnderGraduate(本科生课程)表5.8Class:SelectCourse(选课单)CH7面向对象技术二、用户界面类是指那些为实现人机交互接口而设计的类,它是使软件系统能够接收用户的命令和能够为用户提供信息所需要的类。用户界面类是为了使系统能够与用户进行交互而必须增添设计的类。在实际中,一个软件系统常常会因为其用户界面使得用户不满意而遭到否定或弃之不用。因此用户界面类的设计是一项既影响软件系统前途,又需要做耐心细致调查分析的重要工作。尽管在分析过程中已经对用户在用户界面方面进行了分析,但是在设计过程中仍然必须继续做这项分析工作,必须具体设计确定交互作用的时间、交互方式和交互技术等。用户界面类的设计通常可以采用系统原型(模型)法进行。CH7面向对象技术1、分析考察用户2、设计命令层次1)研究用户交互的意义及准则如果已建立的交互系统中已有命令层次,则先研究这个已有的交互界面的意义和准则。2)建立初始命令层可以以多种方式提供给用户,如窗口、按钮、下拉菜单、菜单条、可动的图标,等等。3)细化命令层为了细化命令层,应考虑如下几个问题:(1)排序。在开发命令层时,必须仔细选择不同的操作名称,并把这些名称按一定要求排序,将最有用的放在前面,或者按习惯的工作步骤排序。(2)组装。在操作中寻找组装结构模式,这有助于在层次中组织和分离操作。CH7面向对象技术(3)宽度和广度。由于人的短暂记忆局限,命令层次不宜太广太深。以3最为合适。(4)极小化。尽量少用组合键,极小化用户的击键次数。3、完成设计当前由于软件开发工具,特别是可视化开发工具的日益丰富,完成用户界面的具体设计已经是一件十分容易的事情了,但是在具体设计时不能忽略以下原则:1)一致性使用一致的术语,一致的步骤和一致的动作行为。2)减少步骤极小化击键次数、使用鼠标的次数和下拉菜单的次数,极小化响应时间。3)尽量显示提示信息尽量为用户提供有意义的、及时反馈信息。4)设置取消操作用户难免出错,应尽量能使用户取消其错误动作。CH7面向对象技术5)尽量减少要用户记忆的内容不应该要求用户记下某窗口的信息而用于另一窗口中。6)易学易用为用户提供联机学习手册。7)屏幕生动活泼屏幕画面看起来能够吸引用户,唤起用户的注意和兴趣。例如,对于大学教务管理问题,可以先根据对用户的分析设计如下页图所示的用户进入系统的屏幕。CH7面向对象技术图示:用户进入系统屏幕界面然后,根据针对该用户界面和大多数面向对象软件开发环境所提供的可重用类设计相应的用户界面类,设计结果如下页图所示。CH7面向对象技术图示:大学教务管理问题的部分用户界面类和问题空间类CH7面向对象技术其中,Window、EditField、StaticField和Button等类一般可从开发环境提供的类库中通过继承重用获得,需要进一步做的设计工作主要是设计有关与问题空间类和任务管理类进行通讯的操作。例如需要为OKButton类设计一个向问题空间类中的Student类发送检验消息的操作。CH7面向对象技术三、任务管理类是指那些为实现对多操作并发执行的管理而设计的类,它是使软件系统能够同时处理多个并发行为所需要的类。所谓任务,就是一个处理过程,它可能包含不同类的多个操作的执行。任务管理类的用途之一就是用于管理系统的这种任务,它的另一个主要用途是在操作系统级(运行平台)上负责处理并发、中断、调度等问题,从而使得所设计的系统能够相对独立于运行平台,当需要移植到其它运行平台上,只需要替换有关任务管理类就可以了。因此,为了设计任务管理类,首先必须从所设计的系统有关类中找出需要并发进行的操作和那些与特定运行平台有关的操作,然后再对它们进行分析设计1、确定任务类型1)确定事件驱动型任务CH7面向对象技术某些任务是由事件驱动而执行的。这种任务可能负责与设备的通讯,与一个窗口或多个窗口、其它任务、子系统、其它处理器或其它系统的通讯。2)确定时钟驱动型任务这种任务在特定的时间被触发执行某些处理。例如,某些设备要求周期性地获得数据或控制,某些用户界面、子系统、任务、处理器或其它系统也可能需要周期性地通讯。此时就常用到时钟驱动型的任务。3)确定优先任务及临界任务优先任务分高优先级和低优先级二种,用来适应处理的需要。临界任务是有关系统成功或失败的临界处理,它尤其涉及严格的可靠性约束。4)确定协调任务当存在三个以上的任务

1 / 49
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功