面向对象设计-第五节:设计数据管理子系统和设计类中的服务

Posted 快乐江湖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象设计-第五节:设计数据管理子系统和设计类中的服务相关的知识,希望对你有一定的参考价值。

文章目录

一:设计数据管理子系统

(1)概念

数据库管理子系统:是系统存储或检索对象的基本设施,它建立在某种数据存储管理系统之上,并且隔离了数据存储管理模式的影响

(2)选择数据存储管理模式

A:文件管理系统

  • 优点:文件管理系统是操作系统的一个组成部分,使用它长期保存数据具有成本低简单的优点
  • 缺点:文件操作的级别低,为提供适当的抽象级别还必须编写额外的代码,不同操作系统的文件管理系统往往有明显差异

B:关系数据库管理系统

优点

  • 理论基础坚实
  • 提供了各种最基本的数据管理功能,例如中断恢复,多用户共享,多应用共享,完整性,事务支持等
  • 为多种应用提供了一致的接口
  • 标准化的语言

缺点

  • 运行开销大:即使完成简单的事务,也需要较长的时间
  • 不能满足高级应用的需求:关系数据库管理系统是为商务应用服务的,商务应用中数据量虽大但数据结构却比较简单
  • 与程序设计语言的连接不自然: SQL语言支持面向集合的操作,是一种非过程化的语言;然而大多数程序设计语言本质上却是过程性的,每次只能处理一个记录

C:面向对象数据库管理系统

  • 扩展的关系数据库管理系统:在关系数据库的基础上,增加了抽象数据类型和继承机制,此外还增加了创建及管理类和对象的通用服务
  • 扩展的面向对象程序设计语言:扩充了面向对象程序设计语言的语法和功能,增加了在数据库中存储和管理对象的机制。可以使用统一的面向对象观点进行设计,不需要区分存储数据结构和程序数据结构

(3)设计数据管理子系统

A:设计数据格式

文件系统

  • 定义第一范式表:列出每个类的属性表;把属性表规范成第一范式, 从而得到第一范式表的定义
  • 为每个第一范式表定义一个文件
  • 测量性能和需要的存储容量
  • 修改原设计的第一范式,以满足性能和存储需求

关系数据库管理系统

  • 定义第三范式表:列出每个类的属性表;把属性表规范成第三范式,从而得出第三范式表的定义
  • 为每个第三范式表定义一个数据库表
  • 测量性能和需要的存储容量
  • 修改先前设计的第三范式,以满足性能和存储需求

面向对象数据库管理系统

  • 扩展的关系数据库途径:使用与关系数据库管理系统相同的方法
  • 扩展的面向对象程序设计语言途径:不需要规范化属性的步骤

B:设计相应的服务

文件系统

  • 被存储的对象需要知道打开哪个文件,怎样把文件定位到正确的记录上,怎样检索出旧值,以及怎样用现有值更新它们

  • 定义一个 ObjectServer,并创建它的实例

关系数据库管理系统

  • 被存储的对象,应该知道访问哪些数据库表,怎样访问所需要的行,怎样检索出旧值,以及怎样用现有值更新它们

  • 定义一个 ObjectServer,并声明它的对象

面向对象数据库管理系统

  • 扩展的关系数据库途径:使用与关系数据库管理系统相同的方法
  • 扩展的面向对象程序设计语言途径:无须增加服务,只需给长期保存的对象加个标记,然后由面向对象数据库管理系统负责存储和恢复这类对象

二:设计类中的服务

(1)确定类中应有的服务

A:确定服务的总体思想

  • 对象模型是进行对象设计的基本框架。必须把动态模型中对象的行为以及功能模型中的数据处理转换成由适当的类所提供的服务
  • 动态模型中状态图中的状态转换执行对象服务的结果
  • 功能模型指明了系统必须提供的服务

B:确定操作目标对象的启发规则

  • 如果某个处理的功能是从输入流中抽取一个值,则该输入流就是目标对象
  • 如果某个处理具有类型相同的输入流和输出流,而且输出流实质上是输入流的另一种形式,则该输入输出流就是目标对象
  • 如果某个处理从多个输入流得出输出值,则该处理是输出类中定义的一个服务
  • 如果某个处理把对输入流处理的结果输出给数据存储或动作对象,则该数据存储或动作对象就是目标对象

C:确定处理归属的启发规则

  • 如果处理影响或修改了一个对象,则最好把该处理与处理的目标联系在一起
  • 考察处理涉及的对象类及这些类之间的关联,从中找出处于中心地位的类

(2)设计实现服务的方法

A:设计实现服务的算法

  • 算法复杂度:选用复杂度较低(效率较高)的算法,但不能过分追求高效率,应以能满足用户需求为准
  • 容易理解与容易实现:容易理解与容易实现的要求往往与高效率有矛盾,设计者应该对这两个因素适当折衷
  • 易修改:预测将来可能做的修改,并在设计时预先做些准备

B:选择数据结构

选择能够方便、有效地实现算法的物理数据结构

C:算法与数据结构的关系

  • 分析问题寻找数据特点,提炼出所有可行有效的算法
  • 定义与所提炼算法相关联的数据结构
  • 依据此数据结构进行算法的详细设计
  • 进行一定规模的实验与评测
  • 确定最佳设计

D:定义内部类和内部操作

增添一些用来存放在执行算法过程中所得出的中间结果的类,其需求陈述中没有提到。复杂操作往往可以用简单对象上的更低层操作来定义,因此,在分解高层操作时常常引入新的低层操作

以上是关于面向对象设计-第五节:设计数据管理子系统和设计类中的服务的主要内容,如果未能解决你的问题,请参考以下文章

20182306 2019-2020-1 《数据结构与面向对象程序设计》第五学习总结

20182334 2019-2020-1 《数据结构与面向对象程序设计》第五周学习总结

Web前端开发笔记——第四章 JavaScript程序设计 第五节 数组

20182305 2019-2020-1 《数据结构与面向对象程序设计》第五周学习总结

第五节 类和对象

第五章 面向对象编程设计与开发——续2