软件工程 第八章 面向对象的设计方法

第八章面向对象的设计方法本章采用基于UML的面向对象设计方法的将分析模型转换为设计模型。

如第五章所述,面向对象的分析模型主要由顶层架构图、用例与用例图、领域概念模型构成;设计模型则包含以包图表示的软件体系结构图、以交互图表示的用例实现图、完整精确的类图、针对复杂对象的状态图和用以描述流程化处理过程的活动图等。

为完成这一转换过程,设计人员必须处理以下任务:(1)针对分析模型中的用例,设计实现方案。

实现方案用UML交互图表示。

(2)设计技术支撑设施。

在大型软件项目中,往往需要一些技术支撑设施来帮助业务需求层面的类或子系统完成其功能。

这些设施本身并非业务需求的一部分,但却为多种业务需求的实现提供公共服务。

例如,数据的持久存储服务、安全控制服务和远程访问服务等。

在面向对象设计中,需要研究这些技术支撑设施的实现方式以及它们与业务需求层面的类及子系统之间的关系。

(3)设计用户界面。

(4)针对分析模型中的领域概念模型以及第(2)、(3)两个步骤引进的新类,完整、精确地确定每个类的属性和操作,并完整地标示类之间的关系。

此外,为了实现软件重用和强内聚、松耦合等软件设计原则,还可以对前面形成的类图进行各种微调,最终形成足以构成面向对象程序设计的基础和依据的详尽类图。

面向对象的软件设计过程如图8-1-1所示。

图8-1-1 面向对象的软件设计过程第一节设计用例实现方案UML 的交互图(顺序图、协作图)适于用例实现方案的表示。

因此,本节首先介绍交互图的语言机制,然后探讨用例实现方案的设计方法。

该设计方法包含如下3个步骤:(1)提取边界类、实体类和控制类;(2)构造交互图;(3)根据交互图精华类图。

一、顺序图顺序图用来描述对象之间动态的交互关系,着重表现对象间消息传递的时间顺序。

在顺序图中,参与交互的对象位于顶端的水平轴上,垂直轴表示时间,时间推移的方向是自上而下的。

顺序图中的对象一般以“对象名:类名”的方式标识,但也可以仅采用缩写形式“对象名”或者“:类名”。

对象的下方用垂直虚线表示对象的生命线,即对象在某段时间内存在。

对象生命的终结用生命线下方的叉号“′”表示。

附着在对象生命线上的矩形框表示对象在此段时间内活跃。

对象间的通信表现为对象的生命线之间的消息传递。

在消息边上需附加消息名和消息参数,有时也以顺序号强调消息的时序。

消息的源对象和目标对象可以相同,这种消息称为自调用(self-call)。

可以在消息名前面的方括号中书写条件表达式,表明仅当条件成立时,该消息才发送。

还可以在方括号的前面或者直接在消息名的前面加上迭代标记“*”,以表示一条消息对同一类的多个对象的多次发送。

顺序图的左边可带有描述信息,以阐明消息发送的时刻、动作执行情况、两条消息之间的时间间隔以及约束信息等。

还可以在消息边上附加文字注解信息,以增强顺序图的可理解性。

典型的顺序图如图8-1-2所示。

UML的消息有如下4种类型:(1)简单消息(simple message)。

以一种简单、抽象的函数表示对象之间的信息传递,不考虑通信过程的内部细节。

简单消息在UML顺序图中用普通的有向箭头表示。

(2)同步消息(synchronus message)。

消息源发出消息后,必须等待消息处理过程完毕并返回处理结果,才可继续执行后续操作。

前面所述的自调用消息应该是同步的。

同步消息的表示图元与简单消息相同,这表明UML在缺省状态下认为简单消息即为同步消息。

(3)异步消息(synchonous message)。

消息源发出消息后,不必等待消息处理过程的返回,即可继续执行自己的后续操作。

异步消息主要用于描述实时系统中的并发行为。

异步消息在UML顺序图中用一种特别的单向箭头表示,见图8-1-2中的“msg1”。

图8-1-2 典型的顺序图(4)返回消息(return message)。

表示前面发送的消息的处理过程完成后的返回结果。

返回消息应该是同步。

在许多情况下,可以隐藏返回消息,但也可显式地标出返回消息以示强调。

返回消息用虚线有向箭头表示,见图8-1-2中的“msg6”。

一个对象可以通过发送标准消息“new”来创建另一个对象。

当一个对象被删除或自我删除时,该对象生命线上的相应时间点应该用叉号(对象生命线终结符)标识。

二、协作图协作图用于描述相互合作的对象间的交互关系和链接关系。

虽然顺序图和协作图都用来描述对象间的交互关系,但它们的侧重点不同。

顺序图强调消息交互的时间序列,而协作图则强调交互对象间的静态链接关系。

从外观看,协作图并不采用单独的维度来表示时间的推移,因此,协作图中的对象可以在二维平面中自由占位。

对象之间的链接用于表示消息传递的通道,消息标示于链接之上,消息的箭头指明消息的传递方向。

协作图中,消息的描述内容包含名称、参数、返回值以及序列号是可选的。

虽然协作图不突出强调消息传递的时间序,但借助于序列号同样可以表达时间序:序列号较大的消息发生于较晚的时刻。

消息序列号可以采用线性编号,但采用适当的多级编号会使消息之间的结构关系更清晰,例如,在图8-1-3中,“1.1msg2 ”是“对象1”为了处理“1.mag1 ”而发送的第二条消息,“1.1.1msg3”表明mag3“是对象2”为了处理“1.1 msg2”而发送的第一条消息,依此类推。

如果一个对象在消息的交互过程中创建,则可在对象名称之后标以{new}。

类似地,如果一具对象在交互期间被删除,则可在对象名称之后标以{destroy}。

典型的协作图如图8-1-3所示,该协作图与图8-1-2等价。

图8-1-3 典型的协作图三、提取边界类、实体类和控制类边界类用于描述目标软件系统与外部环境之间的交互,并负责实现如下功能:(1)界面控制。

包括输入数据的格式及内容转换、输出结果的呈现以及软件运行过程中界面的变化与切换等。

(2)外部接口。

实现目标软件系统与外部系统或外部设备之间的信息交流和互操作。

主要关注跨越目标软件系统边界的通信协议。

(3)环境隔离。

将目标软件系统与操作系统、数据库管理系统、应用服务器中间等环境软件进行交互的功能与特性封装于边界类之中,使目标软件系统的其余部分尽可能的独立于环境软件。

在UML 类图中,边界类往往附加UML 构造型<<boundary>>作为特别标识。

例如,“家庭保安系统”中的边界类有“输入键盘接口类”、“传感器接口类”、“警报器接口类”、“报警电话接口类”和“显示面板接口类”。

实体在表示目标软件系统中具有持久意义的信息项及其操作。

实体类的操作具有“内向收敛”特征,它们仅向目标软件系统的其余部分提供读/写信息项内容的必要的操作接口,并不涉及业务逻辑处理。

实体类的UML构造型为<<entity>>。

例如,“家庭保安系统”中的“异常事件”即为实体类。

控制类作为完成用例任务的责任承担者,协调、控制其他类共同完成用例规定的功能或行为。

对于比较复杂的用例,控制类通常并不处理具体的任务细节,但是它应知道如何分解任务,如何将子任务分派给适当的辅助类,以及如何在辅助类之间进行消息传递和协调。

控制类的UML构造型为<<control>>。

例如,“家庭保安系统”中的“用户命令处理器”和“监测器”均为控制类。

在讨论了边界类、实体类和控制类和基本概念之后,下面介绍如何从分析模型中的用例描述和领域概念模型出发获取这些类。

通常情况下,执行者与用例之间的一种通信连接对应一个边界类。

但是,如果两个以上的用例与同一执行者交互,并且这些交互具有共同的行为、完成相同或类似的任务,就可以考虑用同一边界类实现用例与执行者之间的交互。

这就意味着边界类的作用范围可以超越单个用例。

实体类主要来源于领域概念模型。

有时也需要认真研读用例描述,从中发掘具有持久意义的信息项。

如果执行者的属性需要持久保存,也可以建立相应于执行者的实体类。

假设一个实体类A仅仅被系统中的另一个类B 引用,并且系统无需关心类A有行为特征,那么为了简化设计模型,应将类A中的信息项直接作为类B的属性。

反之,如果类A被系统中的多个类引用,或者类A具有不容忽略的行为特征,那么应将类A作为独立的实体类。

一般而言,一个用例通常对应一个控制类。

如果不同用例的任务较多类似之处,也可以考虑在多个用例的实现方案中共享一个控制类。

不过,此种情况应审慎对待,因为对于不同的且例,其事件流的逻辑结构鲜有雷同,它们所需要的控制、协调行为往往会有差异。

此外,对于那些事件流非常简单的用例,可以不设独立的控制类,直接在边界类中设置控制、协调功能,边界类在实体类的帮助下完成用例要求的功能及行为。

四、构造交互图在标识边界类、实体类和控制类之后,接下来的任务是将分析模型中的用例描述转化成UML交互图,以交互图作为用例的精确实现方案。

如前所述,用例描述中已包含事件流说明。

事件流中的事件应直接对应于交互图中的消息,而事件间的先后关系体现为交互图中的时序,对消息的响应则构成消息接收者的职责。

这种职责在后续的设计活动中将被确立为类的方法。

对于比较复杂的用例而言,仅仅依靠控制类、边界类和实体并不能很好地解决问题,因为我们不能使单个控制类过于宏大和复杂,让它既承担控制、协调的任务,又承担复杂的计算任务。

因此,在设计复杂用例的实施方案时,应考虑为控制类设置一些独立的辅助类,让控制类将一些任务委托给辅助类完成。

例如,在图5-3-4所示的“家庭保安系统”类图中,“系统配置管理器”和“日志管理器”就是这种意义上的辅助类。

在UM顺序图中,用例的主动执行者应位于最左侧,紧邻其右的类的作为用户界面的边界类,再往右是控制类。

控制类的右侧应旋转辅助类和实体类,它们的右侧是人秋外部接口和环境隔离层的边界类,最右侧是痊于目标软件系统边界之外的被动执行者。

如此布局之后,在顺序图中不应该出现穿越控制类生命线的消息,即主动执行者向边界类发出命令,边界类将命令进行适当转换后传送至控制类,控制类通过消息请求辅助类、实体类的帮助,协调、控制它们共同完成来自主动执行者的命令。

在此过程中,控制类或辅助害可以向右侧的边界类发送消息,将信息或外部处理请求由边界类传向外部系统(被动执行者)。

按照上述而已规则绘制的典型的顺序图如图8-1-4所示。

图8-1-4 典型布局规则下的顺序图在用例描述中,许多用例除主事件流外,往往还包含备选事件流,以说明在某些特殊或异常情况下的事件和响应动作序列。

为易于理解,在设计模型中应该用分离的UML交互图分别表示事件流和每个备选事件流。

由于顺序图能够非常直观地表达事件(消息)的时序,所以它比协作图更多地用于描述用例的实现方案。

但是,当需要强调类之间的联系或连接时,就需要绘制协作图。

协作图的而已规则是:控制类位于中心,主动执行者和作为用户界面的边界类位于左上方,作为外部接口和环境隔离层的边界类位于右上方,辅助类和实体类分别位于控制类的左下方和右下方。

合集下载

第八章 面向对象程序设计.ppt

第八章 面向对象程序设计.ppt
三、设置对象的属性
对象创建后,各属性具有默认值。属性的默认值可以在属性窗口中 修改,也可以通过编写事件代码重新设置。必要时还可以添加对象自定 义属性。
上一页 下一页 返回
表单设计
四、对象属性与方法的引用
1、对象的层次关系 VFP的对象分为容器对象和控件对象。容器对象中可包含容器对象
和控件对象,这样就形成了容器对象嵌套层次关系,如果要引用层次结 构中的某个对象,那么必须指明该对象在层次结构中的位置,即对象的 地址。 2、引用关键字 3、绝对引用
RowSourceType
RowSource
0-无(默认值)
在程序中用AddItem()添加条 目用RemoveItem()移去条目
在控件中显示
1-值
2-别名
3-SQL
4-查询
5-数组
例如
one,two,three,four
RowSource="one,two,three
,four "
RowSource="表的名称" 表的字段的内容
用户的一个动作可能触发对象的一个或多个事件,例如单击表单,则触发 表单的Click、MouseDown、MouseUp事件。
答:8-2 D
上一页 下一页 返回
【例8-3】下面关于数据环境和数据环境中的表的叙述中,正确的是 ( )。
A)数据环境是对象,数据环境中的表不是对象 B)数据环境不是对象,数据环境中的关联是对象 C)数据环境与其中的表、视图、关联都是对象 D)数据环境和关联都不是对象
表单设计
3、打开“表单向导” 1)在“向导选取”对话框中,选择“表单向导”或“一对多表单向
导”; 2)单击“确定”按钮。
上一页 返回

软件工程面向对象和传统的方法第八版教学设计 (2)

软件工程面向对象和传统的方法第八版教学设计 (2)

软件工程面向对象和传统的方法第八版教学设计课程背景本课程旨在介绍软件工程中的面向对象和传统方法。

在课程中,学生将掌握软件工程的基本概念、软件开发的过程、常见软件设计模式以及软件测试的方法。

教学目标1.理解软件工程的基本概念和原理2.掌握面向对象和传统方法的设计原则和应用场景3.熟悉常见的软件设计模式并能够应用于实际开发中4.掌握软件测试的方法和技巧教学内容第一周:软件工程概述1.软件工程的定义和特点2.软件生命周期模型3.软件需求分析和设计第二周:传统软件开发方法1.结构化方法2.面向数据的方法3.面向过程的方法第三周:面向对象的软件开发方法1.面向对象的方法概述2.类和对象的概念3.继承、多态和接口第四周:软件设计模式1.设计模式的概念和分类2.常用的设计模式:工厂模式、单例模式、策略模式第五周:软件测试1.软件测试的概述2.测试类型和测试方法3.自动化测试和测试工具教学方法1.授课和讲解2.分组讨论和小组作业3.实验练习和项目开发教学评价1.学生作业和实验报告2.期末答辩和论文教材及参考书目1.《软件工程:建议性标准》(第9版),美国软件工程协会2.《设计模式:可复用面向对象软件的基础》(第2版),埃里希·伽玛(Erich Gamma)等3.《软件测试:原理与实践》(第2版),格林特·迈尔斯(GlenfordJ. Myers)等总结软件工程面向对象和传统的方法第八版教学设计旨在帮助学生掌握软件开发的方法和技巧,从而在未来的工作中能够更好的应用和理解软件工程。

在教学中,要注重理论与实践相结合,提高学生的动手能力,培养合作和创新精神。

SE 第8章 面向对象的开发技术

SE 第8章 面向对象的开发技术

务的信息,并与中央计算机交换关于事务的信息。首先,ATM要求用户输入密码, 接下来ATM把从这张卡上读到的信息以及用户输入的密码传给中央计算机,请求 中央计算机核对这些信息并处理这次事务。中央计算机根据卡上的分行代码确定 这次事务与分行的对应关系,并且委托相应的分行计算机验证用户密码。如果用 户输入的密码正确,ATM就要求用户选择事务类型(取款、查询等)。当用户选 择取款时,ATM请求用户输入取款额。最后,ATM从现金出口吐出现金,并且打 印帐单交给用户。
Software Engineering
(3)划分主题
注意:①按问题域而不是按功能分解 ②主题间的依赖和交互尽可能少
1 总 行 拥有 中央计算机 通信 1
1 2 3
1. 总 行 2. 分 行 3. ATM
1+ 拥有 2 3 储 户 拥 有 访问 3
分行 代码
1
2
组成 分 行 拥有
保管 1+ 1+ 雇用 柜员
一个储户可能拥有多个帐户。柜员负责把储户提交的存款或取款事务输进柜员终 端,接收储户交来的现金或支票,或付给储户现金。柜员终端与相应的分行计算 机通信,分行计算机具体处理针对某个帐户的事务并且维护帐户。 拥有银行帐户的储户有权申请领取现金兑换卡。使用现金兑换卡可以通过ATM 访问自己的帐户。目前仅限于用现金兑换卡在ATM上提取现金,或查询有关自己 帐户的信息(如帐户余额)。将来可能还要求使用ATM办理转帐、存款等事务。
将具有相同属性的classes向上归纳出父类

自顶向下(Top-down)—— 演绎deduction
将现有classes向下细化出子类(但分析阶段避免过
度细化)
输入站 事务
ATM

软件工程第8章面向对象分析资料

软件工程第8章面向对象分析资料

2017/9/4
2017/9/4
图8・2复杂问題的对象模證的5个层次
3017/9/4 6
2017/9/4 8
8.2需求陈述
&2・1书写要点
需求陈述的内容包括:问®范間,功®需求,性«需求,应用环境及假设条件等。

需求陈述应该阐明“做什么”而不是"怎样做”》它应该描述用户的需求而不提出解决问《的方法-应»指出哪些是系统必要的性质,哪些足任选的性质.
书写需求陈述时,妥尽力做到晤法正确,而且应该慎复选用名词、动词.形容词和同义词•
绝大多««求陈述都是有二义性的、不完»的,甚至不一致的.某些需求有明显错课,还有一些需求虽然表迷得很准确,但它们对系统行为存在不良影响或者实现起来遣价
2017/9/4
8.2.2例子
储户
图&3 ATM肅统
2017/9/4 10。

软件工程面向对象的分析与设计

软件工程面向对象的分析与设计
软件的质量和开发效率
-
THANKS!
XX生活即将结束,在此,我要感谢所有教导我的老师和陪 伴我一齐成长的同学,他们在我的大学生涯给予了很大的帮助。本论 文能够顺利完成,要特别感谢我的导师XXX老师,XXX老师对该论文从选题,构
思到最后定稿的各个环节给予细心指引与教导,使我得以最终完成毕业论文设计! 最后,我要向百忙之中抽时间对本文进行审阅,评议和参与本人论文答辩的各位
识别类和继承
通过类和继承,我们可以组织具有相似属性和行为的对象。类 定义了一组对象的通用属性和行为,而继承则允许我们从一个 类派生出另一个类,从而共享和扩展其属性和行为
定义接口
接口定义了类或对象之间的交互方式。它描述了对象需要提供 的方法和需要遵守的协议
面向对象的分析
通过面向对象的分析, 我们可以更准确地理 解和描述软件系统的 需求,为后续的设计 和实现打下坚实的基 础
2
面向对象的 设计
面向对象的设计
面向对象的设计(Object-Oriented Design,OOD)是软件工程过程中的一个关键阶段 ,其目标是基于面向对象的分析结果,设计出满足系统需求的软件结构
识别类和对象:根据面向对象的分析结果,识别出系统中的主要类和对象。这些类和 对象应该能够准确地反映问题域的特征和需求
和操作方式
设计数据库:根据系统的数 据需求,设计出合适的数据 库结构。数据库应该能够有 效地存储和管理系统的数据
设计系统架构:根据系统的 功能需求和性能要求,设计 出合适的系统架构。系统架 构应该能够支持系统的可扩 展性、可维护性和可重用性
面向对象的设计
通过面向对象的设计,我们可 以设计出结构清晰、易于理解 和实现的软件系统,从而提高
面向对象的分析

第8章 面向对象程序设计

第8章  面向对象程序设计

8.2.1 类的定义 8.2.2 创建类的对象 8.2.3 self参数 8.2.4 构造方法 8.2.5 析构方法
类的定义与使用
在面向对象编程中,最重要的两个概念就是类和对象(也称为实例)。
对象是某个具体存在的事物,例如,一个名叫“Jack”的学生就是一个
学生
对象。
与对象相比,类是抽象的,它是对一群具有相同特征和行为的事物的统 Jack Tom Lily Mary ……
car_1.run()
#调用run()方法
print('车的价格是:',car_1.price)
#访问类中的变量
8.2.3 self参数
类的定义与使用
类的所有方法都必须至少有一个名为self的参数,并且必须是方法的第1个参数。
在Python中,由同一个类可以生成无数个对象,当一个对象的方法被调用时,对象会将自身的 引用作为第一个参数传递给该方法,那么Python就知道需要操作哪个对象的方法了。
#创建对象car_1
car_1.colour('red')
#调用方法
car_2 = Car()
#创建对象car_2
car_2.colour('white')
本章首先介绍面向对象程序设计基础,包括类的定义、实例的创建、方法的定 义;然后介绍面向对象的三大特性——封装、继承和多态;最后通过典型案例,让 读者进一步掌握面向对象程序设计的思路。
学习目标
理解面向对象程序设计思想 掌握定义类和创建类的实例的方法 掌握类中变量和方法的应用 掌握构造方法和析构方法的应用 理解类成员和实例成员的区别 掌握面向对象的三大特性(封装、继承和多态)及相关知 识的应用 理解类方法和静态方法的概念

第08章 面向对象软件开发过程


9/33
4. 建造对象——关系模型 对象--关系模型描述了系统的静态结构, 它指出了类间的关系(relationship)。 类之间的关系有关联、依赖、泛化、实现 等。
10/33
5. 建立对象——行为模型 对象--行为模型描述了系统的动态行为, 它们指明系统如何响应外部的事件或激 励(stimulus)。 建模的步骤如下: • 评估所有的用况,以完全理解系统中交互的序列。 • 标识驱动交互序列的事件,理解这些事件如何和特 定的对象相关联。 • 为每个用况创建事件轨迹(event trace)。 • 为系统建造状态机图。 • 复审对象--行为模型,以验证准确性和一致性。
24/33
典型的面向对象方法
• Coad & Yourdon 方法 • OMT方法 • Booch方法 • OOSE方法
25/33
内容摘要
• 面向对象的分析过程 • 面向对象的设计过程 • Rational统一过程
26/33
Rational 统一过程
• Rational统一过程(Rational Unified Process, RUP)是由Rational公司推出的一种 软件过程。 • RUP总结了6条经过多年商业化验证的最有 效的软件开发经验,这些经验被称为“最佳 实践”。
33/33
22/33
2)设计算法和数据结构 为对象中的属性和操作设计数据结构和实现 算法。
3. 设计模式(design patterns) 在许多面向对象系统中,存在一些类和通 信对象的重复出现的模式。这些模式求解特定 的设计问题,使面向对象设计更灵活,并最终 可复用。这些模式帮助设计者复用以前成功的 设计,设计者可以把这些模式应用到新的设计 中。
一般—特殊(generalization—specialization)结构 整体—部分(whole—part)结构。

软件工程 8


可重用性

软件可重用是提高软件开发生产率和目标系统质量的重要途径。 重用基本上从设计阶段开始。重用有两方面的含义:一是尽量使用已有 的类(包括开发环境提供的类库,及以往开发类似系统时创建的类); 二是在设计新类的协议时,应该考虑将来的可重复使用。
8. 1.2 面向对象设计应遵循的原则
• 人们使用面向对象方法开发软件有一定的历史,积累了一些经验。这 些经验往往能帮助软件开发人员提高面向对象设计的质量。面向对象设计过 程中应当遵循以下符合软件工程目标的设计原则: 设计的结果应以清晰易懂为首要原则 类的结构应尽量简明,层次深度应适当 尽量使用简单的协议 尽量简单的服务
•本章难点:对象设计的五个层次 。
8.1 面向对象设计的概念
• • •
8.1.1面向对象设计的准则 8.1.2面向对象设计应遵循的原则 8.1.3面向对象设计的内容
8.1.1 面向对象设计的准则
• • • • • • 模块化 抽象化 对象的高内聚和弱耦合 可扩充性 可重用性
• 信息隐藏和封装
模块化

系统数据存储设计。主要确定系统中各个数据对象的存储和访问方式,
包括数据结构、文件、数据库等。这项设计依赖于所采用的数据支持系统, 如:文件系统、数据库管理系统等。
系统资源访问设计。主要确定系统中需要使用的各种类型的资源以及实现
这些资源的访问和控制机制、安全性机制的设计。 网络与分布设计。在网络环境下运行一个面向对象系统,还应考虑网络流 量、分布式计算单元的计算能力和系统的总体效率的综合平衡设计。这对于 系统总体效能的发挥有重要作用。
而且应该为高级用户提供简捷的操作方法。
8.4 任务管理子系统设计


软件系统是完成系统任务的一个逻辑实体。在软件系统所完成的任务中,有些

软件工程第8章 设计基础

9
3、模块的独立性(module independence)
模块的独立性是指软件系统中每个模块只 涉及软件要求的具体的子功能,而和软件系统 中其他模块的接口是简单的。 耦合
模块之间的 相对独立性 的度量。
内聚
模块功能强 度的度量。
10
模块间的耦合
11
• 非直接耦合(Nondirect Coupling)
32
软件深度和宽度
• 软件深度:表示软件结构控制的层数,它往往能粗略地 标志一个系统的大小和复杂程度. • 深度和程序长度之间应该有粗略的对应关系,当然这个 对应关系是在一定范围内变化的.如果层数过多,则应 该考虑是否有许多管理模块过分简单了,能否适当合并.
• 软件宽度:在同一个层次上的模块总数的最大值.一般 说来,宽度越大系统越复杂. • 对宽度影响最大的因素是模块的扇出.
考虑使用设备的制约和效率,尽可能与读写单位匹配,并尽 可能减少处理过程中内外存交换次数 数据项的顺序:对于可变长记录,应在记录的开头记入 长度信息;对于关键字项,应尽量按级别高低,顺序配置; 联系较密切的数据项,应归纳在一起进行配置。 数据项的属性:属性相同的数据项,应尽量归纳在一起 配置;数据项应按双字长,全字长,半字长和字节的属性, 顺序配置。 预留空间:考虑到将来可能的变更或扩充,应当预先留 一些空闲空间。不必统一地预留,可在有可能变更或扩充的 项旁边,在相邻接处预留。
模块化设计与信息隐藏
奇妙的数字 7+2,人类 信息处理能力的限度
1、分解(decomposition)
G.A. Miller
Magical Number Seven,Plus or Minus Two,Some Limits on Our Capacity for Processing Information The Psychological Review,1956

第8章面向对象设计(OOD)

20
8.5 设计人—机交互子系统
在 OOA 阶段给出了所需的属性和 操作,
在设计阶段必须根据需求把交互细 节加入到用户界面设计中,包括人 机交互所必需的实际显示和输入。
用户界面部分设计主要由以下几个 方面组成。
21
1. 用户分类
❖ 按技能层次分类: 外行/初学者/熟练者/专家
❖ 按组织层次分类: 行政人员/管理人员/专业技术 人员/其它办事员
作)。
特点──年龄:42岁;教育水平:大 学;限制:不要微型打印,小于9个 点的打印太小。
成功的关键因素──工具应当使分析 工作顺利进行;工具不应与分析工作 冲突;工具应能捕获假设和思想,能 适时做出折衷;应能及时给出模型各 个部分的文档,这与给出需求同等重 要。
熟练程度──专家。
24
任务脚本── 主脚本: ❖ 识别“核心的”类和对象; ❖ 识别“核心”结构; ❖ 在发现了新的属性或操作时随时 都可以加进模型中去。 检验模型: 打印模型及其全部文档。
标明既存类中不需要的属性和操作,
增加从既存类到应用类之间的一般 化-特殊化的关系。
把应用类中因继承既存类而成为多 余的属性和操作标出。
修改应用类的结构和连接。
11
2.把问题论域相关的类关联起来 在设计时,从类库中引进一个根类,
做为容器类,把所有与问题论域有 关的类关联到一起,建立类的层次。 把同一问题论域的一些类集合起来, 存于类库中。
12
3. 加入一般化类以建立类间协议 有时,某些特殊类要求一组类似的
服务。 此时,应加入一个一般化的类,定
义为所有这些特殊类共用的一组服 务名,这些服务都是虚函数。 在特殊类中定义其实现。
13
4. 调整继承支持级别
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档