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

上传人:夏** 文档编号:568740150 上传时间:2024-07-26 格式:PPT 页数:134 大小:871.50KB
返回 下载 相关 举报
面向对象的分析与设计课件设计篇_第1页
第1页 / 共134页
面向对象的分析与设计课件设计篇_第2页
第2页 / 共134页
面向对象的分析与设计课件设计篇_第3页
第3页 / 共134页
面向对象的分析与设计课件设计篇_第4页
第4页 / 共134页
面向对象的分析与设计课件设计篇_第5页
第5页 / 共134页
点击查看更多>>
资源描述

《面向对象的分析与设计课件设计篇》由会员分享,可在线阅读,更多相关《面向对象的分析与设计课件设计篇(134页珍藏版)》请在金锄头文库上搜索。

1、第三部分:设计篇第三部分:设计篇主讲教师主讲教师17/26/20242OOD模型框架模型框架从两个侧面来描述从两个侧面来描述人人机机交交互互部部分分数数据据接接口口部部分分控制驱动部分控制驱动部分问题域问题域部分部分从一个侧面看:从一个侧面看:OODOOD模型包括几个主要部分?模型包括几个主要部分?一个核心加三个外围一个核心加三个外围需需 求求 模模 型型辅辅 助助 模模 型型类类 图图模模型型规规约约从另一侧面看:从另一侧面看:OODOOD模型每个部分模型每个部分如何用如何用OOOO概念表达?概念表达?采用与采用与OOAOOA相同的概念及相同的概念及模型组织方式模型组织方式回顾回顾27/26

2、/20243问题域部分设计问题域部分设计输入输入OOA模型模型人机交互部分设计人机交互部分设计控制驱动部分设计控制驱动部分设计数据接口部分设计数据接口部分设计构件化与系统部署构件化与系统部署向向OOP输出输出OOD模型模型OOD过程过程37/26/20244将将OOA模型搬到模型搬到OOD作为作为OOD的基础的基础人人机机交交互互部部分分数数据据接接口口部部分分控制驱动部分控制驱动部分问题域问题域部分部分OOA模型模型按编程语言、网络、按编程语言、网络、操作系统、复用支操作系统、复用支持等实现条件进行持等实现条件进行必要的调整必要的调整11.1 什么是问题域部分什么是问题域部分问题域部分是问题

3、域部分是OOD模型的四个组成部分之一,由来自问题模型的四个组成部分之一,由来自问题域的对象构成,是在域的对象构成,是在OOA模型基础上,按照具体的实现条模型基础上,按照具体的实现条件进行必要的修改、调整和细节补充而得到的。件进行必要的修改、调整和细节补充而得到的。第第11章章问题域部分的设计问题域部分的设计47/26/20245人人机机交交互互部部分分数数据据接接口口部部分分控制驱动部分控制驱动部分OOA模型模型编程语言、网络、编程语言、网络、操作系统、复用支操作系统、复用支持等实现条件持等实现条件OOD过程从从MDAMDA的的观点看问观点看问题域部分题域部分的产生的产生问题域问题域部分部分5

4、7/26/2024611.2 实现条件对问题域部分的影响实现条件对问题域部分的影响编程语言编程语言语言的实现能力语言的实现能力硬件、操作系统及网络设施硬件、操作系统及网络设施 对象分布、并发、通信、性能对象分布、并发、通信、性能复用支持复用支持 根据复用支持对模型做适当调整,以实现复用根据复用支持对模型做适当调整,以实现复用数据管理系统数据管理系统 为实现对象的持久存储,对问题域部分做某些修改为实现对象的持久存储,对问题域部分做某些修改界面支持系统界面支持系统问题域部分与人机界面之间的消息传输问题域部分与人机界面之间的消息传输67/26/20247设计准备设计准备保留保留OOA文档文档复制复制

5、OOA文档,作为文档,作为OOD的输入的输入根据需求的变化和发现的错误进行修改根据需求的变化和发现的错误进行修改设计内容与策略设计内容与策略(本节的重点)(本节的重点)针对编程语言支持能力的调整针对编程语言支持能力的调整 增加一般类以建立共同协议增加一般类以建立共同协议 实现复用实现复用提高性能提高性能 为实现对象持久存储所做的修改为实现对象持久存储所做的修改 完善对象的细节完善对象的细节 定义对象实例定义对象实例 对辅助模型、模型规约的修改和补充对辅助模型、模型规约的修改和补充建立建立OOD文档文档与与OOA文档的映射文档的映射11.3 设计过程设计过程77/26/202481、按编程语言调

6、整继承与多态、按编程语言调整继承与多态起因:起因:OOA强调如实地反映问题域,强调如实地反映问题域,OOD考虑实现问题,考虑实现问题,如果语言不支持多继承或多态,就要进行对模型调整如果语言不支持多继承或多态,就要进行对模型调整多继承模式多继承模式狭义菱形狭义菱形广义菱形广义菱形(1)多继承化为单继承)多继承化为单继承87/26/20249方法方法1 1:简单转换:简单转换(a a) 一般方法一般方法或或A AC C111111B BA AC CB B1A AC CB B(c c) 不合适的例子不合适的例子?职员职员学员学员在职学员在职学员职员职员学员学员在职学员在职学员1111(b b) 合适

7、的例子合适的例子汽车汽车制冷设备制冷设备冷藏车冷藏车或或111111汽车汽车制冷设备制冷设备冷藏车冷藏车汽车汽车制冷设备制冷设备冷藏车冷藏车(d d) 转换产生信息重复转换产生信息重复A AA AB BC CD D?B BC CD D97/26/202410方法方法2 2:重新定义对象类,化解多继承:重新定义对象类,化解多继承职员职员学员学员在职学员在职学员人员人员职员身份职员身份学员身份学员身份人员人员10.110.1职员身份职员身份学员身份学员身份身份身份人员人员10.2107/26/202411不适当的方法增加程序代码不适当的方法增加程序代码职员职员学员学员人员人员在职学员在职学员方法方

8、法3 3:保持分类,剥离多继承信息:保持分类,剥离多继承信息职员职员学员学员人员人员在职学员在职学员职员信息职员信息学员信息学员信息11111111117/26/202412(2 2)取消多态性)取消多态性(a)(b)多边形线条色线型边数顶点坐标绘图填充正多边形*顶点坐标*绘图矩形边数*顶点坐标*绘图多边形线条色线型正多边形绘图矩形顶点坐标绘图不规则多边形绘图边数顶点坐标边数顶点坐标填充127/26/2024132、增加一般类以建立共同协议、增加一般类以建立共同协议增加根类:增加根类:将所有的类组织在一起将所有的类组织在一起提供全系统通用的协议提供全系统通用的协议例:提供创建、删除、复制等操作

9、例:提供创建、删除、复制等操作增加其他一般类:增加其他一般类:提供局部通用的协议提供局部通用的协议例:提供持久存储及恢复功能例:提供持久存储及恢复功能137/26/202414 B B C CE E A A属性属性操作操作D DF F1 1* *属性属性操作操作属性属性操作操作属性属性操作操作属性属性操作操作属性属性操作操作例:例:ObjectObject 复用复用 147/26/2024153 3、实现复用的设计策略、实现复用的设计策略如果已存在一些可复用的类,而且这些类既有分析、设如果已存在一些可复用的类,而且这些类既有分析、设计时的定义,又有源程序,那么,复用这些类即可提高计时的定义,又

10、有源程序,那么,复用这些类即可提高开发效率与质量。开发效率与质量。目标:尽可能使复用成分增多,新开发的成分减少目标:尽可能使复用成分增多,新开发的成分减少当当前前所所需需的的类类的的信信息息比比可可复复用用类类定定义义的的信信息息直接复用直接复用 通过继承复用通过继承复用 删除可复用类的多余信息删除可复用类的多余信息删除多余信息,通过继承而复用删除多余信息,通过继承而复用157/26/202416例:例:车辆序号颜色式样出厂年月序号认证车辆序号厂商式样序号认证可复用的类问题域部分的类复用复用车辆序号厂商式样序号认证可复用的类167/26/2024174、提高性能、提高性能(1)调整对象分布)调

11、整对象分布(2)缩短对象存取时间)缩短对象存取时间设立缓冲区设立缓冲区甲机甲机乙机乙机sendcallcallsend类类A类类A类类B类类C类类B类类C甲机甲机乙机乙机177/26/202418(3)合并通讯频繁的类)合并通讯频繁的类流速调节器流速调节器指定流速指定流速流速调节流速调节流速探测器流速探测器当前流速当前流速流速探测流速探测取当前流速取当前流速流速控制器流速控制器指定流速指定流速当前流速当前流速流速调节流速调节流速探测流速探测合并前合并前合并后合并后(4)增加属性以减少重复计算)增加属性以减少重复计算call187/26/202419(5)降低算法的计算复杂性)降低算法的计算复杂

12、性(6)细化对象的分类)细化对象的分类 二次曲线二次曲线绘图绘图 二次曲线二次曲线 抛物线抛物线绘图绘图 双曲线双曲线绘图绘图 椭圆椭圆绘图绘图 197/26/202420(7)将复杂对象化为整体)将复杂对象化为整体-部分结构部分结构帧帧5 5、为数据存储管理增补属性与操作、为数据存储管理增补属性与操作在数据接口部分设计中介绍在数据接口部分设计中介绍背景背景前景前景显示显示显示显示1 1* *1 11 1207/26/2024216 6、完善对象的细节、完善对象的细节OOD在在OOA模型基础上所做的主要工作,不能用模型基础上所做的主要工作,不能用“细化细化”二二字概括,但细化是不可缺少的字概括

13、,但细化是不可缺少的(1)完善与问题域有关的属性和操作)完善与问题域有关的属性和操作在在OOA阶段允许不详尽,阶段允许不详尽,OOD必须加以完善必须加以完善(2)解决)解决OOA阶段推迟考虑的问题,包括:阶段推迟考虑的问题,包括:因封装原则而设立的对象操作因封装原则而设立的对象操作与与OOD模型其他部分有关的属性和操作模型其他部分有关的属性和操作(3)设计类的每个操作)设计类的每个操作必要时用流程图或者活动图表示必要时用流程图或者活动图表示(4)设计表示关联的属性)设计表示关联的属性区分多重性的区分多重性的3种情况,决定属性设置在哪一端种情况,决定属性设置在哪一端(5)设计表示聚合的属性)设计

14、表示聚合的属性区分组合与松散的聚合区分组合与松散的聚合对于组合,用嵌套对象实现对于组合,用嵌套对象实现对于松散的聚合,采用与关联相同的策略对于松散的聚合,采用与关联相同的策略217/26/2024227、定义对象实例定义对象实例在逻辑上,一个类的对象实例是:在逻辑上,一个类的对象实例是:问题域中所有可用这个类描述的实际事物问题域中所有可用这个类描述的实际事物在物理上,一个类的对象实例可以是:在物理上,一个类的对象实例可以是:内存中的对象变量内存中的对象变量文件的一个记录,或数据库表的一个元组文件的一个记录,或数据库表的一个元组一个类的对象实例可以分布到不同的处理机上一个类的对象实例可以分布到不

15、同的处理机上对每一台处理机对每一台处理机说明在它之上创建的每一个(或组)内存对象说明在它之上创建的每一个(或组)内存对象说明在它之上保存的外存对象说明在它之上保存的外存对象类的对象实例说明:类的对象实例说明: 处理机:处理机:, 内存对象:内存对象:(n元数组)元数组) 外存对象:外存对象:227/26/2024238、修改或补充辅助模型及模型规约、修改或补充辅助模型及模型规约包图包图类的增减、拆分、合并以及各个类之间关系的变化类的增减、拆分、合并以及各个类之间关系的变化顺序图顺序图操作与消息操作与消息活动图活动图操作流程操作流程其他模型图其他模型图状态机图、定时图、交互概览图、组合结构图状态

16、机图、定时图、交互概览图、组合结构图模型规约模型规约类的属性、操作及其对外关系的修改或细化类的属性、操作及其对外关系的修改或细化237/26/202424建立与建立与OOA文档的映射文档的映射指出指出OOA模型中的哪模型中的哪个(或哪些)类演化个(或哪些)类演化为为OOD模型中的哪个模型中的哪个(或哪些)类(或哪些)类247/26/20242512.1 什么是人机交互部分什么是人机交互部分人机交互部分是人机交互部分是OOD模型的外围组成部分之一,是系统中负模型的外围组成部分之一,是系统中负责人机交互的部分。其中所包含的对象(称作界面对象)构责人机交互的部分。其中所包含的对象(称作界面对象)构成

17、了系统的人机界面。成了系统的人机界面。现今的系统大多采用图形方式的人机界面现今的系统大多采用图形方式的人机界面形象、直观、形象、直观、易学、易用,远远胜于命令行方式的人机界面,是使软件系易学、易用,远远胜于命令行方式的人机界面,是使软件系统嬴得广大用户的关键因素之一。统嬴得广大用户的关键因素之一。但开发工作量大,成本高。近但开发工作量大,成本高。近30年出现了许多支持图形用户年出现了许多支持图形用户界面开发的软件系统,包括:界面开发的软件系统,包括:窗口系统(如窗口系统(如X Window,News););图形用户界面(图形用户界面(GUI)(如)(如OSF/Motif,Open Look);

18、);可视化开发环境(如可视化开发环境(如Visual C+,Visual Basic,Delphi)统称统称界面支持系统界面支持系统。人机交互部分既取决于需求,又与界面支持系统密切相关。人机交互部分既取决于需求,又与界面支持系统密切相关。第第12章章人机交互部分的设计人机交互部分的设计257/26/202426人机界面的开发不仅是设计和实现问题,也包括分析问题对人机交互需求的分析。人机界面的开发也不纯粹是软件问题,它还需要心理学、美学等许多其它学科的知识。把人机交互部分作为系统中一个独立的组成部分进行分析和把人机交互部分作为系统中一个独立的组成部分进行分析和设计,有利于隔离界面支持系统的变化对

19、问题域部分的影响设计,有利于隔离界面支持系统的变化对问题域部分的影响控制驱动部分控制驱动部分问题域问题域部分部分数数据据接接口口部部分分人人机机交交互互部部分分X-Window人人机机交交互互部部分分OSF/Motif人人机机交交互互部部分分Visual C+267/26/20242712.2 人机交互部分的需求分析人机交互部分的需求分析对使用系统的人进行分析对使用系统的人进行分析以便设计出适合其特点的交互方式和界面表现形式以便设计出适合其特点的交互方式和界面表现形式对人和机器的交互过程进行分析对人和机器的交互过程进行分析核心问题是人如何命令系统,以及系统如何向人提交信息核心问题是人如何命令系

20、统,以及系统如何向人提交信息(1)分析与系统交互的人(参与者)分析与系统交互的人(参与者)人对界面的需求,不仅在于人机交互的内容,而且在于他们人对界面的需求,不仅在于人机交互的内容,而且在于他们对界面表现形式、风格等方面的爱好。对界面表现形式、风格等方面的爱好。前者是前者是客观需求客观需求,对谁都一样,对谁都一样后者是后者是主观需求主观需求,因人而异,因人而异分析工作包括分析工作包括列举所有的人员参与者列举所有的人员参与者调查研究调查研究区分人员类型区分人员类型统计(或估算)各类人员的比例统计(或估算)各类人员的比例了解使用者的主观需求了解使用者的主观需求277/26/202428(2)从用况

21、分析人机交互)从用况分析人机交互用况的构成用况的构成参与者的行为和系统行为按时间顺序交替出现,左右参与者的行为和系统行为按时间顺序交替出现,左右分明。形成交叉排列的段落。分明。形成交叉排列的段落。每个段落至少含有一个输入语句或输出语句;每个段落至少含有一个输入语句或输出语句;有若干纯属参与者自身或系统自身的行为陈述;有若干纯属参与者自身或系统自身的行为陈述;可能包含一些控制语句或括号。可能包含一些控制语句或括号。抽取方法:抽取方法:删除所有与输入、输出无关的语句删除所有与输入、输出无关的语句删除不再包含任何内容的控制语句与括号删除不再包含任何内容的控制语句与括号剩下的就是对一项功能的人机交互描

22、述剩下的就是对一项功能的人机交互描述287/26/202429收款员收款员收款收款输入开始本次收款的命令;作好收款准备,应收款总数置为0,输出提示信息;forfor 顾客选购的每种商品 dodo 输入商品编号; ifif 此种商品多于一件 thenthen 输入商品数量 end ifend if;检索商品名称及单价;货架商品数减去售出数;ifif 货架商品数低于下限 thenthen 通知供货员请求上货end ifend if;计算本种商品总价并打印编号、名称、数量、单价、总价;总价累加到应收款总数;end forend for;打印应收款总数;输入顾客交来的款数;计算应找回的款数,打印以上两

23、个数目,收款数计入账册。 (b)删除与输入输出无关的陈述收款收款输入开始本次收款的命令;作好收款准备,应收款总数置为0,输出提示信息;forfor 顾客选购的每种商品 dodo 输入商品编号; ifif 此种商品多于一件 thenthen 输入商品数量 end ifend if;检索商品名称及单价;货架商品数减去售出数;ifif 货架商品数低于下限 thenthen 通知供货员请求上货end ifend if;计算本种商品总价并打印编号、名称、数量、单价、总价;总价累加到应收款总数;end forend for;打印应收款总数;输入顾客交来的款数;计算应找回的款数,打印以上两个数目,收款数计入

24、账册。 (a)一个用况的例子收款员收款(人机交互)收款员收款(人机交互)输入开始本次收款的命令;输出提示信息;for顾客选购的每种商品do输入商品编号;if此种商品多于一件then输入商品数量endif;打印商品编号、名称、数量、单价、总价;endfor;打印应收款总数输入顾客交来的款数打印交款数及找回款数;(c)得到人机交互描述例:例:297/26/202430人机交互的细化人机交互的细化输入的细化输入的细化输入步骤的细化输入步骤的细化输入设备的选择输入设备的选择输入信息表现形式的选择输入信息表现形式的选择输出的细化输出的细化输出步骤的细化输出步骤的细化输出设备的选择输出设备的选择输出信息表

25、现形式的选择输出信息表现形式的选择输入与输出相比,输入在人机交互中起到主导作用输入与输出相比,输入在人机交互中起到主导作用一次输入,广义地称为对系统的一条一次输入,广义地称为对系统的一条“命令命令”307/26/202431(3)分析处理异常事件的人机交互)分析处理异常事件的人机交互(4)命令的组织)命令的组织不受欢迎的命令组织方式:不受欢迎的命令组织方式:一条命令含有大量的参数和任选项一条命令含有大量的参数和任选项系统有大量命令,不加任何组织和引导系统有大量命令,不加任何组织和引导基本命令:基本命令:使用一项独立的系统功能的命令。使用一项独立的系统功能的命令。命令步:命令步:基本命令交互过程

26、中所包含的具体输入步骤。基本命令交互过程中所包含的具体输入步骤。高层命令:高层命令:由其他若干命令组合而成,起组织和引导作用由其他若干命令组合而成,起组织和引导作用命令的组织措施命令的组织措施分解与组合分解与组合分解:将一条含有许多参数和选项的命令分解为若分解:将一条含有许多参数和选项的命令分解为若干命令步干命令步组合:将基本命令组织成高层命令,从高层命令引组合:将基本命令组织成高层命令,从高层命令引向基本命令向基本命令317/26/202432(c c) 半序网状结构半序网状结构(b b) 树型结构树型结构(a a) 线性结构线性结构(d d) 一般的网状结构一般的网状结构基本命令及其基本命

27、令及其命令步的结构命令步的结构327/26/202433高层命令的组织结构高层命令的组织结构 337/26/202434(5 5)输出信息的组织结构分析)输出信息的组织结构分析两层命令之间的两层命令之间的输出信息结构输出信息结构两层命令两层命令反馈信息处理结果提示信息典型的输出信息结构典型的输出信息结构反馈信息处理结果处理结果提示信息提示信息处理结果提示信息复杂的输出信息结构复杂的输出信息结构347/26/20243512.3 人机界面的设计准则人机界面的设计准则使用简便使用简便一致性一致性启发性启发性减少人脑记忆的负担减少人脑记忆的负担减少重复的输入减少重复的输入容错性容错性及时反馈及时反馈

28、其它:艺术性、趣味性、风格、视感其它:艺术性、趣味性、风格、视感357/26/20243612.4 人机界面的人机界面的OO设计设计(1)选择界面支持系统)选择界面支持系统窗口系统:窗口系统:“窗口系统是控制位映像显示器与输入设备的系统窗口系统是控制位映像显示器与输入设备的系统软件,它所管理的资源有屏幕、窗口、像素映像,色彩表、软件,它所管理的资源有屏幕、窗口、像素映像,色彩表、字体、光标、图形资源及输入设备。字体、光标、图形资源及输入设备。” 例:例:Smalltalk,Macintosh,XWindow图形用户界面(图形用户界面(GUI):):在窗口系统之上提供了层次更高的在窗口系统之上提

29、供了层次更高的界面支持功能,具有特定的视感和风格,支持应用系统界面界面支持功能,具有特定的视感和风格,支持应用系统界面开发的系统开发的系统 。例:例:OSF/Motif,OpenLook可视化编程环境:可视化编程环境:将窗口系统、将窗口系统、GUI、可视化开发工具、编、可视化开发工具、编程语言以及类库结合为一体的可视化开发平台,支持用户以程语言以及类库结合为一体的可视化开发平台,支持用户以“所见即所得所见即所得”的方式构造用户界面的方式构造用户界面 。例:例:VisualC+,Delphi,VisualBasic考虑的因素:考虑的因素:硬件、操作系统及编程语言硬件、操作系统及编程语言,支持级别

30、,支持级别,风格与视感,风格与视感367/26/202437(2)根据人机交互需求选用界面元素)根据人机交互需求选用界面元素不同的界面支持系统提供不同的界面元素,常用的界面元素不同的界面支持系统提供不同的界面元素,常用的界面元素例如:窗口、菜单、对话盒、图符、滚动条等例如:窗口、菜单、对话盒、图符、滚动条等系统的启动系统的启动选用实现主界面的界面元素,如选用实现主界面的界面元素,如框架框架窗口、对话框窗口窗口、对话框窗口高层命令组织结构的实现高层命令组织结构的实现通过界面元素的构造层次体现高层命令的组织结构通过界面元素的构造层次体现高层命令的组织结构例如:窗口例如:窗口菜单菜单下级菜单下级菜单

31、基本命令的执行基本命令的执行通过高层命令引向基本命令通过高层命令引向基本命令例如:窗口例如:窗口菜单菜单菜单选项菜单选项详细交互过程的输入与输出详细交互过程的输入与输出选择适当的界面元素完成每个命令步的输入与输出选择适当的界面元素完成每个命令步的输入与输出异常命令的输入异常命令的输入使用支持异常命令输入的界面功能,如鼠标右键菜单使用支持异常命令输入的界面功能,如鼠标右键菜单377/26/202438(3)用)用OO概念表示界面元素概念表示界面元素对象和类对象和类 尽可能使用界面类库中提供的可复用类尽可能使用界面类库中提供的可复用类自定义的类自定义的类类名类名属性属性操作操作 类名类名 复用复用

32、 复用类库中的类复用类库中的类属性与属性与 操作操作用属性表示界面对象的静态特征用属性表示界面对象的静态特征物理特征物理特征如:位置、尺寸、颜色、立体效果如:位置、尺寸、颜色、立体效果 逻辑特征逻辑特征聚合、关联聚合、关联用操作表示界面对象的行为用操作表示界面对象的行为例如:创建、激活、最大化、最小化、移动、选例如:创建、激活、最大化、最小化、移动、选中、单击、双击中、单击、双击 387/26/202439整体整体-部分结构部分结构表示界面元素之间的构成关系,例如:表示界面元素之间的构成关系,例如:窗口窗口 与与 其中的菜单、按钮、图符、对话框、滚动条其中的菜单、按钮、图符、对话框、滚动条表示

33、界面对象在操作中的逻辑层次表示界面对象在操作中的逻辑层次反映上、下两层命令之间的关系反映上、下两层命令之间的关系例:例:框架窗口框架窗口397/26/202440框架窗口框架窗口主菜单主菜单下拉菜单下拉菜单视窗视窗工具条工具条滚动条滚动条按钮按钮111*1*1112111*407/26/202441一般一般- -特殊结构特殊结构表示较一般的界面类和较特殊的界面类之间的关系表示较一般的界面类和较特殊的界面类之间的关系 自定义的类之间的一般自定义的类之间的一般- -特殊关系特殊关系用一般用一般- -特殊结构特化可复用类特殊结构特化可复用类CDialog复用复用操作操作属性属性对话框对话框 A A4

34、17/26/202442关联关联表示界面类之间一个有特定意义的关系,例如:表示界面类之间一个有特定意义的关系,例如:按钮按钮11对话框对话框消息消息 高层命令到低层命令高层命令到低层命令界面对象之间的消息界面对象之间的消息基本命令的执行基本命令的执行从界面对象向功能对象发消息从界面对象向功能对象发消息 信息输出信息输出从功能对象向界面对象发消息从功能对象向界面对象发消息工具条工具条1*427/26/20244312.5 可视化编程环境下的人机界面设计可视化编程环境下的人机界面设计(1)问题的提出)问题的提出(2)所见即所得的界面开发)所见即所得的界面开发(3)设计的必要性)设计的必要性为实现提

35、供依据为实现提供依据为了满足人机交互的需求,人机界面中要使用哪些界面对象?为了满足人机交互的需求,人机界面中要使用哪些界面对象?交互过程中的各项输入和输出应由哪些界面对象完成?交互过程中的各项输入和输出应由哪些界面对象完成?如如何何通通过过界界面面对对象象类类之之间间的的各各种种关关系系体体现现人人机机交交互互命命令令的的组组织织结结构与层次?构与层次?如如何何通通过过界界面面对对象象和和功功能能对对象象之之间间的的消消息息实实现现它它们们之之间间的的动动态态联联系系?降低失败的风险降低失败的风险设计策略需要改进设计策略需要改进类库的存在类库的存在以所见即所得的定义界面对象的各种物理属性更为直

36、接以所见即所得的定义界面对象的各种物理属性更为直接437/26/202444(4)基于可视化编程环境的设计策略基于可视化编程环境的设计策略类的设立类的设立首先想到复用首先想到复用Cdialog复用复用CMysystemDigCEdit复用复用通过继承复用通过继承复用直接复用直接复用447/26/202445属性属性忽略物理特征,着重表示逻辑特征忽略物理特征,着重表示逻辑特征设计阶段不必关心描述界面物理特征的属性设计阶段不必关心描述界面物理特征的属性诸如:大小、形状、位置、颜色、边框、底纹、诸如:大小、形状、位置、颜色、边框、底纹、图案式样、三维效果等,图案式样、三维效果等,由实现人员去自主处理

37、效果更好,效率更高由实现人员去自主处理效果更好,效率更高以主要精力定义描述界面逻辑特征的属性以主要精力定义描述界面逻辑特征的属性表现命令的组织结构的属性、表现命令的组织结构的属性、例如:菜单类的每个选项表示什么命令例如:菜单类的每个选项表示什么命令表现界面元素之间组成关系和关联的属性表现界面元素之间组成关系和关联的属性例如:对话框中包含哪些控件例如:对话框中包含哪些控件457/26/202446CMysystemDigCMysystemDig SetDlgItemText 操作操作显式地表示从高层类继承的操作显式地表示从高层类继承的操作例:例:CDialogCDialog复用复用 467/26

38、/202447整体整体- -部分结构部分结构表现界面的组织结构和命令层次表现界面的组织结构和命令层次通过整体-部分结构表现界面对象之间的组成关系和人机交互命令的层次关系与采用其它界面支持系统的策略相同区分界面对象的普通属性和它的部分对象区分界面对象的普通属性和它的部分对象有些组成部分被作为对象的一个普通属性有些组成部分被作为对象的一个普通属性例如下拉菜单的选项,窗口的边框有些组成部分则被作为一个部分对象有些组成部分则被作为一个部分对象例如对话框的一个下拉菜单或按钮区分两种情况的依据区分两种情况的依据环境类库有没有给出这种组成部分的类定义环境类库有没有给出这种组成部分的类定义477/26/202

39、448一般一般- -特殊结构特殊结构多从可复用类直接继承多从可复用类直接继承例:例:对话框对话框 复用复用 对话框对话框 A A对话框对话框 B B编辑框编辑框 复用复用 按钮按钮 复用复用 1 13 31 11 1 普通策略普通策略2 21 1对话框对话框 复用复用 对话框对话框 A A 对话框对话框 B B编辑框编辑框 复用复用 按钮按钮 复用复用 1 11 11 15 51 11 11 13 3直接继承可复用类的策略直接继承可复用类的策略487/26/202449消息消息忽略自动实现的消息忽略自动实现的消息注意需要编程实现的消息注意需要编程实现的消息1、界面对象接收到一个操作事件,通过它

40、的一个操作向处理该事件的功能对象所发送的消息。2、从功能对象向完成其输入/输出的界面对象发送的消息。3、其它:凡是需要通过手工编程来实现的消息,都要在设计中加以表示。497/26/20245013.1 什么是控制驱动部分什么是控制驱动部分控制驱动部分控制驱动部分是是OOD模型的外围组成部分之一,由系统中模型的外围组成部分之一,由系统中全体主动类构成。这些主动类描述了整个系统中所有的主全体主动类构成。这些主动类描述了整个系统中所有的主动对象,每个主动对象是系统中一个控制流的驱动者。动对象,每个主动对象是系统中一个控制流的驱动者。 控制流控制流(control flow)进程(进程(process

41、)和线程()和线程(thread)的总称)的总称有多个控制流并发执行的系统称作有多个控制流并发执行的系统称作并发系统并发系统(多任务系统)(多任务系统)第第13章章 控制驱动部分的设计控制驱动部分的设计507/26/202451为什么需要控制驱动部分为什么需要控制驱动部分并发行为是现实中固有的并发行为是现实中固有的当前大量的系统都是并发系统(多任务系统),例如:当前大量的系统都是并发系统(多任务系统),例如:外围设备与主机并发工作的系统外围设备与主机并发工作的系统有多个窗口进行人机交互的系统有多个窗口进行人机交互的系统多用户系统多用户系统多个子系统并发工作的系统多个子系统并发工作的系统单处理机

42、上的多任务系统单处理机上的多任务系统多处理机系统多处理机系统多任务的设置多任务的设置描述问题域固有的并发行为描述问题域固有的并发行为表达实现所需的设计决策表达实现所需的设计决策隔离硬件、操作系统、网络的变化对整个系统的影响隔离硬件、操作系统、网络的变化对整个系统的影响517/26/20245213.2 相关技术问题相关技术问题(1)由系统总体方案决定的实现条件:)由系统总体方案决定的实现条件:计算机硬件计算机硬件性能、容量和性能、容量和CPU数目数目操作系统操作系统对并发和通讯的支持对并发和通讯的支持网络方案网络方案网络软硬件设施、网络拓扑结构、通讯速率、网络软硬件设施、网络拓扑结构、通讯速率

43、、网络协议等网络协议等软件体系结构软件体系结构(详后)(详后)编程语言编程语言对进程和线程的描述能力对进程和线程的描述能力其它商品软件其它商品软件如数据管理系统、界面支持系统、构件库等如数据管理系统、界面支持系统、构件库等对共享和并发访问的支持对共享和并发访问的支持527/26/202453(2 2)软件体系结构)软件体系结构抽象地说,软件体系结构描述了构成系统的元素、这些抽象地说,软件体系结构描述了构成系统的元素、这些元素之间的相互作用、指导其组合的模式以及对这些模元素之间的相互作用、指导其组合的模式以及对这些模式的约束式的约束 Mary Shaw Mary Shaw 几种典型的软件体系结构

44、风格几种典型的软件体系结构风格管道与过滤器风格(管道与过滤器风格(pipe and filter stylepipe and filter style)数据抽象风格(数据抽象风格(data abstraction styledata abstraction style)面向对象风格(面向对象风格(object-oriented styleobject-oriented style)隐式调用风格(隐式调用风格(implicit invocation styleimplicit invocation style)层次风格(层次风格(layered stylelayered style)仓库风格(仓

45、库风格(repository stylerepository style)黑板风格(黑板风格(blackboard styleblackboard style)解释器模型(解释器模型(interpreter modelinterpreter model)进程控制风格(进程控制风格(process control styleprocess control style)客户客户- -服务器风格(服务器风格(client-server styleclient-server style) 537/26/202454主机主机+仿真终端体系结构仿真终端体系结构文件共享体系结构文件共享体系结构客户客户-服务

46、器体系结构服务器体系结构二层客户二层客户-服务器体系结构服务器体系结构三层客户三层客户-服务器体系结构服务器体系结构对等式客户对等式客户-服务器体系结构服务器体系结构瘦客户瘦客户-服务器体系结构服务器体系结构浏览器浏览器-服务器体系结构服务器体系结构(3)分布式系统的体系结构风格)分布式系统的体系结构风格547/26/202455进程(进程(process)概念出现之前,并发程序设计困难重重)概念出现之前,并发程序设计困难重重主要原因:主要原因:并发行为彼此交织,理不出头绪并发行为彼此交织,理不出头绪与时间有关的错误不可重现与时间有关的错误不可重现进程概念的提出使这个问题得到根本解决进程概念的

47、提出使这个问题得到根本解决进程的全称是进程的全称是顺序进程顺序进程(sequentialprocess),其基本思),其基本思想是把并发程序分解成一些顺序执行的进程,使得:想是把并发程序分解成一些顺序执行的进程,使得:每个进程内部不再包含并发行为每个进程内部不再包含并发行为所以叫做顺序进程,其设计避免了并发问题所以叫做顺序进程,其设计避免了并发问题多个进程之间是并发(异步)执行的多个进程之间是并发(异步)执行的所以能够构成并发程序所以能够构成并发程序(4 4)系统的并发性)系统的并发性557/26/202456线程线程(Thread )由于并行计算的需要,要求人为地在顺序程序内部定由于并行计算

48、的需要,要求人为地在顺序程序内部定义和识别可并发执行的单位。义和识别可并发执行的单位。因此后来的操作系统大多支持因此后来的操作系统大多支持线程线程概念。概念。线程与进程的区别:线程与进程的区别:进程既是处理机分配单位,也是存储空间、设备等资进程既是处理机分配单位,也是存储空间、设备等资源的分配单位(重量级的控制流);源的分配单位(重量级的控制流);线程只是处理机分配单位(轻量级的控制流)线程只是处理机分配单位(轻量级的控制流) ;一个进程可以包含多个线程,也可以是单线程的。一个进程可以包含多个线程,也可以是单线程的。控制流控制流是进程和线程的总称。是进程和线程的总称。567/26/202457

49、应用系统的并发性应用系统的并发性从网络、硬件平台的角度看:从网络、硬件平台的角度看:分布在不同计算机上的进程之间的并发分布在不同计算机上的进程之间的并发在多在多CPU的计算机上运行的进程或线程之间的并发的计算机上运行的进程或线程之间的并发在一个在一个CPU上运行的多个进程或线程之间的并发上运行的多个进程或线程之间的并发从应用系统的需求看:从应用系统的需求看:需要跨地域进行业务处理的系统需要跨地域进行业务处理的系统需要同时使用多台计算机或多个需要同时使用多台计算机或多个CPU进行处理的系统进行处理的系统需要同时供多个用户或操作者使用的系统需要同时供多个用户或操作者使用的系统需要在同一时间执行多项

50、功能的系统需要在同一时间执行多项功能的系统需要与系统外部多个参与者同时进行交互的系统需要与系统外部多个参与者同时进行交互的系统577/26/202458处理应用系统并发性的例子处理应用系统并发性的例子见教材见教材13.2.4.3节节例例1例例7587/26/202459例例5:用多进程实现遥感信息的输入、处理和显示:用多进程实现遥感信息的输入、处理和显示输入进程输入进程操作操作数据数据数据处理进程数据处理进程操作操作数据数据显示进程显示进程操作操作数据数据数据数据数据数据IPCIPC数据数据数据数据显示屏显示屏地面接收设备地面接收设备输入输入输出输出遥感信息处理系统遥感信息处理系统597/26

51、/202460例例6:用多线程实现遥感信息的输入、处理和显示:用多线程实现遥感信息的输入、处理和显示输输入入线线程程数数据据处处理理线线程程显显示示线线程程数据数据数据数据数据数据输入输入输出输出地面接收设备地面接收设备显示屏显示屏遥感信息处理进程遥感信息处理进程607/26/202461业务处理进程业务处理进程1操作操作输输入入线线程程数数据据处处理理线线程程显显示示线线程程遥感信息处理进程遥感信息处理进程数据数据数据库管理系统数据库管理系统数据库数据库数据数据数据数据业务处理进程业务处理进程n操作操作数据数据IPC/RPC例例7 7:同时采用多进程和多线程:同时采用多进程和多线程617/2

52、6/20246213.3 如何设计控制驱动部分如何设计控制驱动部分(1 1)选择软件体系结构风格)选择软件体系结构风格二层客户二层客户- -服务器体系结构服务器体系结构(数据)服务器(数据)服务器客户机客户机三层客户三层客户- -服务器体系结构服务器体系结构数据服务器数据服务器应用服务器应用服务器客户机客户机 627/26/202463考虑分布方案之前,暂时将系统看作集中式的考虑分布方案之前,暂时将系统看作集中式的确定分布方案之后,将对象分布到各个处理机上确定分布方案之后,将对象分布到各个处理机上以每台处理机上的类作为一个包以每台处理机上的类作为一个包集中式集中式类图类图分分布布到到不不同同结

53、结点点上上结点A包A结点B包B结点C包C(2 2)确定系统分布方案)确定系统分布方案637/26/202464系统分布系统分布 包括包括功能分布功能分布和和数据分布数据分布在面向对象的系统中都体现于在面向对象的系统中都体现于对象分布对象分布原则:原则:减少远程传输,便于管理减少远程传输,便于管理对象分布对象分布软件体系结构软件体系结构系统系统功能功能在哪些结点提供在哪些结点提供数据数据在哪些结点长期存储管理,在哪些结点长期存储管理,在哪些结点在哪些结点临时使用临时使用参照参照用况用况 把把合作紧密的对象合作紧密的对象尽可能分布在同一结点尽可能分布在同一结点追踪追踪消息消息 把把一个控制流经历的

54、对象一个控制流经历的对象分布在同一结点分布在同一结点647/26/202465分布在每个结点上的对象,都需要相应的类来创建分布在每个结点上的对象,都需要相应的类来创建(1)如果一个类只需要在一个结点上创建对象实例)如果一个类只需要在一个结点上创建对象实例把这个类分布在该结点上把这个类分布在该结点上(2)如果一个类需要在多个结点上创建对象实例)如果一个类需要在多个结点上创建对象实例把这个类分布到每个需要创建其实例的结点上把这个类分布到每个需要创建其实例的结点上其中一个作为正本,其他作为副本其中一个作为正本,其他作为副本类的分布类的分布:根据对象分布的需要:根据对象分布的需要657/26/2024

55、66(a)一个集中式类图1*ABCDEFG*1服务器HIJABCDEFG*1(b)服务器包1*副本DHIJ副本A客户机(c)客户机包(第一种策略)(d)客户机包(第二种策略)1*副本DHIJ客户机callcallcall例例667/26/20246713.3.3 识别控制流识别控制流(1)以结点为单位识别控制流)以结点为单位识别控制流不同结点上程序的并发问题已经解决不同结点上程序的并发问题已经解决考虑在每个结点上运行的程序还需要如何并发考虑在每个结点上运行的程序还需要如何并发(2)从用户需求出发认识控制流)从用户需求出发认识控制流有哪些任务必须在同一台计算机上并发执行有哪些任务必须在同一台计算

56、机上并发执行(3)从用况认识控制流)从用况认识控制流 关注描述如下三类功能的用况关注描述如下三类功能的用况要求与其他功能同时执行的功能要求与其他功能同时执行的功能用户随时要求执行用户随时要求执行 的功能的功能处理系统异常事件功能处理系统异常事件功能(4)参照)参照OOA模型中的主动对象模型中的主动对象(5)为改善性能而增设的控制流)为改善性能而增设的控制流高优先级任务、低优先级任务、紧急任务高优先级任务、低优先级任务、紧急任务(6)实现并行计算的控制流)实现并行计算的控制流(线程)(线程)(7)实现结点之间通讯的控制流)实现结点之间通讯的控制流(进程)(进程)(8)对其它控制流进行协调的控制流

57、)对其它控制流进行协调的控制流677/26/202468active 类 名UML1的主动类表示法的主动类表示法类 名process类 名thread类 名UML2的主动类表示法的主动类表示法13.3.4 用主动对象表示控制流用主动对象表示控制流控制流是主动对象中一个主动操作的一次执行。其间可控制流是主动对象中一个主动操作的一次执行。其间可能要调用其他对象的操作,后者又可能调用另外一些对能要调用其他对象的操作,后者又可能调用另外一些对象的操作,这就是一个控制流的运行轨迹。象的操作,这就是一个控制流的运行轨迹。 问题:问题:一个主动类可以有多个主动操作和若干被动操作,这种一个主动类可以有多个主动

58、操作和若干被动操作,这种表示法不能显式地表示哪个(哪些)操作是主动操作。表示法不能显式地表示哪个(哪些)操作是主动操作。687/26/202469用关键词表示主动操作用关键词表示主动操作类名类名进程进程操作名操作名() 线程线程操作名操作名() 线程线程操作名操作名()操作名操作名()active类名类名进程进程操作名操作名() 线程线程操作名操作名() 线程线程操作名操作名()操作名操作名()697/26/202470显示地表示由进程创建线程显示地表示由进程创建线程类B线程 T1createcreate类C线程 T2类A进程 P707/26/202471把控制驱动部分看成一个包把控制驱动部分

59、看成一个包其中包含了系统中全部主动类其中包含了系统中全部主动类可以从多种观点把可以从多种观点把OOD模型划分成包模型划分成包人人机机交交互互部部分分数数据据接接口口部部分分控制驱动部分控制驱动部分问题域部分问题域部分问题域部分问题域部分控制驱动部分控制驱动部分人机交互人机交互部分部分数据接口数据接口部分部分按按OOD模型的四个组成部分模型的四个组成部分按分布的结点按分布的结点数据服务器数据服务器应用服务器应用服务器客户机客户机按子系统按子系统技术部技术部财物部财物部营业部营业部人事部人事部717/26/202472主动对象属于控制驱动部分,也可以同时属于其他部分主动对象属于控制驱动部分,也可以

60、同时属于其他部分因为因为OOD模型的各个部分可以交叉模型的各个部分可以交叉例:订单系统中营业员对象可以有不同的设计方案例:订单系统中营业员对象可以有不同的设计方案人人机机交交互互部部分分数数据据接接口口部部分分控制驱动部分控制驱动部分问题域部分问题域部分营业员营业员active营业员进程营业员进程营业员窗口营业员窗口callcall方案方案1:无交叉无交叉727/26/202473人人机机交交互互部部分分数数据据接接口口部部分分控制驱动部分控制驱动部分问题域部分问题域部分进程营业员营业员营业员窗口营业员窗口call方案方案2:问题域部分和控制驱动部分交叉问题域部分和控制驱动部分交叉737/26

61、/202474方案方案3:问题域部分和人机交互部分交叉问题域部分和人机交互部分交叉人人机机交交互互部部分分数数据据接接口口部部分分控制驱动部分控制驱动部分问题域部分问题域部分营业员营业员callactive营业员进程营业员进程747/26/202475人人机机交交互互部部分分数数据据接接口口部部分分控制驱动部分控制驱动部分问题域部分问题域部分方案方案4:问题域部分、人机交互部分、控制驱动部分都交叉问题域部分、人机交互部分、控制驱动部分都交叉active营业员营业员提问:提问:1、还有没有其他方案?、还有没有其他方案?2、是否违背了隔离对问题域部分影响的初衷?、是否违背了隔离对问题域部分影响的初

62、衷?757/26/202476数据接口部分是数据接口部分是OOD模型中负责与具体的数据管理系统衔模型中负责与具体的数据管理系统衔接的外围组成部分,它为系统中需要长久存储的对象提供接的外围组成部分,它为系统中需要长久存储的对象提供了在选定的数据管理系统中进行数据存储与恢复的功能。了在选定的数据管理系统中进行数据存储与恢复的功能。 问题范围:问题范围:对象在永久性存储介质上的存储对象在永久性存储介质上的存储只须存储对象的属性部分只须存储对象的属性部分可能只有一部分对象需要长久存储可能只有一部分对象需要长久存储11.1 什么是数据接口部分什么是数据接口部分大部分实用的系统都要处理数据的持久存储问题大

63、部分实用的系统都要处理数据的持久存储问题 数据保存于永久性存储介质数据保存于永久性存储介质在数据管理系统的支持下实现其存储、检索和维护在数据管理系统的支持下实现其存储、检索和维护 在面向对象的系统中,数据的存储表现为对象存储在面向对象的系统中,数据的存储表现为对象存储 第第14章章数据接口部分的设计数据接口部分的设计767/26/202477不同的数据管理系统:不同的数据管理系统:文件系统文件系统关系型数据库管理系统关系型数据库管理系统面向对象的数据库管理系统面向对象的数据库管理系统各有不同的数据定义方式和数据操纵方式各有不同的数据定义方式和数据操纵方式针对不同的数据管理系统,需要做不同设计针

64、对不同的数据管理系统,需要做不同设计 根据所选用的数据管理系统特点,设计一些专门处理其它根据所选用的数据管理系统特点,设计一些专门处理其它对象的持久存储问题的对象对象的持久存储问题的对象组织成一个独立的组成部分组织成一个独立的组成部分 数据接口部分数据接口部分777/26/202478优点:优点:集中解决对象存储问题集中解决对象存储问题隔离数据管理系统对其它部分的影响隔离数据管理系统对其它部分的影响选用不同的数据管理系统时,问题域部分变化较少选用不同的数据管理系统时,问题域部分变化较少人人机机交交互互部部分分控制驱动部分控制驱动部分问题域问题域部分部分数数据据接接口口部部分分文件系统文件系统数

65、数据据接接口口部部分分文件系统文件系统数数据据接接口口部部分分关系型关系型DBMS数数据据接接口口部部分分OO-DBMS787/26/20247914.2 数据管理系统及其选择数据管理系统及其选择数据管理系统数据管理系统实现数据存储、检索、管理与维护的系统实现数据存储、检索、管理与维护的系统包括文件系统和数据库管理系统两大类包括文件系统和数据库管理系统两大类文件系统文件系统 file system 关系型数据库管理系统关系型数据库管理系统 RDBMS面向对象的数据库管理系统面向对象的数据库管理系统 OODBMS797/26/202480(一)文件系统(一)文件系统 通常是操作系统的一部分通常是

66、操作系统的一部分管理外存空间的文件数据管理外存空间的文件数据提供存储、检索、更新、共享和保护等功能提供存储、检索、更新、共享和保护等功能文件结构文件结构物理结构物理结构文件数据在存储空间的存放方法和组织关系文件数据在存储空间的存放方法和组织关系 逻辑结构逻辑结构呈现给用户的文件结构呈现给用户的文件结构如流式结构、记录式结构如流式结构、记录式结构 等等文件系统提供的支持文件系统提供的支持在人机界面上进行操作的系统命令在人机界面上进行操作的系统命令在程序中使用的广义指令在程序中使用的广义指令创建、删除、打开、关闭、读、写、控制等创建、删除、打开、关闭、读、写、控制等 编程语言可以提供更方便的文件定

67、义与使用方式编程语言可以提供更方便的文件定义与使用方式 807/26/202481优点:优点:廉价,容易学习和掌握,廉价,容易学习和掌握,对数据类型没有限制对数据类型没有限制 缺点:缺点:功能贫乏、低级功能贫乏、低级不容易体现数据之间的关系不容易体现数据之间的关系只能按地址或者记录读写,只能按地址或者记录读写,不能按属性进行数据检索与更新不能按属性进行数据检索与更新缺少数据完整性支持缺少数据完整性支持数据共享支持薄弱数据共享支持薄弱文件系统的优缺点文件系统的优缺点 817/26/202482(二)数据库管理系统(二)数据库管理系统数据库:数据库:长期存储在计算机内、有组织、可共享的数据集合。其

68、中的长期存储在计算机内、有组织、可共享的数据集合。其中的数据按一定的数据按一定的数据模型数据模型组织、描述和储存,具有较小的冗余度,较高组织、描述和储存,具有较小的冗余度,较高的数据独立性和易扩展性,并可为各种用户共享。的数据独立性和易扩展性,并可为各种用户共享。数据库管理系统(数据库管理系统(DBMS):用于建立、使用和维护数据库的软件。:用于建立、使用和维护数据库的软件。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性数据模型:数据模型:描述如何在数据库中定义数据及其操作,内容包括:描述如何在数据库中定义数据及其操作,

69、内容包括:实体及实体间联系的数据结构描述,对数据的操作,完整性约束实体及实体间联系的数据结构描述,对数据的操作,完整性约束不同的数据库基于不同的数据模型不同的数据库基于不同的数据模型网状网状数据库数据库关系型关系型数据库数据库面向对象面向对象的数据库的数据库层次层次数据库数据库基于网状数据模型基于层次数据模型基于关系数据模型基于面向对象数据模型827/26/2024831、关系数据库管理系统、关系数据库管理系统 RDBMS关系模型关系模型给定一组域D1,D2,Dn其笛卡尔积D1D2Dn的一个子集就是一个关系关系,又称二维表二维表基本要求:关系的每个属性必须是原子的基本要求:关系的每个属性必须是

70、原子的数据的组织:用二维表组织各类数据数据的组织:用二维表组织各类数据既可存放描述实体自身特征的数据既可存放描述实体自身特征的数据也可存放描述实体之间联系的数据也可存放描述实体之间联系的数据每一列称作一个每一列称作一个属性属性每一行称作一个每一行称作一个元组元组数据的运算:数据的运算:提供并、交、差等集合运算提供并、交、差等集合运算以及选取、投影、联结等操作以及选取、投影、联结等操作837/26/202484关系数据库术语对照关系数据库术语对照数据库专业术语开发者的习惯术语用户习惯术语关系relation文件file表table元组tuple记录record行row属性attribute字段,

71、域field列column847/26/2024852、面向对象数据库管理系统、面向对象数据库管理系统 OODBMS采用面向对象数据模型的数据库管理系统采用面向对象数据模型的数据库管理系统 背景:背景:越来越多的系统用越来越多的系统用OO技术开发(采用技术开发(采用OO数据模型)数据模型) RDBMS的局限性(采用关系数据模型)的局限性(采用关系数据模型) 不能直接、有效地组织和存储对象数据,需要对数据不能直接、有效地组织和存储对象数据,需要对数据模式进行转换,并提供相应的接口模式进行转换,并提供相应的接口因此出现了面向对象数据库管理系统因此出现了面向对象数据库管理系统OODBMSOODBMS

72、的特征:的特征:是面向对象的:是面向对象的:支持对象、类、对象标识、对象的属性与操作、封装、支持对象、类、对象标识、对象的属性与操作、封装、继承、聚合、关联、多态等继承、聚合、关联、多态等OO概念。概念。具有数据库管理系统的功能:具有数据库管理系统的功能:数据定义与操纵语言、完整性保障、安全机制,并发数据定义与操纵语言、完整性保障、安全机制,并发控制、故障恢复、事务运行管理、可扩充控制、故障恢复、事务运行管理、可扩充857/26/202486三种类型的三种类型的OODBMS产品产品1)在)在OOPL基础上增加数据库管理系统的功能基础上增加数据库管理系统的功能例如:例如:GemStone 和和

73、ObjectStore2)对)对RDBMS进行扩充,使之支持面向对象数据模型进行扩充,使之支持面向对象数据模型并向用户提供面向对象的应用程序接口并向用户提供面向对象的应用程序接口例如:例如:Iris 和和 POSTGRES3)“全新的全新的”OODBMS即按照面向对象数据模型进行全新的设计即按照面向对象数据模型进行全新的设计 例如:例如:O2 和和 DAMOKLES 目前状况:理论和技术上都有待完善目前状况:理论和技术上都有待完善867/26/202487(三)数据管理系统的选择(三)数据管理系统的选择理论上理论上OODBMS最适合用最适合用OO方法开发的系统方法开发的系统实际上要权衡技术和非

74、技术两方面的因素实际上要权衡技术和非技术两方面的因素非技术因素非技术因素与项目的成本、工期、风险、宏观计划有关的问题与项目的成本、工期、风险、宏观计划有关的问题产品的成熟性和先进性产品的成熟性和先进性价格价格开发队伍的技术背景开发队伍的技术背景与其它系统的关系与其它系统的关系877/26/202488技术因素技术因素考虑各种数据管理系统适应哪些情况,不适应哪些情况考虑各种数据管理系统适应哪些情况,不适应哪些情况文件系统的适应性文件系统的适应性优点:优点:可储任何类型的数据,包括具有复杂内部结构的可储任何类型的数据,包括具有复杂内部结构的数据和图形、图象、视频、音频等多媒体数据。以类和数据和图形

75、、图象、视频、音频等多媒体数据。以类和对象的形式定义的数据都可以用文件存储对象的形式定义的数据都可以用文件存储适应:适应:数据类型复杂,但对数据存取、数据共享、数据数据类型复杂,但对数据存取、数据共享、数据完整性维护、故障恢复、事务处理等功能要求不高的应完整性维护、故障恢复、事务处理等功能要求不高的应用系统;用系统;缺点:缺点:操作低级;数据操纵功能贫乏;缺少数据完整性操作低级;数据操纵功能贫乏;缺少数据完整性支持;缺少多用户及多应用共享、故障恢复、事务处理支持;缺少多用户及多应用共享、故障恢复、事务处理等功能等功能不适应:不适应:数据操纵复杂、多样,数据共享及数完整性维数据操纵复杂、多样,数

76、据共享及数完整性维护要求较高的系统。护要求较高的系统。887/26/202489关系数据库管理系统的适应性关系数据库管理系统的适应性优点:优点:对数据存取、数据共享、数据完整性维护、故障对数据存取、数据共享、数据完整性维护、故障恢复、事务处理等功能提供强有力的支持恢复、事务处理等功能提供强有力的支持适应:适应:对这些功能要求较高的应用系统,以及需大量保对这些功能要求较高的应用系统,以及需大量保存和管理各类实体之间关系信息的应用系统存和管理各类实体之间关系信息的应用系统问题:问题:关系数据模型对数据模式的限制较多关系数据模型对数据模式的限制较多 当对象的内部结构较为复杂时,就不能直接地与关当对象

77、的内部结构较为复杂时,就不能直接地与关系数据库的数据模式相匹配,需要经过转换系数据库的数据模式相匹配,需要经过转换更不适合更不适合图形、图象、音频、视频等多媒体数据图形、图象、音频、视频等多媒体数据 和和 经过压缩处理的数据经过压缩处理的数据 文件系统和文件系统和RDBMS的优点和缺点形成了明显对照的优点和缺点形成了明显对照但是对二者的选择却未必互相排斥,有时它们是互补的。但是对二者的选择却未必互相排斥,有时它们是互补的。某些应用系统可能同时采用某些应用系统可能同时采用RDBMS和文件系统,分别存和文件系统,分别存储各自所适合的数据。储各自所适合的数据。897/26/202490面向对象数据库

78、管理系统的适应性面向对象数据库管理系统的适应性从纯技术的角度看,对用从纯技术的角度看,对用OO方法开发的系统采用方法开发的系统采用OODBMS是最合理的选择,几乎没有不适合的情况。是最合理的选择,几乎没有不适合的情况。如果某些项目不适合,主要是由于非技术因素,而不是技如果某些项目不适合,主要是由于非技术因素,而不是技术因素术因素 各种各种OODBMS采用的对象模型多少有些差异,与用户选采用的对象模型多少有些差异,与用户选用的用的OOA&D方法及方法及OOPL中的匹配程度不尽一致,功能中的匹配程度不尽一致,功能也各有区别,对不同的应用系统有不同的适应性也各有区别,对不同的应用系统有不同的适应性

79、907/26/20249114.3 对象存储方案和数据接口的设计策略对象存储方案和数据接口的设计策略 针对三种针对三种数据管理系统数据管理系统文件系统文件系统RDBMSOODBMS对象存储方案对象存储方案如何把对象映射到数如何把对象映射到数据管理系统据管理系统数据接口部分的设计策略数据接口部分的设计策略如何设计数据接口部如何设计数据接口部分的对象类分的对象类分分别别讨讨论论如何对问题域部分如何对问题域部分做必要的修改做必要的修改917/26/202492(一)针对文件系统的设计(一)针对文件系统的设计应用系统应用系统数据接口数据接口文件系统文件系统对对象象对对象象对对象象1、对象在内存空间和文

80、件空间的映像、对象在内存空间和文件空间的映像如何看待用文件系统存储对象如何看待用文件系统存储对象应用系统仍然是面向对象的只是用文件系统存储对象的数据927/26/202493从应用系统的对象到文件记录的不同映射方式从应用系统的对象到文件记录的不同映射方式类类A A对对象象1 1数据接口数据接口实例化记记录录1 1记记录录2 2记记录录n n对对象象2 2对对象象n n内内存存空空间间文文件件系系统统文件文件A A一一对应的一一对应的映射方式映射方式类类A A数据接口数据接口实例化记记录录1 1记记录录2 2记记录录n n对对象象内内存存空空间间文文件件系系统统文件文件A A非一一对应非一一对应

81、的映射方式的映射方式937/26/2024942、对象在文件中的存放策略、对象在文件中的存放策略 1 1)基本策略)基本策略把由每个类直接定义、需把由每个类直接定义、需要持久存储的全部对象实要持久存储的全部对象实例存放在一个文件中;例存放在一个文件中;每个对象实例的全部属性每个对象实例的全部属性作为一个存储单元,占用作为一个存储单元,占用该文件的一个记录。该文件的一个记录。 如何理解如何理解“由一个类直接由一个类直接定义的定义的”对象实例对象实例另一种策略另一种策略一个结构用一个文件一个结构用一个文件浪费空间浪费空间模糊了对象分类关系模糊了对象分类关系使操作复杂化使操作复杂化 人员人员姓名姓名

82、教职工教职工职称职称专业专业研究生研究生学号学号班级班级专业专业在职研究生在职研究生在职单位在职单位 例例: :947/26/2024952 2)提高检索效率)提高检索效率 在对象和文件记录之间建立有规律的映射关系在对象和文件记录之间建立有规律的映射关系对象名或关键字呈线性规律对象名或关键字呈线性规律 按对象名或关键字的顺序形成文件记录按对象名或关键字的顺序形成文件记录给出对象名称或关键字,快速地计算出它的存放位置给出对象名称或关键字,快速地计算出它的存放位置 对象名称或关键字可以比较和排序对象名称或关键字可以比较和排序 按关键字顺序安排记录,检索时采用折半查找法按关键字顺序安排记录,检索时采

83、用折半查找法建立按对象名称或者按关键字排序的索引表,通过该建立按对象名称或者按关键字排序的索引表,通过该表中的记录指针找到相应的记录表中的记录指针找到相应的记录其他措施其他措施如散列表、倒排表、二叉排序树等等如散列表、倒排表、二叉排序树等等957/26/2024963、设计数据接口部分的对象类、设计数据接口部分的对象类 对象存取器对象存取器对象存储对象存储对象恢复对象恢复类名类名- -文件名文件名对照表对照表 负责对象的负责对象的存储与恢复存储与恢复换算型换算型对象存取器对象存取器* *对象存储对象存储* *对象恢复对象恢复查找型查找型对象存取器对象存取器* *对象存储对象存储* *对象恢复对

84、象恢复索引型索引型对象存取器对象存取器* *对象存储对象存储* *对象恢复对象恢复索引表索引表查记录指针查记录指针文件记录索引文件记录索引特殊类提供不同特殊类提供不同的查找功能的查找功能967/26/2024974、问题域部分的修改、问题域部分的修改 类类B类类D问题域部分问题域部分数据接口部分数据接口部分类类A类类C对象存取器对象存取器每个持久对象类每个持久对象类都要增加请求存都要增加请求存储和恢复所需的储和恢复所需的属性和操作,以属性和操作,以便向数据接口部便向数据接口部分发出请求分发出请求类名类名请求保存请求保存请求恢复请求恢复类名类名请求保存请求保存请求恢复请求恢复类名类名请求保存请求

85、保存请求恢复请求恢复持久对象持久对象请求保存请求保存请求恢复请求恢复类名类名增加一个一般类增加一个一般类来定义它们,作来定义它们,作为共同协议,供为共同协议,供所有的持久对象所有的持久对象类继承类继承977/26/202498(二)针对(二)针对RDBMS的设计的设计 应用系统应用系统数据接口数据接口RDBMS对对象象对对象象对对象象1、对象及其对数据库的使用、对象及其对数据库的使用如何看待用如何看待用 RDBMS存储对象存储对象应用系统仍然是面向对象的只是用关系数据库存储对象的数据关系数据库关系数据库987/26/202499从应用系统的对象到数据库表元组的不同映射方式从应用系统的对象到数据

86、库表元组的不同映射方式类类A A对对象象1 1实例化元元组组1 1元元组组2 2元元组组n n对对象象2 2对对象象n n内内存存空空间间数数据据库库表表A A一一对应的一一对应的映射方式映射方式数据接口数据接口RDBMS类类A A数据接口数据接口实例化元元组组1 1元元组组2 2元元组组n n对对象象内内存存空空间间数数据据库库表表A A非一一对应非一一对应的映射方式的映射方式RDBMS997/26/2024100使用使用RDBMS和使用文件系统的不同和使用文件系统的不同(1)系统以不同方式使用数据库中的数据)系统以不同方式使用数据库中的数据存储对象存储对象或或使用其普通数据使用其普通数据原

87、因:数据库的共享性原因:数据库的共享性(2)可能需要数据格式转换)可能需要数据格式转换原因:关系数据库对规范化的要求原因:关系数据库对规范化的要求对象从数据库获得其他数据对象从数据库获得其他数据关系数据库关系数据库应用系统应用系统对对象象数据接口对对象象RDBMS对对象象对象保存与恢复对象保存与恢复1007/26/20241012、对象在数据库中的存放策略、对象在数据库中的存放策略对象数据的规范化对象数据的规范化修改类图修改类图确定关键字确定关键字从类图映射到数据库表从类图映射到数据库表类类表表类的属性类的属性表的属性表的属性对象实例对象实例行行对一般对一般-特殊结构、整体特殊结构、整体-部分

88、结构、关联等部分结构、关联等OO概念的处理概念的处理1017/26/2024102第一范式(第一范式(1NF):关系(表)的每个属性都必须:关系(表)的每个属性都必须是原子的。就是说,关系的每个属性都是单值的,是原子的。就是说,关系的每个属性都是单值的,它不再包含内部的数据结构。它不再包含内部的数据结构。第二范式(第二范式(2NF):如果一个关系的所有非关键字:如果一个关系的所有非关键字属性都只能依赖整个关键字(而不是依赖关键字的属性都只能依赖整个关键字(而不是依赖关键字的一部分属性),则该关系在第二范式中。一部分属性),则该关系在第二范式中。第三范式(第三范式(3NF):如果一个关系在第二范

89、式中,:如果一个关系在第二范式中,而且没有传递依赖,则该关系在第三范式中。而且没有传递依赖,则该关系在第三范式中。Boyce-Codd范式(范式(BCNF):如果一个关系的每个:如果一个关系的每个决定因素都是候选关键字,则该关系在决定因素都是候选关键字,则该关系在BCNF中。中。第四范式(第四范式(4NF):如果一个关系在:如果一个关系在BCNF中,而中,而且没有多值依赖,则该关系在第四范式中。且没有多值依赖,则该关系在第四范式中。1)对象数据的规范化)对象数据的规范化关系数据库要求存入其中的数据符合一定的规范,关系数据库要求存入其中的数据符合一定的规范,并且用并且用范式范式衡量规范化程度的高

90、低。衡量规范化程度的高低。是由关系数据模型决是由关系数据模型决定的,是对一个关系定的,是对一个关系的起码要求的起码要求主要为了解决关系中主要为了解决关系中的函数依赖带来的更的函数依赖带来的更新异常问题。新异常问题。也可以减少数据冗余,也可以减少数据冗余,但更新异常问题更为但更新异常问题更为重要重要主要为了减少数据冗主要为了减少数据冗余余1027/26/2024103未必规范化程度越高越好未必规范化程度越高越好规范化的代价规范化的代价响系统的可理解性,增加了多表查询和连接操作响系统的可理解性,增加了多表查询和连接操作面向对象方法与关系数据库的规范化目标面向对象方法与关系数据库的规范化目标既有相违

91、的一面,又有相符的一面既有相违的一面,又有相符的一面 以对象为中心组织数据与以对象为中心组织数据与操作,恰恰有助于达到第操作,恰恰有助于达到第2NF、3NF、BCNF和和4NF要求的条件要求的条件对象的数据结对象的数据结构常常连构常常连1NF的要求都不能的要求都不能满足满足例如例如“通信地址通信地址”属性属性1037/26/2024104HOUSING(SID,Building,Fee)Key:SIDFunctionalDependencies:BuildingFeeSIDBuildingFee100Randolph1200150Ingersoll1100200Randolph1200250P

92、itkin1100300Randolph1200SIDBuildingFee例例1:一个不满足:一个不满足3NF的关系及其规范化的关系及其规范化STU-HOUSING( SID,Building)Key:SIDSIDBuilding100Randolph150Ingersoll200Randolph250Pitkin300RandolphBLDG-FEE(Building,Fee)Key:BuildingBuildingFeeRandolph1200Ingersoll1100Pitkin1100从面向对象的观点看应该定从面向对象的观点看应该定义义“学生学生”和和“建筑物建筑物”两个类两个类恰好

93、与规范化要求吻合恰好与规范化要求吻合学生学生住所住所建筑物建筑物房费房费分析原因:分析原因:把描述不同事物把描述不同事物的数据组织在一起的数据组织在一起摘自:施伯乐等摘自:施伯乐等译,译,美美DavidM.Kroenke著著.数数据库处理据库处理.北京:电子工业出版社,北京:电子工业出版社,19981047/26/2024105例例2:一个不满足:一个不满足4NF的关系及其规范化的关系及其规范化STUDENT( SID, Major,Activity)Key:(SID,Major,Activity)SIDMajorActivity100MusicSwimming100AccountingSwi

94、mming100MusicTennis100AccountingTennis150MathJoggingSTU-MAJOR( SID,Major)Key:(SID,Major)SIDMajor100Music100Accounting150MathSTU-ACT(SID,Activity)Key:(SID,Activity)SIDActivity100Skiing100Swimming100Tennis150Jogging1057/26/2024106SIDMajor1111*课程学生活动学生-课程学生-活动SIDActivity*课程学生活动用面向对象方法得到的分类用面向对象方法得到的分类有

95、三类对象有三类对象化解多对多关联之后的结果化解多对多关联之后的结果为什么多出来为什么多出来3个类?个类?1067/26/2024107用面向对象方法未能避免函数依赖的例子用面向对象方法未能避免函数依赖的例子职工职工职工编号职工编号月工资月工资所得税所得税可以不通过规范化解决问题可以不通过规范化解决问题讨论为什么讨论为什么1077/26/2024108规范化的两种策略规范化的两种策略保持类图,对表规范化保持类图,对表规范化缺点是对象的存储与恢复必须经过数据格式的转换缺点是对象的存储与恢复必须经过数据格式的转换修改类图修改类图对问题域的映射对问题域的映射可能可能不像规范化之前那么直接。但不像规范化

96、之前那么直接。但是这个问题并不严重是这个问题并不严重利大于弊利大于弊采用第二种策略采用第二种策略按规范化的要求修改类图中的类按规范化的要求修改类图中的类作为问题域部分的设计内容之一作为问题域部分的设计内容之一2)修改类图)修改类图1087/26/20241093 3)确定关键字)确定关键字 用较少的属性作关键字,将为含关键字的操作带来方便用较少的属性作关键字,将为含关键字的操作带来方便 常用的技巧常用的技巧引入编号引入编号最终效果:最终效果:经过必要的规范化处理和关键字处理之后,得到一个符经过必要的规范化处理和关键字处理之后,得到一个符合数据库设计要求的类图,其中每个需要映射到数据库合数据库设

97、计要求的类图,其中每个需要映射到数据库表的类,都满足如下条件:表的类,都满足如下条件:至少满足第一范式至少满足第一范式满足所期望的更高范式满足所期望的更高范式有一组属性被确定为关键字有一组属性被确定为关键字1097/26/20241104 4)从类图到数据库的映射)从类图到数据库的映射(1 1)映射策略概要)映射策略概要对每个要在数据库中存储对象实例的类,都建立一对每个要在数据库中存储对象实例的类,都建立一个数据库表个数据库表类的每个属性(包括从所有祖先继承来的属性)都类的每个属性(包括从所有祖先继承来的属性)都对应表的一个属性(列)对应表的一个属性(列)名称、数据类型完全相同名称、数据类型完

98、全相同其中一组属性被确定为关键字其中一组属性被确定为关键字类的每个对象实例将对应表的一个元组(行)类的每个对象实例将对应表的一个元组(行)1107/26/2024111(2)对)对OO概念的处理概念的处理对一般对一般-特殊结构的处理特殊结构的处理抽象类不对应数据库表抽象类不对应数据库表特殊类包括自己定义的特殊类包括自己定义的和继承来的所有属性和继承来的所有属性人员人员姓名姓名出生年月出生年月教职工教职工职称职称从事专业从事专业研究生研究生学号学号班级班级攻读专业攻读专业在职研究生在职研究生在职单位在职单位例例:5个属性个属性4个属性个属性8个属性个属性不建表不建表1117/26/2024112

99、在关联连接线一端的类中定义一个(或一组)属性,表明另一端类的哪在关联连接线一端的类中定义一个(或一组)属性,表明另一端类的哪个对象实例与本端的对象实例相关联个对象实例与本端的对象实例相关联该属性(属性组)应该和另一端的关键字相同该属性(属性组)应该和另一端的关键字相同如果另一端的关键字包含多个属性,本端也要定义同样的多个属性如果另一端的关键字包含多个属性,本端也要定义同样的多个属性在对应的数据库表中,一个表以该属性(或属性组)作为在对应的数据库表中,一个表以该属性(或属性组)作为外键外键,另一个,另一个表以它作为主键,使前者的元组通过其属性值指向后者的元组表以它作为主键,使前者的元组通过其属性

100、值指向后者的元组对关联的处理对关联的处理一对一的关联一对一的关联AB0.11从从B端指向端指向A端,则端,则B表的外键对有些元组可能是空值(表的外键对有些元组可能是空值(NULL)从从A端指向端指向B端则不存在这一问题端则不存在这一问题表表A表表B1127/26/2024113一对多的关联一对多的关联从多重性约束为从多重性约束为“m”的一端指向多重性约束为的一端指向多重性约束为“1”的一端的一端AB1*映射为数据库表后,映射为数据库表后,A表以表以B表的主键作为自己的外键表的主键作为自己的外键表表A表表B1137/26/2024114多对多的关联多对多的关联AB*先在类图中化为两个一对多的关联

101、先在类图中化为两个一对多的关联AC11B*1147/26/2024115多对多的关联多对多的关联AB*先在类图中化为两个一对多的关联先在类图中化为两个一对多的关联AC11B*C表含有两个外键,一个是表含有两个外键,一个是A的主键,一个是的主键,一个是B的主键的主键然后将每个类映射到一个数据库表然后将每个类映射到一个数据库表表表A表表B1157/26/2024116对象类转化为数据库表的三种情况:对象类转化为数据库表的三种情况:表中只包含描述本类事物自身特征的属性表中只包含描述本类事物自身特征的属性表中既包含描述本类事物自身特征的属性,表中既包含描述本类事物自身特征的属性,也包含作为外键指向另一

102、个表的元组的属性也包含作为外键指向另一个表的元组的属性表中只包含作为外键指向其它表的元组的属性表中只包含作为外键指向其它表的元组的属性1167/26/2024117对整体对整体-部分结构的处理部分结构的处理分为紧密、固定的方式分为紧密、固定的方式和和松散、灵活的方式松散、灵活的方式二者的区别将通过数据库表的设计体现出来二者的区别将通过数据库表的设计体现出来紧密、固定方式:紧密、固定方式:把部分对象类的属性合并到整体对象类中把部分对象类的属性合并到整体对象类中松散、灵活方式:松散、灵活方式:整体对象类和部分对象类分别建立一个表整体对象类和部分对象类分别建立一个表通过外键表现整体部分关系通过外键表

103、现整体部分关系1177/26/2024118A1B1A0.1B1A*B1A1B*A*B*(a)(b)(c)(d)(e)紧密方式:紧密方式:B的属性合并到的属性合并到A建立建立A表表松散方式:松散方式:建立建立A、B两个表两个表A指向指向B或者或者B指向指向A紧密方式:紧密方式:B的属性合并到的属性合并到A建立建立A表表还要建立还要建立B表表松散方式:松散方式:建立建立A、B两个表两个表A指向指向B松散方式:松散方式:建立建立A、B两个表两个表A指向指向B松散方式:松散方式:建立建立A、B两个表两个表B指向指向A松散方式:松散方式:参考多对多关参考多对多关联解决办法联解决办法首先解决多对首先解决

104、多对多问题多问题然后建立然后建立A、B两个表以及新两个表以及新增类的表增类的表1187/26/2024119例:多例:多对多的整体对多的整体-部分结构的转化部分结构的转化*运动队运动队*1学生学生运动队运动队1*队员队员学生学生1197/26/20241203、数据接口部分类的设计、数据接口部分类的设计 设计一个名为设计一个名为“对象存取器对象存取器”的对象类,它提供两种操作的对象类,它提供两种操作“对象保存对象保存”将内存中一个对象保存到相应的数据库表中将内存中一个对象保存到相应的数据库表中“对象恢复对象恢复”从数据库表中找到对象所对应的元组,把它恢复成内从数据库表中找到对象所对应的元组,把

105、它恢复成内存中的对象存中的对象执行这些操作需要知道对象的下述信息:执行这些操作需要知道对象的下述信息:它在内存中是哪个对象它在内存中是哪个对象为了知道从何处取得对象数据为了知道从何处取得对象数据或者把数据恢复到何处或者把数据恢复到何处它属于哪个类它属于哪个类为了知道该对象应保存在哪个数据库表中为了知道该对象应保存在哪个数据库表中它的关键字它的关键字为了知道该对象对应数据库表的哪个元组为了知道该对象对应数据库表的哪个元组1207/26/2024121第一种设计方案第一种设计方案对每个要求保存和恢复的对象类,分别设计一个对每个要求保存和恢复的对象类,分别设计一个“对象保对象保存存”操作和一个操作和

106、一个“对象恢复对象恢复”操作操作对象存取器对象存取器对象保存对象保存1对象恢复对象恢复1对象保存对象保存n对象恢复对象恢复n每个操作只负责一类对象的存或取每个操作只负责一类对象的存或取因此下述信息是确定的:因此下述信息是确定的:对象存放在哪个数据库表对象存放在哪个数据库表关键字所包含的属性数目与名称关键字所包含的属性数目与名称在操作接口中只需传递如下参数:在操作接口中只需传递如下参数:内存中的一个对象变量内存中的一个对象变量用来提供或接收对象数据用来提供或接收对象数据对象关键字的值对象关键字的值优点:优点:每个操作都很容易实现,通常只需要一个数据操纵语句,每个操作都很容易实现,通常只需要一个数

107、据操纵语句,(例如静态(例如静态SQL语句)语句)缺点:缺点:操作个数太多操作个数太多很难在问题部分采用统一的消息协议很难在问题部分采用统一的消息协议1217/26/2024122第二种设计方案第二种设计方案只设计只设计一个一个“对象保存对象保存”操作和一个操作和一个“对象恢复对象恢复”操作操作供全系统所有要求保存和恢复的对象类共同使用供全系统所有要求保存和恢复的对象类共同使用对象存取器对象存取器对象保存对象保存对象恢复对象恢复类名类名-表名表名对照表对照表操作接口的参数应传送三项信息:操作接口的参数应传送三项信息:类名类名指明被存取的对象属于哪个类指明被存取的对象属于哪个类对象变量对象变量提

108、供或接受被存取的对象数据提供或接受被存取的对象数据关键字的值关键字的值指明是哪个对象实例要求保存指明是哪个对象实例要求保存或恢复或恢复数据类型不数据类型不能静态确定能静态确定优点:优点:操作少,消息协议统一操作少,消息协议统一缺点:缺点:实现难度大实现难度大表的名称、关键字的构成、对象的类型不能在编程时确定表的名称、关键字的构成、对象的类型不能在编程时确定需要编程语言和数据操纵语言提供较强的支持需要编程语言和数据操纵语言提供较强的支持1227/26/20241234、问题域部分的修改、问题域部分的修改采用第一种方案时采用第一种方案时问题域部分每个请求保存或恢复的类,都要使用不同问题域部分每个请

109、求保存或恢复的类,都要使用不同的操作请求语句,这些请求只能分散到各个类中的操作请求语句,这些请求只能分散到各个类中采用第二种方案时采用第二种方案时在问题域部分设计一个高层的类,提供统一的协议,在问题域部分设计一个高层的类,提供统一的协议,供各个需要在数据库中存储其对象实例的类继承供各个需要在数据库中存储其对象实例的类继承可以做到和采用文件系统时的处理完全一致可以做到和采用文件系统时的处理完全一致1237/26/2024124采用第二种方案时采用第二种方案时修改情况和采用文修改情况和采用文件系统时完全一致件系统时完全一致类类B类类D问题域部分问题域部分数据接口部分数据接口部分类类A类类C对象存取

110、器对象存取器RDBMS关系数据库关系数据库对象使用数据库中的对象使用数据库中的普通数据,只是其操普通数据,只是其操作算法的实现问题作算法的实现问题持久对象持久对象请求保存请求保存请求恢复请求恢复类名类名增加一个一般类来定增加一个一般类来定义它们,作为共同协义它们,作为共同协议,供所有的持久对议,供所有的持久对象类继承象类继承 1247/26/2024125从应用系统到数据库,从内存空间到外存空间,数据模型都从应用系统到数据库,从内存空间到外存空间,数据模型都是一致的。因此,几乎不要为此再做更多的设计工作。是一致的。因此,几乎不要为此再做更多的设计工作。类图中的类一般不需要类似于规范化的改造类图

111、中的类一般不需要类似于规范化的改造 也不需要专门设计专门负责对象保存与恢复的对象类也不需要专门设计专门负责对象保存与恢复的对象类主要考虑:主要考虑:如何用如何用OODBMS提供的数据定义语言、数据操纵语言和提供的数据定义语言、数据操纵语言和其它编程语言来实现其它编程语言来实现OOD模型模型实现类和对象的定义实现类和对象的定义和对数据库的访问和对数据库的访问必要时要根据语言的功能限制对类图做适当的修改必要时要根据语言的功能限制对类图做适当的修改 (三)针对(三)针对OODBMS的设计的设计 1257/26/2024126M. Fowler:“面向对象界一直广为流传的一项争论就是构件和正常面向对象

112、界一直广为流传的一项争论就是构件和正常类之间的区别为何。类之间的区别为何。”“”“什么是构件什么是构件这一问题是一这一问题是一个争论不休的题目。个争论不休的题目。”“要点是,构件代表可以独立购买与升级的软件片。因要点是,构件代表可以独立购买与升级的软件片。因此,把一个系统分成若干构件既是一个技术抉择,又是此,把一个系统分成若干构件既是一个技术抉择,又是一个销售抉择。一个销售抉择。”Fowler M and Scott K. UML Distilled 3rd edition15.1面向对象方法与构件技术面向对象方法与构件技术第第15章章 构件化与系统部署构件化与系统部署1267/26/2024

113、127“基于构件基于构件”与与“面向对象面向对象”并不是两种并不是两种相互取代的方法或技术,它们是正交相互取代的方法或技术,它们是正交的、互补的关系的、互补的关系面向对象侧重于用什么概念来认识问题域,并把其中的事物以面向对象侧重于用什么概念来认识问题域,并把其中的事物以及其关系映射到软件系统中,是一种贯穿软件生命周期的软件及其关系映射到软件系统中,是一种贯穿软件生命周期的软件方法学。方法学。构件技术的侧重点是如何把系统组织成能够独立地进行生产、构件技术的侧重点是如何把系统组织成能够独立地进行生产、组装、复用、部署、发布、销售和升级的产品单位。组装、复用、部署、发布、销售和升级的产品单位。用用O

114、O方法开发的系统,既可以组织成方法开发的系统,既可以组织成构件,也可以不组织成构件构件,也可以不组织成构件构件技术既可以用于构件技术既可以用于OO软件开发软件开发也可以用于非也可以用于非OO的软件开发的软件开发构件构件非构件非构件OOOO非非OOOO 维护 测试 实现 设计分析1277/26/2024128构件技术已经发展到软件生命周期的各个阶段构件技术已经发展到软件生命周期的各个阶段通过领通过领域分析识别领域构件,在系统分析、设计和实现中形成分域分析识别领域构件,在系统分析、设计和实现中形成分析级、设计级和实现级的构件,在构件生产线上进行构件析级、设计级和实现级的构件,在构件生产线上进行构件

115、的分析、设计和编程。但是这一切并不取代现有的分析与的分析、设计和编程。但是这一切并不取代现有的分析与设计方法,正如它并不取代任何一种编程语言一样。设计方法,正如它并不取代任何一种编程语言一样。 与其他软件工程方法和技术相比,面向对象方法与构件技与其他软件工程方法和技术相比,面向对象方法与构件技术之间的配合最为紧密、融洽。术之间的配合最为紧密、融洽。 面向对象方法的抽象,继承,封装,聚合,多态等概面向对象方法的抽象,继承,封装,聚合,多态等概念与原则对构件技术形成良好的支持。念与原则对构件技术形成良好的支持。构件一种比类粒度更大的系统单位。一个构件可以包括多构件一种比类粒度更大的系统单位。一个构

116、件可以包括多个类,一个类不应该拆散到不同的构件。这意味着,构件个类,一个类不应该拆散到不同的构件。这意味着,构件的概念并不影响面向对象概念的语法和语义,的概念并不影响面向对象概念的语法和语义,1287/26/202412915.2 OO模型的构件化模型的构件化 构件化的意义构件化的意义支持基于构件的软件开发支持基于构件的软件开发OOA阶段:支持分析级的软件复用阶段:支持分析级的软件复用OOD阶段:支持和计级的软件复用,并且支持以构件为单阶段:支持和计级的软件复用,并且支持以构件为单位进行编程实现位进行编程实现OOA阶段的构件通常不是最终结果,在阶段的构件通常不是最终结果,在OOD阶段会有变化阶

117、段会有变化主要工作主要工作把类图中的类组织成一些可以独立进行编程、发布、销售和把类图中的类组织成一些可以独立进行编程、发布、销售和升级的构件升级的构件基本原则基本原则构件的粒度不宜过小,一个构件通常可以包含多个类,除非构件的粒度不宜过小,一个构件通常可以包含多个类,除非某些类本身就已经很庞大。某些类本身就已经很庞大。一个类可以在多个构件中复用,但是不把一个类拆分到多个一个类可以在多个构件中复用,但是不把一个类拆分到多个构件中,即:把类看成一个原子的系统单位。构件中,即:把类看成一个原子的系统单位。1297/26/2024130考虑的因素:考虑的因素:各个类之间关系的紧密程度各个类之间关系的紧密

118、程度在问题域中所对应的事物在问题域中所对应的事物所提供的功能类别所提供的功能类别彼此之间通信频繁程度彼此之间通信频繁程度在系统中的分布与并发情况在系统中的分布与并发情况这一切正是在面这一切正是在面向对象建模中进向对象建模中进行行包的划分包的划分所考所考虑的因素。虑的因素。结论:结论:以包作为组织构件的基本依据以包作为组织构件的基本依据必要时对包进行合并或拆分必要时对包进行合并或拆分兼顾软件的发布、销售等因素兼顾软件的发布、销售等因素如何将类组织为构件如何将类组织为构件1307/26/202413115.3系统部署系统部署1、软件制品的组织、软件制品的组织源文件制品源文件制品构件及其接口编程实现

119、后的源文件构件及其接口编程实现后的源文件可执行文件制品可执行文件制品由源文件编译产生由源文件编译产生数据库制品和数据文件制品数据库制品和数据文件制品按部署的结点打包按部署的结点打包模型文件制品模型文件制品各种模型图及其规约各种模型图及其规约测试用例制品测试用例制品按被测试的程序单位进行组织按被测试的程序单位进行组织其他制品其他制品如产品说明书、用户手册、联机帮助文件等如产品说明书、用户手册、联机帮助文件等1317/26/20241322、系统部署过程与策略、系统部署过程与策略针对不同的目标确定不同的部署方案针对不同的目标确定不同的部署方案例如:针对系统安装、售后服务和最终用户的不同方案例如:针

120、对系统安装、售后服务和最终用户的不同方案部署过程部署过程(1)描述结点及通信路径)描述结点及通信路径例如:例如:*1*1Client (2)配置结点的执行环境)配置结点的执行环境操作系统、编译系统、操作系统、编译系统、DBMS、界面支持系统、中间件、界面支持系统、中间件标准配置,自选配置标准配置,自选配置1327/26/2024133(3)把制品部署到结点上把制品部署到结点上包的组织策略、系统分布策略和构件组织策略包的组织策略、系统分布策略和构件组织策略决定了各个结点上应该有哪些构件决定了各个结点上应该有哪些构件源文件制品和可执行文件制品源文件制品和可执行文件制品部署到相应的构件所在的结点上部署到相应的构件所在的结点上模型文件制品和测试用例制品模型文件制品和测试用例制品根据模型文件和测试用例的作用范围根据模型文件和测试用例的作用范围数据库制品和数据文件制品数据库制品和数据文件制品根据应用范围和数据传输量较小的原则根据应用范围和数据传输量较小的原则产品说明书、用户手册和联机帮助文件等制品产品说明书、用户手册和联机帮助文件等制品根据使用范围根据使用范围1337/26/2024134谢谢大家谢谢大家134

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号