文章目录

  • 一:设计数据管理子系统
    • (1)概念
    • (2)选择数据存储管理模式
      • A:文件管理系统
      • B:关系数据库管理系统
      • C:面向对象数据库管理系统
    • (3)设计数据管理子系统
      • A:设计数据格式
      • B:设计相应的服务
  • 二:设计类中的服务
    • (1)确定类中应有的服务
      • A:确定服务的总体思想
      • B:确定操作目标对象的启发规则
      • C:确定处理归属的启发规则
    • (2)设计实现服务的方法
      • A:设计实现服务的算法
      • B:选择数据结构
      • C:算法与数据结构的关系
      • D:定义内部类和内部操作

一:设计数据管理子系统

(1)概念

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

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

A:文件管理系统

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

B:关系数据库管理系统

优点

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

缺点

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

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

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

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

A:设计数据格式

文件系统

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

关系数据库管理系统

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

面向对象数据库管理系统

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

B:设计相应的服务

文件系统

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

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

关系数据库管理系统

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

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

面向对象数据库管理系统

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

二:设计类中的服务

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

A:确定服务的总体思想

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

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

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

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

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

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

A:设计实现服务的算法

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

B:选择数据结构

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

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

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

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

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

(软件工程复习核心重点)第十章面向对象设计-第五节:设计数据管理子系统和设计类中的服务相关推荐

  1. (软件工程复习核心重点)第四章总体设计-第一节:总体设计基本概念和设计过程

    文章目录 一:总体设计的概念 (1)定义 (2)主要任务 (3)步骤 (4)必要性(了解) 二:设计过程 (1)系统设计阶段 1:设想供选择的方案 2:选取合理的方案 3:推荐最佳方案 (2)结构设计 ...

  2. (软件工程复习核心重点)第八章面向对象方法学-第一节:面向对象方法学概述

    专栏目录首页:学习笔记 注意:本章是面向对象的内容,而C++又是一个很经典的面向对象语言,所以本节介绍时会引入C++相关知识.如需深入了解C++,可移步 C++学习专栏 文章目录 一:要点 (1)基本 ...

  3. (软件工程复习核心重点)第四章总体设计-第二节:设计原理

    文章目录 一:模块化 (1)模块 (2)模块化 (3)优点或作用 二:抽象(了解) 三:逐步求精 (1)定义 (2)MIller法则:注意力集中在(7 ±\pm± 2) 四:信息隐藏和局部化(了解) ...

  4. (软件工程复习核心重点)第七章软件维护-第一节:软件维护的概念和特点

    文章目录 一:软件维护的概念 (1)定义 (2)分类 二:软件维护的特点 (1)结构化维护和非结构化维护差别巨大 (2)维护的代价高昂(了解) (3)维护存在很多问题(了解) 一:软件维护的概念 (1 ...

  5. (软件工程复习核心重点)第三章需求分析-第一节:需求分析相关概念

    文章目录 一:需求分析相关概念 (1)定义 (2)必要性(了解) (3)准则 二:需求分析的任务 (1)确定对系统的综合要求 (2)分析系统的数据要求 A:意义(了解) B:工具 (3)导出系统的逻辑 ...

  6. (软件工程复习核心重点)第二章可行性研究-第四节:数据字典

    文章目录 一:相关概念 (1)定义 (2)作用 (3)意义(了解) 二:内容 三:定义数据的方法 (1)数据元素组成数据的方式 (2)符号表示 四:数据字典示例 五:用途 一:相关概念 (1)定义 数 ...

  7. (软件工程复习核心重点)第三章需求分析-第二节:实体联系图(ER图)

    文章目录 一:数据模型 (1)定义 (2)构成 二:实体联系图(E-R图) (1)定义 (2)符号表示 (3)E-R模型的优点 (4)示例 一:数据模型 (1)定义 为了把用户的数据要求清楚.准确地描 ...

  8. (软件工程复习核心重点)第十章面向对象设计-第二节:启发规则和软件重用

    文章目录 一:启发规则 (1)设计结果应该清晰易懂 (2)一般一特殊结构的深度适当 (3)设计简单的类 (4)使用简单的协议 (5)使用简单的服务 (6)把设计变动减至最小 二:软件重用 (1)概述 ...

  9. (软件工程复习核心重点)第十章面向对象设计-第一节:面向对象设计的基本概念与准则

    文章目录 一:面向对象设计概念 (1)定义 (2)设计与分析的关系 (3)分类 二:面向对象的设计准则 (1)模块化 (2)抽象 (3)信息隐藏 (4)低耦合 A:交互耦合 B:继承耦合 (5)高内聚 ...

最新文章

  1. PyPI又双叒叕发现恶意软件,能盗取信用卡还有后门程序
  2. 【Redis】三、Redis安装及简单示例
  3. .net 实时通信_【WebSocket】实时多人答题对战游戏
  4. 【转】马拉松式学习与技术人员的成长性
  5. 【OCR技术】字符识别技术总览
  6. 数据库安全问题?这里有10个最常见的
  7. 29 上传下载 socketserve
  8. 数乌龟(母牛,兔子....)[打表法]
  9. 学生社区(学校交流社区)网站源码推荐
  10. spss数据的预处理
  11. 利用大白菜制作多系统启动U盘(ubuntu+windows)
  12. NLP 中文同义词 反义词 否定词表
  13. ミルシャ / 人鱼枪
  14. 设置老版版谷歌浏览器自动启用flash
  15. 微博超话显示服务器有点累,刚才手机刷微博,刷新了一下首页... - @菜菜_fz 的微博精选 - 微博国际站...
  16. 夏普SHV41 卸载应用 ADB 卸载脚本
  17. iconCls和el-icon属性对应的图标大全(带图)
  18. 如何向一个普通人说明什么是物联网?
  19. windows如何切割大文件
  20. how2j:JAVA学习笔记——DAY 8

热门文章

  1. 手机html滚动原理,手机滚动-如何实现惯性滚动
  2. ggplot2 如何控制多个影射Legend 的顺序
  3. R统计和作图文章汇总
  4. 文章用图的修改和排版
  5. 肿瘤化疗无效是对预先存在的突变的选择还是诱发新突变,Cell给你答案
  6. ON1 photo raw 2021(ps/lr滤镜插件) 下载及安装
  7. 小学奥数 7830 求小数的某一位 python
  8. python后台返回cookie_Django框架设置cookies与获取cookies操作详解
  9. Java学习之文件操作
  10. php取结果集,php获取数据库结果集方法(推荐)