收藏 分享(赏)

面向对象的分析与设计课件-设计篇.ppt

上传人:精品资料 文档编号:11329336 上传时间:2020-03-18 格式:PPT 页数:134 大小:934KB
下载 相关 举报
面向对象的分析与设计课件-设计篇.ppt_第1页
第1页 / 共134页
面向对象的分析与设计课件-设计篇.ppt_第2页
第2页 / 共134页
面向对象的分析与设计课件-设计篇.ppt_第3页
第3页 / 共134页
面向对象的分析与设计课件-设计篇.ppt_第4页
第4页 / 共134页
面向对象的分析与设计课件-设计篇.ppt_第5页
第5页 / 共134页
点击查看更多>>
资源描述

1、第三部分:设计篇,主讲教师,2,OOD模型框架 从两个侧面来描述,回顾,3,问题域部分设计,输入OOA模型,人机交互部分设计,控制驱动部分设计,数据接口部分设计,构件化与系统部署,向OOP输出OOD模型,OOD过程,4,将OOA模型搬到OOD 作为OOD的基础,人机交互部分,数据接口部分,控制驱动部分,问题域 部分,OOA 模型,按编程语言、网络、操作系统、复用支持等实现条件进行必要的调整,11.1 什么是问题域部分问题域部分是OOD模型的四个组成部分之一,由来自问题域的对象构成,是在OOA模型基础上,按照具体的实现条件进行必要的修改、调整和细节补充而得到的。,第11章 问题域部分的设计,5,

2、人机交互部分,数据接口部分,控制驱动部分,OOA 模型,编程语言、网络、操作系统、复用支持等实现条件,OOD过程,从MDA的观点看问题域部分的产生,问题域 部分,6,11.2 实现条件对问题域部分的影响,编程语言 语言的实现能力 硬件、操作系统及网络设施 对象分布、并发、通信、性能 复用支持 根据复用支持对模型做适当调整,以实现复用 数据管理系统 为实现对象的持久存储,对问题域部分做某些修改 界面支持系统 问题域部分与人机界面之间的消息传输,7,设计准备 保留OOA文档 复制OOA文档,作为OOD的输入 根据需求的变化和发现的错误进行修改,设计内容与策略(本节的重点) 针对编程语言支持能力的调

3、整 增加一般类以建立共同协议 实现复用 提高性能 为实现对象持久存储所做的修改 完善对象的细节 定义对象实例 对辅助模型、模型规约的修改和补充,建立OOD文档与OOA文档的映射,11.3 设计过程,8,1、按编程语言调整继承与多态 起因:OOA强调如实地反映问题域,OOD考虑实现问题, 如果语言不支持多继承或多态,就要进行对模型调整,9,方法1:简单转换,(a) 一般方法,或,A,C,1,1,1,1,1,1,B,A,C,B,1,A,C,B,10,方法2:重新定义对象类,化解多继承,职员,学员,在职学员,人员,职员身份,学员身份,人员,1,01,1,01,职员身份,学员身份,身份,人员,1,02

4、,11,方法3:保持分类,剥离多继承信息,职员,学员,人员,在职学员,职员信息,学员信息,1,1,1,1,1,1,1,1,12,(2)取消多态性,(a),(b),多边形,线条色 线型 边数 顶点坐标,绘图 填充,正多边形,*顶点坐标,*绘图,矩形,边数 *顶点坐标,*绘图,多边形,线条色 线型,正多边形,绘图,矩形,顶点坐标,绘图,不规则多边形,绘图,边数 顶点坐标,边数 顶点坐标,填充,13,2、增加一般类以建立共同协议增加根类:将所有的类组织在一起提供全系统通用的协议例:提供创建、删除、复制等操作增加其他一般类:提供局部通用的协议例:提供持久存储及恢复功能,14,B,C,E,A,属性操作,

5、D,F,1,*,属性操作,属性操作,属性操作,属性操作,属性操作,例:,15,3、实现复用的设计策略,如果已存在一些可复用的类,而且这些类既有分析、设计时的定义,又有源程序,那么,复用这些类即可提高开发效率与质量。 目标:尽可能使复用成分增多,新开发的成分减少,16,例:,车辆,序号 颜色 式样 出厂年月序号认证,问题域部分的类,17,4、提高性能 (1)调整对象分布,(2)缩短对象存取时间 设立缓冲区,甲机,乙机,send,call,call,send,类A,类A,类B,类C,类B,类C,甲机,乙机,18,(3)合并通讯频繁的类,流速调节器指定流速 流速调节 ,流速探测器当前流速 流速探测

6、取当前流速 ,流速控制器指定流速 当前流速 流速调节 流速探测 ,合并前,合并后,(4)增加属性以减少重复计算,call,19,(5)降低算法的计算复杂性(6)细化对象的分类,二次曲线,绘图,20,(7)将复杂对象化为整体-部分结构,帧,5、为数据存储管理增补属性与操作 在数据接口部分设计中介绍,21,6、完善对象的细节,OOD在OOA模型基础上所做的主要工作,不能用“细化”二字概括,但细化是不可缺少的(1)完善与问题域有关的属性和操作 在OOA阶段允许不详尽,OOD必须加以完善 (2)解决OOA阶段推迟考虑的问题,包括: 因封装原则而设立的对象操作 与OOD模型其他部分有关的属性和操作 (3

7、)设计类的每个操作 必要时用流程图或者活动图表示 (4)设计表示关联的属性 区分多重性的3种情况,决定属性设置在哪一端 (5)设计表示聚合的属性 区分组合与松散的聚合 对于组合,用嵌套对象实现 对于松散的聚合,采用与关联相同的策略,22,7、定义对象实例,在逻辑上,一个类的对象实例是: 问题域中所有可用这个类描述的实际事物在物理上,一个类的对象实例可以是: 内存中的对象变量 文件的一个记录,或数据库表的一个元组一个类的对象实例可以分布到不同的处理机上 对每一台处理机 说明在它之上创建的每一个(或组)内存对象 说明在它之上保存的外存对象,类的对象实例说明: 处理机:,内存对象:(n元数组)外存对

8、象: ,23,8、修改或补充辅助模型及模型规约,包图 类的增减、拆分、合并以及各个类之间关系的变化 顺序图 操作与消息 活动图 操作流程 其他模型图 状态机图、定时图、交互概览图、组合结构图 模型规约 类的属性、操作及其对外关系的修改或细化,24,建立与OOA文档的映射,指出OOA模型中的哪个(或哪些)类演化为OOD模型中的哪个(或哪些)类,25,12.1 什么是人机交互部分,人机交互部分是OOD模型的外围组成部分之一,是系统中负责人机交互的部分。其中所包含的对象(称作界面对象)构成了系统的人机界面。现今的系统大多采用图形方式的人机界面形象、直观、易学、易用,远远胜于命令行方式的人机界面,是使

9、软件系统嬴得广大用户的关键因素之一。但开发工作量大,成本高。近30年出现了许多支持图形用户界面开发的软件系统,包括: 窗口系统(如X Window,News); 图形用户界面(GUI)(如OSF/Motif,Open Look); 可视化开发环境(如Visual C+,Visual Basic,Delphi) 统称界面支持系统。 人机交互部分既取决于需求,又与界面支持系统密切相关。,第12章 人机交互部分的设计,26,人机界面的开发不仅是设计和实现问题,也包括分析问题 对人机交互需求的分析。 人机界面的开发也不纯粹是软件问题,它还需要心理学、美学等许多其它学科的知识。把人机交互部分作为系统中一

10、个独立的组成部分进行分析和设计,有利于隔离界面支持系统的变化对问题域部分的影响,控制驱动部分,问题域 部分,数据接口部分,27,12.2 人机交互部分的需求分析,对使用系统的人进行分析 以便设计出适合其特点的交互方式和界面表现形式 对人和机器的交互过程进行分析 核心问题是人如何命令系统,以及系统如何向人提交信息,(1)分析与系统交互的人(参与者) 人对界面的需求,不仅在于人机交互的内容,而且在于他们对界面表现形式、风格等方面的爱好。 前者是客观需求,对谁都一样 后者是主观需求,因人而异分析工作包括 列举所有的人员参与者 调查研究 区分人员类型 统计(或估算)各类人员的比例 了解使用者的主观需求

11、,28,(2)从用况分析人机交互用况的构成 参与者的行为和系统行为按时间顺序交替出现,左右分明。形成交叉排列的段落。 每个段落至少含有一个输入语句或输出语句; 有若干纯属参与者自身或系统自身的行为陈述; 可能包含一些控制语句或括号。抽取方法: 删除所有与输入、输出无关的语句 删除不再包含任何内容的控制语句与括号 剩下的就是对一项功能的人机交互描述,29,收款 输入开始本次收款的命令; 作好收款准备,应收款总数 置为0,输出提示信息; for 顾客选购的每种商品 do输入商品编号;if 此种商品多于一件 then输入商品数量end if; 检索商品名称及单价; 货架商品数减去售出数; if 货架

12、商品数低于下限 then通知供货员请求上货 end if; 计算本种商品总价并打印编号、 名称、数量、单价、总价; 总价累加到应收款总数; end for; 打印应收款总数; 输入顾客交来的款数; 计算应找回的款数, 打印以上两个数目, 收款数计入账册。(a)一个用况的例子,例:,30,人机交互的细化输入的细化 输入步骤的细化 输入设备的选择 输入信息表现形式的选择输出的细化 输出步骤的细化 输出设备的选择 输出信息表现形式的选择,输入与输出相比,输入在人机交互中起到主导作用 一次输入,广义地称为对系统的一条“命令”,31,(3)分析处理异常事件的人机交互(4)命令的组织不受欢迎的命令组织方式

13、: 一条命令含有大量的参数和任选项 系统有大量命令,不加任何组织和引导,基本命令:使用一项独立的系统功能的命令。 命令步: 基本命令交互过程中所包含的具体输入步骤。 高层命令:由其他若干命令组合而成,起组织和引导作用,命令的组织措施分解与组合 分解:将一条含有许多参数和选项的命令分解为若干命令步 组合:将基本命令组织成高层命令,从高层命令引向基本命令,32,(c) 半序网状结构,(b) 树型结构,(a) 线性结构,(d) 一般的网状结构,基本命令及其 命令步的结构,33,高层命令的组织结构,34,(5)输出信息的组织结构分析两层命令之间的输出信息结构,35,12.3 人机界面的设计准则使用简便

14、 一致性 启发性 减少人脑记忆的负担 减少重复的输入 容错性 及时反馈 其它:艺术性、趣味性、风格、视感,36,12.4 人机界面的OO设计(1)选择界面支持系统窗口系统:“窗口系统是控制位映像显示器与输入设备的系统软件,它所管理的资源有屏幕、窗口、像素映像,色彩表、字体、光标、图形资源及输入设备。” 例:Smalltalk,Macintosh,X Window 图形用户界面(GUI):在窗口系统之上提供了层次更高的界面支持功能,具有特定的视感和风格,支持应用系统界面开发的系统 。 例:OSF/Motif, Open Look 可视化编程环境:将窗口系统、GUI、可视化开发工具、编程语言以及类

15、库结合为一体的可视化开发平台,支持用户以“所见即所得”的方式构造用户界面 。 例:Visual C+,Delphi,Visual Basic 考虑的因素: 硬件、操作系统及编程语言 ,支持级别 ,风格与视感,37,(2)根据人机交互需求选用界面元素 不同的界面支持系统提供不同的界面元素,常用的界面元素例如:窗口、菜单、对话盒、图符、滚动条等 系统的启动 选用实现主界面的界面元素,如框架窗口、对话框窗口 高层命令组织结构的实现 通过界面元素的构造层次体现高层命令的组织结构 例如:窗口菜单下级菜单 基本命令的执行 通过高层命令引向基本命令 例如:窗口菜单菜单选项 详细交互过程的输入与输出 选择适当

16、的界面元素完成每个命令步的输入与输出 异常命令的输入 使用支持异常命令输入的界面功能,如鼠标右键菜单,38,(3)用OO概念表示界面元素对象和类 尽可能使用界面类库中提供的可复用类,自定义的类,类名属性 操作 ,类名复用,复用类库中的类,属性与 操作 用属性表示界面对象的静态特征 物理特征如:位置、尺寸、颜色、立体效果 逻辑特征聚合、关联 用操作表示界面对象的行为 例如:创建、激活、最大化、最小化、移动、选中、单击、双击 ,39,整体-部分结构 表示界面元素之间的构成关系,例如: 窗口 与 其中的菜单、按钮、图符、对话框、滚动条 表示界面对象在操作中的逻辑层次 反映上、下两层命令之间的关系,例

17、: 框架窗口,40,框架窗口,主菜单,下拉菜单,视窗,工具条,滚动条,按钮,1,1,1,*,1,*,1,1,1,2,1,1,1,*,41,一般-特殊结构 表示较一般的界面类和较特殊的界面类之间的关系 自定义的类之间的一般-特殊关系用一般-特殊结构特化可复用类,42,关联 表示界面类之间一个有特定意义的关系,例如:,按钮,1,1,对话框,消息 高层命令到低层命令界面对象之间的消息 基本命令的执行从界面对象向功能对象发消息 信息输出从功能对象向界面对象发消息,工具条,1,*,43,12.5 可视化编程环境下的人机界面设计 (1)问题的提出 (2)所见即所得的界面开发 (3)设计的必要性 为实现提供

18、依据 为了满足人机交互的需求,人机界面中要使用哪些界面对象? 交互过程中的各项输入和输出应由哪些界面对象完成? 如何通过界面对象类之间的各种关系体现人机交互命令的组织结构与层次? 如何通过界面对象和功能对象之间的消息实现它们之间的动态联系? 降低失败的风险设计策略需要改进 类库的存在 以所见即所得的定义界面对象的各种物理属性更为直接,44,(4)基于可视化编程环境的设计策略类的设立首先想到复用,Cdialog复用,CMysystemDig, , ,CEdit 复用,通过继承复用,直接复用,45,属性忽略物理特征,着重表示逻辑特征设计阶段不必关心描述界面物理特征的属性 诸如:大小、形状、位置、颜

19、色、边框、底纹、 图案式样、三维效果等, 由实现人员去自主处理效果更好,效率更高以主要精力定义描述界面逻辑特征的属性 表现命令的组织结构的属性、 例如:菜单类的每个选项表示什么命令 表现界面元素之间组成关系和关联的属性 例如:对话框中包含哪些控件,46,CMysystemDig SetDlgItemText ,操作显式地表示从高层类继承的操作,例:,CDialog复用,47,整体-部分结构表现界面的组织结构和命令层次通过整体-部分结构表现界面对象之间的组成关系和人机交互命令的层次关系与采用其它界面支持系统的策略相同区分界面对象的普通属性和它的部分对象有些组成部分被作为对象的一个普通属性 例如下

20、拉菜单的选项,窗口的边框 有些组成部分则被作为一个部分对象 例如对话框的一个下拉菜单或按钮 区分两种情况的依据 环境类库有没有给出这种组成部分的类定义,48,一般-特殊结构多从可复用类直接继承,例:,对话框复用,对话框 A,对话框 B,编辑框复用,按钮复用,1,3,1,1, , , , ,普通策略,2,1,对话框复用, , ,对话框 A, , ,对话框 B,编辑框复用,按钮复用,1,1,1,5,1,1,1,3,直接继承可复用类的策略,49,消息忽略自动实现的消息 注意需要编程实现的消息1、界面对象接收到一个操作事件,通过它的一个操作向处理该事件的功能对象所发送的消息。 2、从功能对象向完成其输

21、入/输出的界面对象发送的消息。 3、其它:凡是需要通过手工编程来实现的消息,都要在设计中加以表示。,50,13.1 什么是控制驱动部分,控制驱动部分是OOD模型的外围组成部分之一,由系统中全体主动类构成。这些主动类描述了整个系统中所有的主动对象,每个主动对象是系统中一个控制流的驱动者。 控制流(control flow) 进程(process)和线程(thread)的总称有多个控制流并发执行的系统称作并发系统(多任务系统),第13章 控制驱动部分的设计,51,为什么需要控制驱动部分,并发行为是现实中固有的当前大量的系统都是并发系统(多任务系统),例如: 外围设备与主机并发工作的系统 有多个窗口

22、进行人机交互的系统 多用户系统 多个子系统并发工作的系统 单处理机上的多任务系统 多处理机系统 多任务的设置 描述问题域固有的并发行为 表达实现所需的设计决策隔离硬件、操作系统、网络的变化对整个系统的影响,52,13.2 相关技术问题,(1)由系统总体方案决定的实现条件:计算机硬件 性能、容量和CPU数目 操作系统 对并发和通讯的支持 网络方案 网络软硬件设施、网络拓扑结构、通讯速率、网络协议等 软件体系结构(详后) 编程语言 对进程和线程的描述能力 其它商品软件 如数据管理系统、界面支持系统、构件库等 对共享和并发访问的支持,53,(2)软件体系结构抽象地说,软件体系结构描述了构成系统的元素

23、、这些元素之间的相互作用、指导其组合的模式以及对这些模式的约束 Mary Shaw,几种典型的软件体系结构风格 管道与过滤器风格(pipe and filter style) 数据抽象风格(data abstraction style) 面向对象风格(object-oriented style) 隐式调用风格(implicit invocation style) 层次风格(layered style) 仓库风格(repository style) 黑板风格(blackboard style) 解释器模型(interpreter model) 进程控制风格(process control sty

24、le) 客户-服务器风格(client-server style),54,主机+仿真终端体系结构 文件共享体系结构 客户-服务器体系结构 二层客户-服务器体系结构 三层客户-服务器体系结构 对等式客户-服务器体系结构 瘦客户-服务器体系结构 浏览器-服务器体系结构,(3)分布式系统的体系结构风格,55,进程(process)概念出现之前,并发程序设计困难重重 主要原因: 并发行为彼此交织,理不出头绪 与时间有关的错误不可重现进程概念的提出使这个问题得到根本解决进程的全称是顺序进程(sequential process),其基本思想是把并发程序分解成一些顺序执行的进程,使得:每个进程内部不再包含

25、并发行为 所以叫做顺序进程,其设计避免了并发问题 多个进程之间是并发(异步)执行的 所以能够构成并发程序,(4)系统的并发性,56,线程(Thread )由于并行计算的需要,要求人为地在顺序程序内部定义和识别可并发执行的单位。 因此后来的操作系统大多支持线程概念。线程与进程的区别:进程既是处理机分配单位,也是存储空间、设备等资源的分配单位(重量级的控制流);线程只是处理机分配单位(轻量级的控制流) ;一个进程可以包含多个线程,也可以是单线程的。控制流是进程和线程的总称。,57,应用系统的并发性从网络、硬件平台的角度看: 分布在不同计算机上的进程之间的并发 在多CPU的计算机上运行的进程或线程之

26、间的并发 在一个CPU上运行的多个进程或线程之间的并发从应用系统的需求看: 需要跨地域进行业务处理的系统 需要同时使用多台计算机或多个CPU进行处理的系统 需要同时供多个用户或操作者使用的系统 需要在同一时间执行多项功能的系统 需要与系统外部多个参与者同时进行交互的系统,58,处理应用系统并发性的例子见教材13.2.4.3节例1 例7,59,例5:用多进程实现遥感信息的输入、处理和显示,输入进程,数据处理进程,显示进程,数据,数据,IPC,IPC,数据,数据,显示屏,地面接收设备,输入,输出,遥感信息处理系统,60,例6:用多线程实现遥感信息的输入、处理和显示,输 入 线 程,数 据 处 理

27、线 程,显 示 线 程,数据,数据,数据,输入,输出,地面接收设备,显示屏,遥感信息处理进程,61,业务处理进程 1,操作,输 入 线 程,数 据 处 理 线 程,显 示 线 程,遥感信息处理进程,数据,数据库管理系统,数据库,数据,数据,业务处理进程 n,操作,数据,IPC/RPC,例7:同时采用多进程和多线程,62,13.3 如何设计控制驱动部分,(1)选择软件体系结构风格二层客户-服务器体系结构 (数据)服务器客户机三层客户-服务器体系结构 数据服务器应用服务器客户机,63,考虑分布方案之前,暂时将系统看作集中式的 确定分布方案之后,将对象分布到各个处理机上 以每台处理机上的类作为一个包

28、,(2)确定系统分布方案,64,系统分布 包括功能分布和数据分布 在面向对象的系统中都体现于对象分布原则: 减少远程传输,便于管理对象分布 软件体系结构 系统功能在哪些结点提供 数据在哪些结点长期存储管理,在哪些结点临时使用 参照用况 把合作紧密的对象尽可能分布在同一结点 追踪消息 把一个控制流经历的对象分布在同一结点,65,分布在每个结点上的对象,都需要相应的类来创建(1)如果一个类只需要在一个结点上创建对象实例 把这个类分布在该结点上(2)如果一个类需要在多个结点上创建对象实例 把这个类分布到每个需要创建其实例的结点上 其中一个作为正本,其他作为副本,类的分布:根据对象分布的需要,66,(

29、a) 一个集中式类图,1,*,A,B,C,D,E,F,G,*,1,服务器,H,I,J,A,B,C,D,E,F,G,*,1,(b) 服务器包,1,*,副本D,H,I,J,副本A,客户机,(c) 客户机包(第一种策略),(d) 客户机包(第二种策略),1,*,副本D,H,I,J,客户机,call,call,call,例,67,13.3.3 识别控制流(1)以结点为单位识别控制流 不同结点上程序的并发问题已经解决 考虑在每个结点上运行的程序还需要如何并发 (2)从用户需求出发认识控制流 有哪些任务必须在同一台计算机上并发执行 (3)从用况认识控制流 关注描述如下三类功能的用况 要求与其他功能同时执行

30、的功能 用户随时要求执行 的功能 处理系统异常事件功能 (4)参照OOA模型中的主动对象 (5)为改善性能而增设的控制流 高优先级任务、低优先级任务、紧急任务 (6)实现并行计算的控制流(线程) (7)实现结点之间通讯的控制流(进程) (8)对其它控制流进行协调的控制流,68,13.3.4 用主动对象表示控制流,控制流是主动对象中一个主动操作的一次执行。其间可能要调用其他对象的操作,后者又可能调用另外一些对象的操作,这就是一个控制流的运行轨迹。,问题: 一个主动类可以有多个主动操作和若干被动操作,这种表示法不能显式地表示哪个(哪些)操作是主动操作。,69,用关键词表示主动操作,类名,进程操作名

31、()线程操作名()线程操作名() 操作名() ,active 类名,进程操作名()线程操作名()线程操作名() 操作名() ,70,显示地表示由进程创建线程,类B,线程 T1 ,create,create,类C,线程 T2 ,类A,进程 P ,71,把控制驱动部分看成一个包 其中包含了系统中全部主动类可以从多种观点把OOD模型划分成包,72,主动对象属于控制驱动部分,也可以同时属于其他部分因为OOD模型的各个部分可以交叉例:订单系统中营业员对象可以有不同的设计方案,73,方案2: 问题域部分和控制驱动部分交叉,74,方案3: 问题域部分和人机交互部分交叉,75,人机交互部分,数据接口部分,控制

32、驱动部分,问题域部分,方案4: 问题域部分、人机交互部分、控制驱动部分都交叉,active 营业员,提问:1、还有没有其他方案? 2、是否违背了隔离对问题域部分影响的初衷?,76,数据接口部分是OOD模型中负责与具体的数据管理系统衔接的外围组成部分,它为系统中需要长久存储的对象提供了在选定的数据管理系统中进行数据存储与恢复的功能。,问题范围: 对象在永久性存储介质上的存储 只须存储对象的属性部分 可能只有一部分对象需要长久存储,11.1 什么是数据接口部分,大部分实用的系统都要处理数据的持久存储问题 数据保存于永久性存储介质 在数据管理系统的支持下实现其存储、检索和维护 在面向对象的系统中,数

33、据的存储表现为对象存储,第14章 数据接口部分的设计,77,不同的数据管理系统: 文件系统 关系型数据库管理系统 面向对象的数据库管理系统 各有不同的数据定义方式和数据操纵方式针对不同的数据管理系统,需要做不同设计 根据所选用的数据管理系统特点,设计一些专门处理其它对象的持久存储问题的对象组织成一个独立的组成部分 数据接口部分,78,优点: 集中解决对象存储问题 隔离数据管理系统对其它部分的影响 选用不同的数据管理系统时,问题域部分变化较少,人机交互部分,控制驱动部分,问题域 部分,79,14.2 数据管理系统及其选择,数据管理系统 实现数据存储、检索、管理与维护的系统包括文件系统和数据库管理

34、系统两大类 文件系统 file system 关系型数据库管理系统 RDBMS 面向对象的数据库管理系统 OODBMS,80,(一)文件系统,通常是操作系统的一部分 管理外存空间的文件数据 提供存储、检索、更新、共享和保护等功能文件结构 物理结构 文件数据在存储空间的存放方法和组织关系 逻辑结构 呈现给用户的文件结构 如流式结构、记录式结构 等文件系统提供的支持 在人机界面上进行操作的系统命令 在程序中使用的广义指令 创建、删除、打开、关闭、读、写、控制等 编程语言可以提供更方便的文件定义与使用方式,81,优点: 廉价,容易学习和掌握,对数据类型没有限制 缺点: 功能贫乏、低级 不容易体现数据

35、之间的关系 只能按地址或者记录读写, 不能按属性进行数据检索与更新 缺少数据完整性支持 数据共享支持薄弱,文件系统的优缺点,82,(二)数据库管理系统,数据库:长期存储在计算机内、有组织、可共享的数据集合。其中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度,较高的数据独立性和易扩展性,并可为各种用户共享。 数据库管理系统(DBMS) :用于建立、使用和维护数据库的软件。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性,83,1、关系数据库管理系统 RDBMS关系模型 给定一组域D1,D2,Dn 其笛卡尔积D1D2Dn的一个子集就是一个关系,又称二维表 基本要求:关系的每个

36、属性必须是原子的 数据的组织:用二维表组织各类数据 既可存放描述实体自身特征的数据 也可存放描述实体之间联系的数据每一列称作一个属性 每一行称作一个元组数据的运算: 提供并、交、差等集合运算 以及选取、投影、联结等操作,84,关系数据库术语对照,85,2、面向对象数据库管理系统 OODBMS 采用面向对象数据模型的数据库管理系统背景: 越来越多的系统用OO技术开发(采用OO数据模型) RDBMS的局限性(采用关系数据模型) 不能直接、有效地组织和存储对象数据,需要对数据模式进行转换,并提供相应的接口 因此出现了面向对象数据库管理系统OODBMSOODBMS的特征: 是面向对象的: 支持对象、类

37、、对象标识、对象的属性与操作、封装、继承、聚合、关联、多态等OO概念。 具有数据库管理系统的功能: 数据定义与操纵语言、完整性保障、安全机制,并发控制、故障恢复、事务运行管理、可扩充,86,三种类型的OODBMS产品1)在OOPL基础上增加数据库管理系统的功能 例如:GemStone 和 ObjectStore2)对RDBMS进行扩充,使之支持面向对象数据模型 并向用户提供面向对象的应用程序接口 例如:Iris 和 POSTGRES3)“全新的”OODBMS 即按照面向对象数据模型进行全新的设计 例如:O2 和 DAMOKLES 目前状况:理论和技术上都有待完善,87,(三)数据管理系统的选择

38、理论上OODBMS最适合用OO方法开发的系统 实际上要权衡技术和非技术两方面的因素,非技术因素 与项目的成本、工期、风险、宏观计划有关的问题 产品的成熟性和先进性 价格 开发队伍的技术背景 与其它系统的关系,88,技术因素考虑各种数据管理系统适应哪些情况,不适应哪些情况,文件系统的适应性 优点:可储任何类型的数据,包括具有复杂内部结构的数据和图形、图象、视频、音频等多媒体数据。以类和对象的形式定义的数据都可以用文件存储 适应:数据类型复杂,但对数据存取、数据共享、数据完整性维护、故障恢复、事务处理等功能要求不高的应用系统;缺点:操作低级;数据操纵功能贫乏;缺少数据完整性支持;缺少多用户及多应用

39、共享、故障恢复、事务处理等功能 不适应:数据操纵复杂、多样,数据共享及数完整性维护要求较高的系统。,89,关系数据库管理系统的适应性优点:对数据存取、数据共享、数据完整性维护、故障恢复、事务处理等功能提供强有力的支持 适应:对这些功能要求较高的应用系统,以及需大量保存和管理各类实体之间关系信息的应用系统问题:关系数据模型对数据模式的限制较多 当对象的内部结构较为复杂时,就不能直接地与关系数据库的数据模式相匹配,需要经过转换 更不适合图形、图象、音频、视频等多媒体数据 和 经过压缩处理的数据,文件系统和RDBMS的优点和缺点形成了明显对照 但是对二者的选择却未必互相排斥,有时它们是互补的。 某些

40、应用系统可能同时采用RDBMS和文件系统,分别存储各自所适合的数据。,90,面向对象数据库管理系统的适应性从纯技术的角度看,对用OO方法开发的系统采用OODBMS是最合理的选择,几乎没有不适合的情况。如果某些项目不适合,主要是由于非技术因素,而不是技术因素 各种OODBMS采用的对象模型多少有些差异,与用户选用的OOA&D方法及OOPL中的匹配程度不尽一致,功能也各有区别,对不同的应用系统有不同的适应性,91,14.3 对象存储方案和数据接口的设计策略,针对三种 数据管理系统文件系统RDBMSOODBMS,对象存储方案 如何把对象映射到数据管理系统,数据接口部分的设计策略 如何设计数据接口部分

41、的对象类,分别讨论,如何对问题域部分 做必要的修改,92,(一)针对文件系统的设计,应用系统,数据接口,文件系统,对象,对象,对象,1、对象在内存空间和文件空间的映像 如何看待用文件系统存储对象,应用系统仍然是面向对象的,只是用文件系统存储对象的数据,93,从应用系统的对象到文件记录的不同映射方式,94,2、对象在文件中的存放策略,1)基本策略 把由每个类直接定义、需要持久存储的全部对象实例存放在一个文件中; 每个对象实例的全部属性作为一个存储单元,占用该文件的一个记录。,如何理解“由一个类直接定义的”对象实例,另一种策略 一个结构用一个文件浪费空间 模糊了对象分类关系 使操作复杂化,95,2

42、)提高检索效率 在对象和文件记录之间建立有规律的映射关系,对象名或关键字呈线性规律 按对象名或关键字的顺序形成文件记录 给出对象名称或关键字,快速地计算出它的存放位置 对象名称或关键字可以比较和排序 按关键字顺序安排记录,检索时采用折半查找法 建立按对象名称或者按关键字排序的索引表,通过该表中的记录指针找到相应的记录 其他措施 如散列表、倒排表、二叉排序树等等,96,3、设计数据接口部分的对象类,97,4、问题域部分的修改, , ,类B, , , , ,类D, , ,问题域部分,数据接口部分,类A,类C,对象存取器, , ,98,(二)针对RDBMS的设计,应用系统,数据接口,RDBMS,对象

43、,对象,对象,1、对象及其对数据库的使用 如何看待用 RDBMS存储对象,应用系统仍然是面向对象的,只是用关系数据库存储对象的数据,关系数据库,99,从应用系统的对象到数据库表元组的不同映射方式,100,使用RDBMS和使用文件系统的不同 (1)系统以不同方式使用数据库中的数据 存储对象 或 使用其普通数据 原因:数据库的共享性,(2)可能需要数据格式转换 原因:关系数据库对规范化的要求,对象从数据库获得其他数据,关系数据库,应用系统,对象,数据接口,对象,RDBMS,对象,对象保存与恢复,101,2、对象在数据库中的存放策略对象数据的规范化 修改类图 确定关键字 从类图映射到数据库表 类表

44、类的属性表的属性 对象实例行 对一般-特殊结构、整体-部分结构、关联等OO概念的处理,102,第一范式(1NF):关系(表)的每个属性都必须是原子的。就是说,关系的每个属性都是单值的,它不再包含内部的数据结构。 第二范式(2NF):如果一个关系的所有非关键字属性都只能依赖整个关键字(而不是依赖关键字的一部分属性),则该关系在第二范式中。 第三范式(3NF):如果一个关系在第二范式中,而且没有传递依赖,则该关系在第三范式中。 Boyce-Codd范式(BCNF):如果一个关系的每个决定因素都是候选关键字,则该关系在BCNF中。 第四范式(4NF):如果一个关系在BCNF中,而且没有多值依赖,则该

45、关系在第四范式中。,1)对象数据的规范化 关系数据库要求存入其中的数据符合一定的规范,并且用范式衡量规范化程度的高低。,103,未必规范化程度越高越好 规范化的代价 响系统的可理解性,增加了多表查询和连接操作面向对象方法与关系数据库的规范化目标 既有相违的一面,又有相符的一面,以对象为中心组织数据与操作,恰恰有助于达到第2NF、3NF、BCNF和4NF要求的条件,104,HOUSING(SID,Building,Fee) Key:SID Functional Dependencies:BuildingFeeSIDBuildingFee,SID Building Fee,例1:一个不满足3NF的

46、关系及其规范化,分析原因:把描述不同事物的数据组织在一起,摘自:施伯乐等 译,美 David M. Kroenke 著. 数据库处理. 北京:电子工业出版社,1998,105,例2:一个不满足4NF的关系及其规范化,STUDENT(SID,Major,Activity) Key:(SID,Major,Activity)SID Major Activity,106,SID Major,1,1,1,1,*,*,*,*,课程,学生,活动,学生-课程,学生-活动,SID Activity,*,*,*,*,课程,学生,活动,用面向对象方法得到的分类有三类对象,化解多对多关联之后的结果,为什么多出来3个类?,107,用面向对象方法未能避免函数依赖的例子,职工,职工编号 月工资 所得税 , ,可以不通过规范化解决问题讨论为什么,108,规范化的两种策略保持类图,对表规范化 缺点是对象的存储与恢复必须经过数据格式的转换 修改类图 对问题域的映射可能不像规范化之前那么直接。但是这个问题并不严重 利大于弊采用第二种策略按规范化的要求修改类图中的类 作为问题域部分的设计内容之一,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报