- 1、本文档共147页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章- 面向对象分析与设计
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 软件工程 * (4)全局控制流设计 典型的控制流机制有三种: 过程驱动控制 事件驱动控制 线程机制 一旦选择了控制流机制,就可以采用一个或多个控制对象来实现它。控制对象的作用是记录外部事件,存储其有关状态,给出接口上的操作调用、与外部事件相关联的实体对象操作调用的正确顺序。 软件工程 * 5.4.7 数据管理子系统 数据管理子系统提供了在数据管理系统中存储和检索对象的基本结构,包括对持久性数据的访问和管理。 它分离了数据管理机制所关心的事项,包括文件、关系型数据库管理系统或面向对象数据库管理系统等。 数据管理的方法主要有 3 种:文件管理、关系数据库管理和面向对象数据库管理。 下面给出选择数据管理方法的规则。 软件工程 * 类型 选 择 规 则 (1) 存在大量的数据(如图像) 文件 (2) 存在临时数据(如内存文件) (3) 存在低密度信息(如档案文件、历史日志) 关系型或 (1) 存在并发访问 面向对象 (2) 访问比较合适的细节层 数据库 (3) 对相同数据的多重平台或应用 关系型 (1) 属性上的复杂查询 数据库 (2) 存在大数据量 面向对象 (1) 为检索数据扩展关联的使用 数据库 (2) 中等规模的数据集 (3) 对象之间的不规则关联 软件工程 * 文件是一种由操作系统提供的数据组织,应用程序以字符流的形式存储其数据。应用程序可定义用什么方式、在什么时间来检索这些对象。但文件使用时必须考虑很多问题,如并发访问和系统崩溃情况下的数据丢失问题。 关系数据库管理系统可以遵照预先定义好的结构类型进行存储。它使用若干表格来管理数据,表中每一列代表一个属性,每一行代表一个属性元组值的数据元素。这种类型的数据库提供了并发管理、访问控制和故障恢复服务,但对非结构化数据(如图像、自然语言文本),速度较慢。 软件工程 * 面向对象数据库管理系统提供的服务与关系型数据库管理系统类似。不同之处在于,面向对象数据库以对象和关联的方式存储数据。它还提供了继承和抽象数据类型,极大减少了存储子系统的开发时间,但其查询速度慢,且不容易调试。 软件工程 * 5.5 对象设计 对象设计的主要任务是追加解空间的对象和对已有对象进行细化。对象设计包括: 复用:寻找可利用的已有解决方案,包括可复用类库、商业外购构件和设计模式。 服务规格说明:精确描述每个类的接口。 重构对象模型:改进对象设计模型,以提高可读性和扩展性。 优化对象模型:改进对象设计模型,以满足性能标准。 软件工程 * 5.5.1 使用模式设计对象 对象设计的一个任务是在应用对象与系统设计所标识的硬件/软件平台之间建立连接。 开发人员可以复用已有的类,建立设计模型中已定义解对象的细化对象,或追加一些自定义的解对象。还可以复用设计模式。复用的 4 个步骤为:选择、分解、配置和演变。 选择 开发一个新对象最简单的方法是从已有构件中简单地选择合乎需要的软件构件。 软件工程 * 为此,需要利用一些商业外购构件库或遗留软件构件库。这些构件库提供以下层次的构件: 特定小组的可复用构件(一个小组为他们自己组内所有成员使用而开发) 特定项目的可复用构件(一个小组为某一个项目而开发) 特定问题领域的可复用构件(购自某一个特定领域的软件销售商) 通用构件(购自专门提供构件的销售商) 特定语言原操作(购自一个编译器的销售商) 软件工程 * 分解 最初标识的“类”常常是几个概念的组合。在着手对象细化设计时,可以把一个类分成几个类,使得新标识的类容易实现,或它们可以从已有的类中获得。 配置 在设计类时,可能会要求由已有类的实例提供类的某些特性。通过把相应类的实例声明为新类的属性来配置新类。 例如,一种仿真服务器可能要求使用一个计时 软件工程 * 器来跟踪服务时间。设计者应找到计时器类,并在服务器类的定义中声明它。这个服务器还要求有一个队列类的实例来作客户排队工作。 演化 要创建的新类可能与一个已有类非常类似,但不完全相同。此时,可以利用继承机制。调整继承结构,加入合乎需要的新类的处理有三种可能的方式。 软件工程 * 建立一个新类起重车。它的底盘、发动机、轮胎、驱动装置等都在已有类汽车中。关系如右图所示。新类是已有类的特殊情形。这时直接让起重车类作为汽车类的子类即可。 起重车 类 汽车类 汽车 载重车 大轿车 救火车
文档评论(0)