版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第十一章 面向对象设计,主讲人:赵方,北京林业大学 软件教研室,面向对象设计,面向对象设计(OOD)就是把分析阶段得到的需求转变成符合成本和质量要求的、抽象的系统实现方案的过程。 面向对象设计的任务就是按照设计原则,对模型进行细化,朝着实现系统的方向进行多次迭代。 主要工作如下: 1、设计软件的体系结构(C/S,B/S,管道,分层,分块)(设计软件架构) 2、合理选用设计模式 3、划分组件和包以及接口 4、设计组件、类及接口(详细设计),北京林业大学 软件教研室,主要内容,面向对象设计的准则 启发式规则 软件重用 系统分解 设计问题域子系统 设计人-机交互子系统,设计任务管理子系统 设计数据管
2、理子系统 设计类中的服务 设计关联 设计优化,北京林业大学 软件教研室,面向对象设计的准则,模块化 抽象 信息隐蔽 弱耦合 强内聚 可重用,北京林业大学 软件教研室,面向对象设计的准则,1、模块化 面向对象开发方法很自然地支持了把系统分解成模块的设计原则:对象就是模块。它是把数据结构和操作这些数据的方法紧密地结合在一起所构成的模块。,北京林业大学 软件教研室,面向对象设计的准则,2、抽象 面向对象方法不仅支持过程抽象,而且支持数据抽象。 1、类是抽象的数据类型 2、参数化数据类型,参数化类 3、信息隐蔽 在面向对象方法中,信息隐藏通过对象的封装性来实现。,北京林业大学 软件教研室,面向对象设计
3、的准则,4、弱耦合 在面向对象方法中,对象是最基本的模块,因此,耦合主要指不同对象之间相互关联的紧密程度。低耦合是设计的一个重要标准,因为这有助于使得系统中某一部分的变化对其它部分的影响降到最低程度。 (1)交互耦合:通过消息连接实现 (2)继承耦合:构成粒度更大的模块,所以结合的程度应该紧密。,北京林业大学 软件教研室,面向对象设计的准则,5、强内聚 (1)服务内聚:一个服务只完成一个功能 (2)类内聚:一个类应该只有一个用途 (3)一般特殊内聚: 紧密的继承耦合与高度的一般特殊内聚是一致的。 6、可重用 (1)尽量使用已有的类 (2)设计新的类时要考虑将来的重用问题,北京林业大学 软件教研
4、室,启发式规则,1、设计结果应该清晰易懂 用词一致:名字与代表的事物一致 使用已有的类协议 减少消息模式的数目 避免模糊的定义:类的名称与用途一致 2、一般特殊结构的深度应该适中,北京林业大学 软件教研室,启发式规则,3、设计简单的类 应该尽量设计小而简单的类,这样便于开发和管理。为了保持简单,应注意以下几点: 避免包含过多的属性 有明确的类定义 简化对象之间的合作关系 不要提供太多服务 4、 使用简单的协议(较少的参数) 一般来说,消息中参数不要超过3个。,北京林业大学 软件教研室,启发式规则,5、使用简单的服务 面向对象设计出来的类中的服务通常都很小,一般只有3至5行源程序语句,可以用仅含
5、一个动词和一个宾语的简单句子描述它的功能 6、 把设计变动减少到最小 通常,设计的质量越高,设计结果保持不变的时间也越长。即使出现必须修改设计的情况,也应该使修改的范围尽可能小。,北京林业大学 软件教研室,软件重用,概述 1、重用 2、软件成分的重用级别 3、典型的可重用软件成分 类构件 1、可重用软构件应具备的特点 2、类构件的重用方式 软件重用的效益 1、质量 2、成本 3、生产率 软件重用技术,北京林业大学 软件教研室,软件重用,1、重用 A、知识重用 B、方法和标准重用 C、软件成分重用 2、软件成分重用的级别 A、代码重用:代码剪贴、源代码包含、继承。 B、设计结果重用 C、分析结果
6、重用,概述,北京林业大学 软件教研室,软件重用,3、典型的可重用软件成分 项目计划 成本估计 体系结构 需求和规格说明 设计,概述,源代码 文档 用户界面 数据 测试用例等,北京林业大学 软件教研室,软件重用,1、可重用类构件的特点 模块独立性好 具有高度的可塑性 接口清晰简单可靠 2、类构件重用方式 实例重用 继承重用 多态重用,类构件,北京林业大学 软件教研室,软件重用,1、质量 被重用的代码错误率0.9/千行 新开发的代码错误率4.1/千行 2、成本(为实现软件重用需付出的代价) A、为软构件投资 B、为更高级的软件质量投资 C、建立和维护软类库的费用,软件重用的效益,北京林业大学 软件
7、教研室,软件重用,3、生产率 重用率与生产率的关系 一般情况下,重用率的提高可以直接提高生产率,30%50%的重用可以导致25%40%的生产率的提高。,软件重用的效益,北京林业大学 软件教研室,软件重用,3、生产率 重用率与生产率的关系 一般情况下,重用率的提高可以直接提高生产率,30%50%的重用可以导致25%40%的生产率的提高。,软件重用的效益,北京林业大学 软件教研室,软件重用,1、软件组合技术 2、软件生成技术 3、面向对象软件重用,软件重用技术,北京林业大学 软件教研室,系统分解(设计过程1),系统中主要的组成部分称为子系统 既不是一个对象也不是一个功能, 而是类、关联、操作、事件
8、和约束的集合。 大多数系统的面向对象模型是由以下四个部分组成: 1、问题域子系统 2、人机交互子系统 3、任务管理子系统 4、数据库子系统,北京林业大学 软件教研室,系统分解,典型的面向对象设计模型,北京林业大学 软件教研室,系统分解,1、子系统之间的两种交互关系 客户供应商关系 平等伙伴关系 2、系统组织的两种方案 层次组织 块状组织 3、设计系统的拓扑结构 管道形 树形 星形,北京林业大学 软件教研室,系统分解,典型应用系统的组织结构,北京林业大学 软件教研室,设计问题域子系统(设计过程2),1、调整需求 2、重用已有的类 (1)重用那些使无用的属性和服务降到最低程度的类; (2)在被重用
9、的类和问题域类之间添加泛化关系; (3)标出问题域类中从已有类中继承来的属性和方法,现在已经不用在问题域中定义它们了; (4)修改与问题域类相关的关联。,北京林业大学 软件教研室,设计问题域子系统,3、把问题域组织到一起 4、添加一般化类建立协议 5、调整继承层次 (1)使用多继承机制 (2)使用单继承机制 (3)不具备继承机制,北京林业大学 软件教研室,设计问题域子系统,窄菱形模式,北京林业大学 软件教研室,设计问题域子系统,阔菱形模式,北京林业大学 软件教研室,设计问题域子系统,6、ATM系统例 在面向对象设计过程中,ATM系统的问题域子系统的结构如下图所示。,把ATM系统的问题域子系统,
10、进一步分解成更小的ATM站子系统,中央计算机子系统和分行计算机子系统,构成星型拓扑结构。以中央计算机为中心向外连接(用专用电话线),与所有ATM站和分行计算机通信。区分每个ATM站和每台分行计算机连向中央计算机的电话线,分别用ATM站号和分行代码来实现。,北京林业大学 软件教研室,设计问题域子系统,7、ATM系统分析 在面向对象分析过程中,ATM系统的问题域结构如下图所示。,北京林业大学 软件教研室,设计问题域子系统,8、ATM系统分析(细化) 在面向对象分析过程中,ATM系统的问题域结构如下图所示。,北京林业大学 软件教研室,设计问题域子系统,9、ATM子系统细化 在面向对象设计过程中,AT
11、M子系统的问题域结构如下图所示。,北京林业大学 软件教研室,设计问题域子系统,10、WithDaw子系统细化 在面向对象设计过程中,ATM子系统的问题域结构如下图所示。,北京林业大学 软件教研室,设计问题域子系统,11、Account子系统细化 在面向对象设计过程中,ATM子系统的问题域结构如下图所示。,北京林业大学 软件教研室,设计问题域子系统,12、ATM系统细化后的协作图 在面向对象设计过程中,ATM子系统的问题域结构如下图所示。,北京林业大学 软件教研室,设计问题域子系统,13、ATM系统部署图 在面向对象设计过程中,ATM子系统的问题域结构如下图所示。,北京林业大学 软件教研室,设计
12、人机交互子系统(设计过程3),人机交互子系统也称人机交互部分(HIC,Human Interaction Component)。 人机交互部分的设计结果,将对用户使用系统带来很大影响。 人机界面设计得好,则会使系统产生魅力,吸引用户经常使用系统,并觉得与系统的交互是友好的、兴奋的,还能提高工作效率;反之不然。,北京林业大学 软件教研室,设计人机交互子系统,为了得到良好的人机界面,在分析阶段要对用户进行分析,在设计阶段要延续该分析,包括对用户、交互时间、交互技术等进行分析。 在人机交互子系统设计中,在初步分析用户界面需求的基础上,对人机交互的细节进行详细设计,包括对窗口、对话框和报表的形式,设计
13、命令层次组织等内容的设计。 设计人机交互子系统的关键,是使用原型技术。建立人机界面的原型,征求用户的意见,获取用户的评价,也是设计人机界面的一种有效途径。,北京林业大学 软件教研室,设计人机交互子系统,1、设计人机交互界面的准则 (1)一致性 (2)减少步骤 (3)及时提供反馈信息 (4)提供撤消命令 (5)无须记忆 (6)易学 (7)富有吸引力,北京林业大学 软件教研室,设计人机交互子系统,2、设计人机交互子系统的策略 (1)分类用户 (2)描述用户 (3)设计命令层次 (4)设计人机交互类,北京林业大学 软件教研室,设计人机交互子系统,设计命令层是界面设计的重要部分,一般包含下列工作: (
14、1) 研究现有的人机交互的准则。 命令层设计有许多方式,但目前最受用户喜爱的是Windows界面,Windows已经成了微机上图形用户界面事实上的工业标准。所有Windows应用程序的界面是一致的,窗口布局、菜单、术语等使用,以及界面的风格、习惯等都是一致的,Windows的命令层设计采用了下拉式菜单和弹出式菜单,而且各菜单的组织方式也类似。 设计图形用户界面时,应该保持与普通Windows应用程序界面一致,并遵守广大用户习惯的约定,这样才会被用户接受和喜爱。,北京林业大学 软件教研室,设计人机交互子系统,(2) 设计初始命令层。 所谓命令层,是将系统中的可用服务用过程抽象机制组织起来的一种体
15、现。设计时首先从服务的基本过程抽象开始,确定系统中最上层(如大的操作,相近小命令的总称,多层命令的最上层等),然后再修改它们,以符合目标系统的特定需要。,北京林业大学 软件教研室,设计人机交互子系统,(3) 优化命令层。 为使命令层完善、合理以及使用方便,应该考虑下列一些因素,作进一步修改。 排列: 检查每个服务的名字,并将服务排在命令层中的合适位置。可按系统功能(服务)顺序排列,也可以按用户习惯的工作顺序排序。 整体 - 部分组合: 通过服务本身发现整体 - 部分关系,来帮助在命令层中对服务组织和分组。,北京林业大学 软件教研室,设计人机交互子系统,(3) 优化命令层。 为使命令层完善、合理
16、以及使用方便,应该考虑下列一些因素,作进一步修改。 宽度和深度: 通常,命令层中同一层显示命令的个数(宽度),设计为(72)个比较合适;命令层中层数(深度)设计为3层比较合适。这样符合人的短期记忆能力。 减少操作步骤: 做同样的工作,按键或拖动鼠标越少越好。并为高级用户提供简捷的操作方法。,北京林业大学 软件教研室,设计任务管理子系统(设计过程4),设计工作的一项重要内容就是,确定哪些是必须同时动作的对象,哪些是相互排斥的对象。然后进一步设计任务管理子系统。 1、分析并发性 2、设计任务管理子系统,北京林业大学 软件教研室,设计任务管理子系统,1、分析并发性 不仅在系统软件中有并发行为,而且在
17、应用软件中也有并发行为,因此,实现中存在并发行为。 在程序的执行时间上与其他程序有交叠的现象,这种时间交叠现象称为“并发性”。 因此,任务管理子系统在设计时,应找出并分析系统中任务的并发性。,北京林业大学 软件教研室,设计任务管理子系统,1、分析并发性 分析并发性的主要依据系统的动态模型 如果对象间不存在交互,或者说它们能同时接收事件,那么这两个对象是并发的。 通过检查各个对象的状态图及它们之间交换的事件,把若干个非并发的对象归并到一起。 独立的任务把必须并发进行的行为分离开来。 这种并发行为既可以在不同的处理器上实现,也可以在单个处理器上利用多任务操作系统仿真实现。 一般来说,划分任务,是为
18、了简化系统中必须的并发行为的设计和编码。,北京林业大学 软件教研室,设计任务管理子系统,2、设计任务管理子系统 (1)确定事件驱动任务 (2)确定时钟驱动任务 (3)确定优先任务 (4)确定关键任务 (5)确定协调任务 (6)审查每个任务,北京林业大学 软件教研室,设计任务管理子系统,2、设计任务管理子系统 (1)确定事件驱动任务 事件驱动任务:由某个事件触发而引起的任务。 事件通常表明一个设备传输过来的一个信息,事件是由设备引起的。 任务是对事件的处理。一个任务可以设计成由一个事件来触发(驱动),该事件常常是对一些数据的到达发信号,而这些数据可能来自输入数据行,或者另一个任务写入的数据缓冲区
19、。这类任务可能主要完成通信工作,例如,与设备、屏幕窗口、其他任务、子系统、另一个处理器或其他系统通信。,北京林业大学 软件教研室,设计任务管理子系统,(1)确定事件驱动任务 事件驱动任务的工作过程为: 任务处于睡眠状态(不消耗处理器时间),等待来自数据行或其他数据源的中断; 接收到中断就唤醒了该任务; 阅读数据并把数据放入内存缓冲区或其他目的地; 向需要知道此事件的对象发出通知,然后该任务又回到睡眠状态。,北京林业大学 软件教研室,设计任务管理子系统,(2)确定时钟驱动任务 时钟驱动任务:按特定的时间间隔被触发后执行某些处理的任务。例如,某些设备需要周期性地获得数据;某些人机接口、子系统、任务
20、、处理器或其他系统也可能需要周期性地通信。 时钟驱动型任务的工作过程为: 任务设置了唤醒时间后进入睡眠状态; 等待来自系统的中断; 接收到中断,任务被唤醒; 进行处理,通知有关的对象; 该任务又回到睡眠状态。,北京林业大学 软件教研室,设计任务管理子系统,(3)确定优先任务 优先级任务:根据事件的优先级高低来做处理的任务。它可以满足高优先级或低优先级的处理需求。 1) 高优先级:有些服务可能是高优先级的,需要把这类服务划分成独立的任务,使该类服务在一个严格限定的时间内完成。 2) 低优先级:有些服务是低优先级的,属于低优先级处理(通常指那些后台处理)。设计时可能用附加的任务把这种服务分离出来。
21、 任务的划分是根据时间决定优先级,根据优先级的高低划分出轻重缓急的任务。,北京林业大学 软件教研室,设计任务管理子系统,(4)确定关键任务 设计时应该分离出那些对于系统的成败特别关键的任务,该类任务通常都有严格的可靠性、安全性要求。 设计时可用附加的任务来分离出关键的任务,应该进行深入细致的设计、编码和测试,以满足高可靠性、安全性处理的要求。也就是说,根据需求决定任务的主次,保证关键任务。,北京林业大学 软件教研室,设计任务管理子系统,(5)确定协调任务 当系统中有三个以上任务时,就应该考虑增加一个任务,用来协调任务之间的关系,该任务称为协调任务 从一个任务到另一个任务的转换时间叫现场转换时间
22、。 协调任务用来控制现场转换时间时,将会给系统设计带来困难,但是引入协调任务可为封装不同任务之间的协调控制带来好处。该任务的行为可用状态转换矩阵来描述。 这样的任务应该只做协调工作,不必分配它其他的工作。,北京林业大学 软件教研室,设计任务管理子系统,(6)审查每个任务 对任务的性质进行审查,去掉人为的、不必要的任务,要使任务数保持到最少。 设计多任务系统的主要问题是,设计者常常为了自己设计和编程的方便而增加任务。这样既增加了总体设计的技术复杂度,又降低了系统的可理解性,从而也加大了系统维护的难度。,北京林业大学 软件教研室,设计数据管理子系统(设计过程5),1、选择数据存储管理模式 (1)文
23、件管理系统 (2)关系数据库管理系统 (3)面向对象数据库管理系统 2、设计数据管理子系统 (1)设计数据格式 (2)设计相应的服务,北京林业大学 软件教研室,设计数据管理子系统,3、例子,在这个例子中,需要存储的对象主要是帐户类的对象。 为了支持数据管理子系统的实现,帐户类对象必须知道自己是怎样存储的: (1)每个对象自己保存自己 (2)由数据管理子系统负责存储对象,ATM系统的问题域子系统的结构,北京林业大学 软件教研室,设计类中的服务,1、确定类中应有的服务 2、设计实现服务的方法 (1)设计实现服务的算法 (2)选择数据结构 (3)定义内部类和内部操作,北京林业大学 软件教研室,设计类
24、中的服务,(1)设计实现服务的算法 算法设计按如下过程进行: A 选择极小化开销的算法。 B 选择适用于该算法的数据结构。 C 定义必需的新的内部类和操作。 D 将操作响应赋给合适的类。 选择算法应考虑下列因素 A 计算复杂度 B 易实现,易理解,易修改 C 稳定性好,北京林业大学 软件教研室,设计类中的服务,(2)选择数据结构 选择算法时涉及到选择算法使用的数据结构,许多实现的数据结构都是包容类的实例,大多数面向对象语言提供了基本数据结构供用户自选组合定义。 (3)定义内部类和操作 在展开算法时,可能引入一些对象类,用来存放中间结果,在分解高层操作时也可引入新的低层操作。必须定义这些低层操作
25、,因为大多数这类操作是外部不可见的。,北京林业大学 软件教研室,设计关联,关联是在对象模型中联结不同对象的纽带,它指定了对象相互间的访问路径。 在面向对象分析过程中,仅是初步确定对象之间的关联和阶数。 在面向对象设计过程中,必须确定实现关联的具体策略。根据应用系统中的使用方式来确定实现关联的策略。可以选定一个统一实现所有关联的全局性的策略,或者对不同的关联选择不同的实现策略。,北京林业大学 软件教研室,设计关联,先对使用关联的方式进行分析研究,总结它们的使用方式,然后根据不同的使用方式设计出具体的实现关联的途径。,北京林业大学 软件教研室,设计关联,1、 关联的遍历 通常应用系统中使用关联的方式有单向遍历和双向遍历两种。根据应用系统的复杂程度不同,使用关联的方式也不同。有些关联只需要单向遍历,可有些关联可能需要双向遍历。单向关联的实现自然比较简单,而双向关联实现起来相对复杂一些。,北京林业大学 软件教研室,设计关联,2、单向关联的实现 单向遍历的关联可用指针来实现,指针是一个含有对象引用的属性。,北京林业大学 软件教研室,设计关联,2、单向关联的实现 如果关联的阶是一元的,则可用一个简单指针来实现,用指针实现单向关联 (a) 关联 (b) 实现,北京林业大学 软件教研室,设计关联,2、单向关联的实现 如果关联的阶是多元的,则需
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年《卫生人才评价考试卫生事业管理》题库附答案
- 2026年建筑初级考试试题及答案
- 2026年消防员职业技能鉴定基础理论知识题库及答案
- 中华传统我传承,小学主题班会课件
- 林甸县(2025年)公共基础辅警考试笔试题库及答案
- 2026年三基医师考试试题及答案
- 2026年儿科学练习题及答案
- 2026年患者安全与护理质量试题及答案
- 2026年职业指导师四级试题及答案
- 2026年《治安管理处罚法》知识考试题及答案
- 2026呼伦贝尔农垦集团有限公司社会招聘260人笔试模拟试题及答案详解
- 2026年中医技术操作考试模拟试卷【考点梳理】附答案详解
- GB/T 47436-2026智慧城市基础设施城市新区智慧交通
- 2026年这两家事业单位正在公开选调备考题库及完整答案详解
- 信息安全管理奖惩制度
- 酒店内部构成及管理制度
- 2026江苏南京助中资环新源城市更新(江苏)有限公司招聘安全管理部部门负责人1人考试参考题库及答案解析
- 硬质气管镜诊疗操作指南
- 电解水制氢安全培训课件
- 四川省引大济岷水资源开发有限公司公开遴选工作人员笔试备考题库及答案解析
- 2024年东莞市直机关遴选公务员笔试真题汇编附答案解析(夺冠)
评论
0/150
提交评论