【网络课件】宜宾学院-第十一章第十二章面向对象设计与实现

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

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

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

资源描述

YibinuUniversitySchoolofComputer&InformationEngineering软件工程第十一章面向对象设计第十二章面向对象实现YibinuUniversitySchoolofComputer&InformationEngineering211.1面向对象设计的准则11.2启发规则11.3软件重用11.4系统分解11.5设计问题域子系统11.6设计人机交互子系统11.7设计任务管理子系统11.8设计数据管理子系统11.9设计类中的服务YibinuUniversitySchoolofComputer&InformationEngineering3面向对象设计是把分析阶段得到的需求转变成符合成本和质量要求的、抽象的系统实现方案的过程。从面向对象分析到面向对象设计,是一个逐渐扩充模型的过程生命周期方法学把设计进一步划分成总体设计和详细设计两个阶段,类似地,也可以把面向对象设计再细分为系统设计和对象设计。系统设计确定实现系统的策略和目标系统的高层结构。对象设计确定解空间中的类、关联、接口形式及实现操作的算法。YibinuUniversitySchoolofComputer&InformationEngineering4YibinuUniversitySchoolofComputer&InformationEngineering511.1面向对象设计的准则1、模块化(Modularity):对象就是模块。把数据结构和操作这些数据的方法紧密地结合在一起所构成的模块2、抽象:不仅支持过程抽象,而且支持数据抽象。3、信息隐蔽:通过对象的封装性来实现。4、弱藕合:对象是最基本的模块,因此,耦合主要指不同对象之间相互关联的紧密程度。分为交互藕合和继承藕合YibinuUniversitySchoolofComputer&InformationEngineering65、强内聚:分为服务内聚、类内聚和一般特殊内聚。6、可重用:11.3节讨论YibinuUniversitySchoolofComputer&InformationEngineering711.2启发规则1、设计结果应该清晰易懂2、一般特殊结构的深度适当3、设计简单的类4、使用简单的协议5、使用简单的服务6、把设计变动减至最小YibinuUniversitySchoolofComputer&InformationEngineering811.3软件重用11.3.1概述1、软件重用的概念软件复用是指重复使用已有的软件产品用于开发新的软件系统,以达到提高软件系统的开发质量与效率,降低开发成本的目的。可复用的软件成分一可复用构件(ReusableComponent)可从旧软件中提取,也可以专门为复用而开发。在软件复用中重复使用的软件产品不仅仅局限于程序代码,而是包含了在软件生产的各个阶段所得到的各种软件产品。YibinuUniversitySchoolofComputer&InformationEngineering9可以用于软件复用的软件产品,按照其抽象程度的高低,可以划分为如下的复用级别:(1)代码复用二进制形式的经过编译产生的目标代码。文本形式的源代码(2)设计结果的复用设计结果比源程序的抽象级别更高,因为它的复用受实现环境的影响较小,从而使可复用构件被复用的机会更多,并且所需的修改更少。这种复用有三种途径:软件成分的重用级别YibinuUniversitySchoolofComputer&InformationEngineering10从现有系统的设计结果中提取一些可复用的设计构件把一个现有系统的全部设计文档在新的软硬件平台上重新实现。独立于任何具体的应用,有计划地开发一些可复用的设计构件(3)分析结果的复用这是比设计结果的复用抽象程度更高的复用,可被复用的分析结果是针对问题域的某些事物或某些问题的抽象程度更高的解法,受设计技术及实现条件的影响非常小,所以可复用的机会更大。YibinuUniversitySchoolofComputer&InformationEngineering1111.3.2类构件面向对象技术中的“类”,是比较理想的可重用软构件,称之为类构件。1、可重用软构件的特点一个软构件能在构造各种各样的软件系统时方便地重复使用,必须具备的条件:1)独立性强:2)高度可塑性:3)接口清晰YibinuUniversitySchoolofComputer&InformationEngineering122、类构件重用的方式1)实例重用2)继承重用3)多态重用YibinuUniversitySchoolofComputer&InformationEngineering1311.3.3软件重用的效益1、提高软件质量2、提高软件生产率3、降低软件成本YibinuUniversitySchoolofComputer&InformationEngineering1411.4系统分解系统的主要组成部分称为子系统。与面向对象分析模型一样,面向对象设计模型也由主题、类与对象、结构、属性、服务等5个层次组成。大多数系统的面向对象设计模型在逻辑上都由4大部分组成,分别是:问题域子系统(问题空间类)人机交互子系统(用户界面类)任务管理子系统(任务管理类)数据管理子系统(数据管理类)YibinuUniversitySchoolofComputer&InformationEngineering151、子系统之间的两种交互方式1)客户一供应商关系作为“客户”的子系统调用作为“供应商”的子系统,后者完成某些服务工作并返回结果。2)平等伙伴关系每个子系统都可能调用其他子系统,因此,每个子系统都必须了解其他子系统的接口。YibinuUniversitySchoolofComputer&InformationEngineering162、组织系统的两种方案把子系统组织成完整的系统时,有水平层次组织和垂直块组织两种方案可供选择。(1)层次组织这种组织方案把软件系统组织成一个层次系统,每层是一个子系统。(2)块状组织这种组织方案把软件系统垂直地分解成若干个相对独立的、弱藕合的子系统,一个子系统相当于一块,每块提供一种类型的服务。YibinuUniversitySchoolofComputer&InformationEngineering17采用了层次与块状的混合结构YibinuUniversitySchoolofComputer&InformationEngineering18概括地说,面向对象软件开发方法采用面向对象设计(OOD)技术进行问题解决方案的设计工作,它将问题的解决方案表述为:类+关联的形式,其中,类包括问题域子系统(问题空间类)、人机交互子系统(用户界面类)、任务管理子系统(任务管理类)和数据管理子系统(数据管理类),是从设计的角度出发对问题解决方案中的对象的抽象和描述。关联则用于描述这些类和类之间的关系。YibinuUniversitySchoolofComputer&InformationEngineering19面向对象设计工作内容和步骤因此,面向对象设计工作主要包括问题空间类、用户界面类、任务管理类和数据管理类的设计,具体工作内容和步骤如图所示。YibinuUniversitySchoolofComputer&InformationEngineering20一、问题空间类(11.5设计问题域子系统)是指那些直接从面向对象分析模型设计得到的类,它是使软件系统能够实现对问题的求解的最基本的类,也是面向对象软件系统的核心类。利用面向对象分析技术对问题进行了分析描述之后,就可以直接将其结果用于问题空间类的设计,即直接将分析所得到的对象、对象与对象之间的关联确定为类以及类与类之间的关联,这些直接从分析结果得到的类就是问题空间类。以一个字处理系统为例,如下图所示:YibinuUniversitySchoolofComputer&InformationEngineering21图示:结构化方法设计结果YibinuUniversitySchoolofComputer&InformationEngineering22又例:下图示以及表1~8所示的是大学教务管理问题中的问题空间类。图示:大学教务管理问题中的问题空间类YibinuUniversitySchoolofComputer&InformationEngineering23表5.1Class:Student(学生)数据变量序号名称定义类型中文名称备注1IDchar(8)描述型学号2Namechar(24)描述型姓名3Sex[男,女]描述型性别枚举类型4Birthdaydate描述型出生日期5EnrollmentDaydate描述型入学日期6Departmentchar(24)描述型系别7Specialitychar(24)描述型专业8Passwordchar(6)描述型密码9Application[注册,选课]描述型申请枚举类型YibinuUniversitySchoolofComputer&InformationEngineering24操作序号名称接口参数返回值中文名称备注1GetID()ID读入学号GetPassword()Password读入密码2VerifyPassword()True/Fasle检验3GetApplication()Application询问4PutApplication()NULL回答5Note(message)NULL通知6ChangePassword(NewPassword,OldPassword)NULL修改YibinuUniversitySchoolofComputer&InformationEngineering25表2Class:Graduate(研究生)表3Class:UnderGraduate(本科生)表4Class:RegisterRec(注册记录)表5Class:Course(课程)表6Class:GraduateCourse(研究生课程)表7Class:UnderGraduate(本科生课程)表8Class:SelectCourse(选课单)YibinuUniversitySchoolofComputer&InformationEngineering26二、用户界面类(11.6设计人机交互子系统)是指那些为实现人机交互接口而设计的类,它是使软件系统能够接收用户的命令和能够为用户提供信息所需要的类。用户界面类是为了使系统能够与用户进行交互而必须增添设计的类。在实际中,一个软件系统常常会因为其用户界面使得用户不满意而遭到否定或弃之不用。因此用户界面类的设计是一项既影响软件系统前途,又需要做耐心细致调查分析的重要工作。YibinuUniversitySchoolofComputer&InformationEngineering27尽管在分析过程中已经对用户在用户界面方面进行了分析,但是在设计过程中仍然必须继续做这项分析工作,必须具体设计确定交互作用的时间、交互方式和交互技术等。用户界面类的设计通常可以采用系统原型(模型)法进行。YibinuUniversitySchoolofComputer&InformationEngineering281、分析考察用户2、设计命令层次1)研究用户交互的意义及准则如果已建立的交互系统中已有命令层次,则先研究这个已有的交互界面的意义和准则。2)建立初始命令层可以以多种方式提供给用户,如窗口、按钮、下拉菜单、菜单条、可动的图标,等等。YibinuUniversitySchoolofComputer&InformationEngineering293)细化命令层为了细化命令层,应考虑如下几个问题:(1)排序。在开发命令层时,必须仔细选择不同的操作名称,并把这些名称按一定要求排序,将最有用的放在前面,或者按习惯的工作步骤排序。(2)组装。在操作中寻找组装结构模式,这有助于在层次中组织和分离操作。(3)宽度和广度。由于人的短暂记

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

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

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

×
保存成功