面向对象设计二.ppt
《面向对象设计二.ppt》由会员分享,可在线阅读,更多相关《面向对象设计二.ppt(95页珍藏版)》请在三一办公上搜索。
1、面向对象开发方法杨 潇成都理工大学信息管理学院,第三部分面向对象设计(二),2023/10/31,2,第四部分 面向对象的设计(OOD),1控制驱动部分的设计一、什么是控制驱动部分控制流进程(process)或线程(thread)的别称有多个任务(控制流)并发执行的系统,称作 多任务系统 或 并发系统。控制流部分是OOD模型的组成部分之一,用来定义和表示并发系统中的每个控制流。用主动对象表示每个控制流(进程、线程)所有的主动类构成控制流管理部分,2023/10/31,3,并发行为是现实中固有的 并发行为是现实中固有的当前大量的系统都是并发系统(多任务系统),例如:负责几台设备的数据采集及控制的
2、系统多用户系统有多个子系统并发工作的系统单或多处理机系统上运行的多个进程或线程网上的各计算机中运行的多进程设置多控制流部分的原因:描述问题域固有的并发行为;为了隔离硬件、操作系统、网络的变化对整个系统的影响;表达实现所需的设计决策;,2023/10/31,4,二、控制流,1、进程进程是一个具有一定独立功能的程序,在一个数据集合上的一次动态执行的过程。在大多数操作系统中(如Windows和Unix),每个程序都在它自己的地址空间里作为一个进程运行。一般情况下,一个节点上的所有进程是互相平等的,竞争这个节点上提供的所有相同的资源。如果在一个节点上有多个处理器,那么在这个节点上实现真正地并发是可能的
3、。如果这个节点只有一个处理器,那么只是真正并发的错觉,是由基础的操作系统来完成的。,2023/10/31,5,2023/10/31,6,线程与进程的区别:进程既是处理机分配单位,也是存储空间、设备等资源的分配单位;线程只是处理机分配单位;一个进程可以包含多个线程,也可以是单线程的。,2023/10/31,7,在面向对象中,将每一个独立的控制流建模为一个主动对象,该对象代表一个能启动控制活动的进程或线程。在顺序系统中,只有一个控制流。这意味着在一个时间点有且仅有一件事情在发生。当一个顺序程序开始时,控制处于程序的开头,操作一个接一个地被执行。即使在系统外的参与者之间有并发的事情发生,顺序程序在一
4、个时间点上也只执行一个事件,任何并发的外部事件都要排队或者被丢弃。在并发系统中,存在多个控制流。也就是说,在一个时间点上有多于一件的事情发生。在一个并发系统中,有多个同时发生的控制流,每个都以一个表示独立的进程或线程的主动对象为根。这种表示法意味着,控制流的创建与撤消的时机分别为:当创建一个主动对象时,就开始相关的控制流;当撤消这个主动对象时,就终止相关的控制流;多控制流的语义仍可以用类图和交互图来描述。用包括主动类(对象)的类图(对象图)捕捉控制流的静态语义,用顺序图或协作图捕捉控制流的动态语义。,2023/10/31,8,2023/10/31,9,2023/10/31,10,三、如何进行控
5、制驱动部分的设计,1、识别每个控制流1)OOA定义的主动对象主动对象类的每个对象实例都是一个控制流2)系统的并发需求所要求的多控制流要求多项工作同时进行,则每一项工作就是一个控制流。例如,销售与统计。3)系统分布方案所要求的多控制流每一个分布站点至少有一个控制流4)为提高性能而增设的控制流高优先控制流,低优先控制流,紧急控制流;5)为实现方便设立的控制流例如:负责处理机之间通讯的控制流,时钟驱动的控制流,1,2023/10/31,11,2023/10/31,12,2、审查与筛选去掉不必要的控制流 多余的并发性意味着执行效率的损失 每个控制流应该有以上列举的理由之一 不要人为地增加控制流例如,杂
6、技的抛球,每增加一个新球,演员处理球的控制的复杂性会以指数级增长。,2023/10/31,13,3、定义各控制流,描述说明控制流对控制流命名,并进行简单说明。对设计部分的每个操作指定它属于哪个控制流。要保证每个操作属于一个控制流。定义各控制流的细节若控制流由事件驱动,则要描述触发控制流的条件。例如,若控制流由时钟驱动,则可能要描述触发之前所经历的时间间隔。考虑描述控制流从那里取数据和往那里送数据之类的情况。定义控制流协调情况控制流的表示用主动对象表示每个控制流用主动类描述每一类控制流 原有的主动对象 原有的普通对象标为主动对象 新定义的主动对象考虑用主动对象的主动操作描述控制流的功能说明各线程
7、是属于哪个进程。,2023/10/31,14,2023/10/31,15,4、进程间和线程间的通信,控制流间常用的通信机制主要有:操作调用 一个控制流中的对象调用另一个控制流中的对象的操作,是通过发送了一条同步消息来实现的。同步的含义为:(1)调用者调用操作,(2)调用者等待接收者接收这个调用,(3)接收者的操作被唤醒,(4)计算结果返回给调用者,(5)然后两者分别继续它们各自的执行。邮箱 一个控制流的对象异步地向另一个控制流中的对象发送一个信号,其异步的含义为:请求者发送信号,然后就继续它自己的执行;而接收者只有在准备好时或在适当的时候,才到指定的邮箱去接收信号并进行处理,完成后可以向请求者
8、发信号来回传处理结果,接着向下执行。这样的信号也可以是同步的,但收发信号的双方事先要做好约定。,2023/10/31,16,共享存储器 两个或几个控制流中的对象利用一块公共的存储器,作为通信区域。通常传输具有较复杂和较大的数据结构的数据时,才使用共享存储器方式。使用此方式,要注意同步问题。远程过程调用 用于在不同计算机中的并发进程。调用进程标示它想要请求的一个对象的操作,然后把它放在远程过程调用库中;远程过程调用机制在网络上寻找该对象,找到后将请求打包发送给目标对象;目标方接到后将请求转换成本地格式,执行所请求的操作;执行完毕后,将结果以同样的方式返回给发送方。,2023/10/31,17,2
9、023/10/31,18,2023/10/31,19,5、控制流间的同步,在一个操作中可以有多个控制流 在不同的操作中可以有不同的控制流 当一个对象在同一时刻有多于一个控制流时,就可能要出现问题。即可能导致对象的状态混乱。这是典型的互斥问题。对这个问题处理不当,会导致并发系统失败。,2023/10/31,20,在面向对象系统中,解决这种问题的关键是把一个对象当作临界资源。有三种供选择的方法,每一种都包含对在类中定义的操作附加一定的同步特征。可以用三种方法建模:(1)顺序的 Sequential调用者必须在对象外部协调,使得在一个时刻这个对象内仅有一个流。否则当有多个控制流出现这个对象内时,就无
10、法保证该对象的语义和完整性。(2)监护的 Guarded当有多个控制流出现时,该对象的语义和完整性是通过把对该对象的监护操作的所有调用顺序化来保证的。(3)并发的 Concurrent当有多个控制流出现时,该对象的语义和完整性得到保证是因为多个控制流存取不相交的数据集合,或者只读取数据。声明一个操作的并发性意味着可以并发地执行这个操作而无危险。声明一个对象的并发性意味着对其不同的操作调用可以同时进行而无危险。问题:一个对象内既有标有Sequential的操作,又有标有Guarded的操作,情况如何?,2023/10/31,21,2023/10/31,22,控制流间的同步,2023/10/31,
11、23,设置控制流协调者为整个系统设置一个控制流协调者为一个主动类设置一个控制流协调者为一个用况设置一个控制流协调者。,2023/10/31,24,2 数据管理部分的设计,一、什么是数据管理部分 数据管理部分是负责在特定的数据管理系统中存储和检索对象的组成部分。其目的是,存储问题域的持久对象、封装这些对象的查找和存储机制,以及为了隔离数据管理方案的影响。不同的数据管理系统:文件系统、R-DBMS、OODBMS对数据管理部分的设计有不同的影响问题范围:对象在永久性存储介质上的存储 只存储对象的属性部分 可能只有一部分对象需要长久存储,2023/10/31,25,2023/10/31,26,二、数据
12、库系统数据库系统是存储、管理、处理和维护数据的软件系统,由数据库、数据库管理系统和有关软件组成。数据库是长期存在计算机内、有组织、可共享的数据的集合。数据库管理系统是用于建立、使用和维护数据库的软件,它对数据库进行统一管理和控制,以保证数据库的完整性和安全性。,2023/10/31,27,1、关系数据库系统 关系数据库是采用关系模型的数据库。关系模型用二维表结构来表示各类实体及其间的联系。二维表由行和列组成。一个关系数据库由多张表组成,2023/10/31,28,2023/10/31,29,数据库中的表要满足一些范式,如下为三个范式的定义。第一范式:关系(表)的每个属性都应该是原子的。第二范式
13、:如果一个关系的所有非关键字属性,都只依赖整个关键字,则该关系满足第二范式。(学号 学号,系名,住处,课程号 课程号,成绩)第三范式:如果一个关系满足第二范式,且没有传递依赖,则该关系满足第三范式。Boyce-Codd范式(BCNF)等,2023/10/31,30,2、面向对象数据库系统,面向对象的数据库系统是OO设计和编程的之间扩展,是为了存储对象并与面向对象程序设计语言交互而专门设计的。它是按对象存储数据的数据库管理系统。面向对象数据库系统有两方面的特征:(1)是面向对象的,应支持对象、类、操作、属性、继承、聚合、关联等面向对象的概念;(2)另一方面它具有数据库系统所应具有的特定和功能。其
14、产品大概分三类。(1)在面向对象编程语言的基础上,增加数据库管理系统的功能,即长久地存储、管理和存取对象的功能。(2)对关系数据库管理系统进行扩充,使之支持面向对象数据模型,在关系数据库模型基础上提供对象管理功能,并向用户提供面向对象的应用程序接口。(3)第三种是按“全新的”面向对象数据模型进行的设计。,2023/10/31,31,面向对象的数据库系统与应用系统的逻辑模型都是一致的,不需要再设计负责保存与恢复其他类的对象的类,因为每个类的对象都可以直接在OODBMS中保存。面向对象的数据库系统相对来说还比较新,在理论上和技术上还不太完善,而且目前还没有被广泛接受的标准。由对象数据库管理组ODM
15、G提出的一些数据库标准正在逐渐地得到广泛的接收,如对象定义语言(ODL)。ODL是一种描述对象数据库结构和内容的语言。在若干年后,ODBMS有望取代RDBMS。,2023/10/31,32,三、如何设计数据管理部分首先要根据条件选择数据管理系统:文件系统,R-DBMS,OO-DBMS(一)利用关系数据库系统进行数据存储设计1、面向对象、实体-关系以及关系数据库系统中的概念间的对应关系,2023/10/31,33,2023/10/31,34,2023/10/31,35,2、对象标识 在程序运行时的对象标识是唯一的,对程序员来说通常是不可以访问的,只是通过对象名来访问对象。永久对象的标识在一个表中
16、是唯一的。由类导出的表用一个主关键字作为表中所存储的对象的唯一标识。由关联导出的表用相关联的表的主关键字组合作为主关键字。在应用中使用对象名,在表中使用主关键字。,2023/10/31,36,3、永久类的存放设计 每个永久类使用一个数据库表1)确定要存储对象的哪些属性值,据此列出一个永久类的相应属性。2)按时间与空间要求进行权衡,对这些属性进行规范化,规范化后的属性至少应满足第一范式。3)定义数据库的表列:规范化之后的一个属性行:一个对象实例把规范化之后类的一个属性作为表的一个列,要存储的每一个对象实例作为表中的一行。若一个类的属性列表不满足第二范式或更高范式,有两种可选的策略:(1)拆分类,
17、这样要修改问题域模型;(2)不修改类,而是让一个类对应两个或多个表,让每个表满足范式要求,这样在存储和检索类时要进行一定的转换运算。,2023/10/31,37,若要考虑存储效率,也可以把一个类映射到几个表,其方法为:1)、水平划分其中几个对象要经常被访问,2023/10/31,38,2)、垂直划分以不同的模式访问,2023/10/31,39,4、对关系的存储(1)对关联的存储设计在关系数据库中按下述方法对关联进行数据存放:每个一对一的关联映射到一张独立的表;或在各类对应的表中用外键隐含;也可把两个对象和关联放在同一表中。每个一对多的关联映射到一张独立的表;或在“多”的类对应的表中用外键隐含。
18、每个多对多的关联映射到一张独立的表,该表的主关键字是两个进行关联的表的主关键字的拼接;或者把它转化为一对多的关联,然后再按一对多的方式进行处理。,2023/10/31,40,2023/10/31,41,2023/10/31,42,2023/10/31,43,2023/10/31,44,2023/10/31,45,(3)对泛化的存储设计可采用下述方法之一,进行数据存放。把一般类的各个子类的属性都集中到一般类中,创建一个表。为一般类(非抽象类)创建一个表,并为它的各个特殊类各创建一个表。一般类的表与各子类的表要用同样的属性作为主关键字。如果一般类为抽象类,则要把一般类的属性放到各子类中,为它的子类
19、各建立一张表。若一般类不为抽象类,也可采用(2)的做法。上述是对单继承的处理方法,对于多继承的处理与此类似。,2023/10/31,46,2023/10/31,47,2023/10/31,48,当从子类对应的表开始检索时,根据提供的设备ID,用设备ID查找子类相应表中的行,再在父类对应的表中,用设备ID和查找表中的行,即检索出该设备的所有信息。当从父类对应的表开始检索时,根据提供的设备ID和设备类型,用设备ID查找父类相应表中的行,用设备类型确定查那个子类所对应的表,再在子类对应的表中,用设备ID查找表中的行,即检索出该设备的所有信息。,2023/10/31,49,2023/10/31,50,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 设计
链接地址:https://www.31ppt.com/p-6435980.html