设计数据存取类.ppt
《设计数据存取类.ppt》由会员分享,可在线阅读,更多相关《设计数据存取类.ppt(83页珍藏版)》请在三一办公上搜索。
1、第16章 设计数据存取类,对象持久性简介设计数据存取类问题域类与数据存取类通信使用文件实现持久性使用数据库实现持久性,16.1 对象持久性简介,两种使对象持久性的方法:属性存储和对象存储。属性存储:从类的实例中检索属性值,然后将这些值写入文件或数据库中。以后需要此实例时,按照相反的顺序重新创建实例,即从数据文件或数据库中读取数据,填充属性,进行实例化。对象存储:使用对象串行化技术将整个实例写入文件或数据库中。好处是可以检索完整的实例,不必重新创建。,16.2 设计数据存取类,设计DA类的优点数据输入与输出代码与其他类隔离,可以显著减少维护的工作量;三层体系结构支持客户/服务器模型,GUI、PD
2、和DA功能可能驻留在多个站点的多台机器上。,16.2 设计数据存取类,例如,为Book类编写名为BookDA的DA类,该类可为客户程序提供数据存储和检索服务;只有PD类会调用该DA类中的方法。需要数据存储和检索服务的类必须调用PD类的DA方法,这样,就会轮流调用BookDA类的方法。由于不需要创建DA类的实例,因此,DA类的所有方法都是静态的。,16.2 设计数据存取类,BookDA和Book提供的4项基本任务是:检索图书、存储图书、更改图书信息和删除图书。可以使用名为find、addNew、update和delete的方法,并在DA类中实现这些方法。,16.2 设计数据存取类,查找图书 fi
3、nd方法:用书号作为图书的唯一标识,找到图书之后,返回对图书的引用,如果找不到对应的图书,该方法会创建并抛出自定义异常类的一个实例NotFoundException。public static Book find(String bookNo)throws NotFoundException,16.2 设计数据存取类,添加图书addNew方法:向系统中添加图书,先确定现有图书的书号与正在添加的图书的书号是否相同,如果相同,该方法会创建并抛出自定义异常类的一个实例DuplicationException。public static void addNew(Book book)throws Dupl
4、icationException,16.2 设计数据存取类,更改图书update方法:update方法以参数的形式接收图书引用,查找现有图书并更改书名、作者和价格,如果无法找到该图书,该方法会抛出NotFoundException。public static void update(Book book)throws NotFoundException,16.2 设计数据存取类,删除图书delete方法:从系统中删除图书,与update方法类似,首先查找以参数的形式接收了其引用的图书,然后从数据存储中将其删除;如果无法找到图书,该方法会抛出NotFoundException。public sta
5、tic void delete(Book book)throws NotFoundException,16.2 设计数据存取类,其他数据存取方法应用系统启动后执行Initialize方法,打开文件或数据库连接,将需要的数据从文件或数据库中读出,用于初始化问题域对象;public static void initialize(),16.2 设计数据存取类,其他数据存取方法退出应用系统之前执行terminate方法,将问题域对象存储到文件或数据库中,终止数据库连接。public static void terminate(),16.2 设计数据存取类,其他数据存取方法getAll方法用于读取所有对
6、象。public static Vector getAll(),16.3 问题域类与数据存取类通信,为了使DA类与所有其他类(与其匹配的PD类除外)隔离,只能由相应的PD类来调用DA方法。要使Book调用7个DA方法,必须在Book中提供7个对应方法,之后由客户端来调用这7个方法。对原来问题域的Book类做以下修改:取消静态属性books的定义;取消原来定义的initialize方法和getAll方法。,16.3 问题域类与数据存取类通信,查找图书PD类的 find方法是一个静态方法,其用途是调用DA类的 find方法。,16.3 问题域类与数据存取类通信,添加图书PD类的addNew方法:调
7、用DA类中的addNew方法存储新的图书实例。,16.3 问题域类与数据存取类通信,更改图书PD类的update方法:调用DA类的update方法,也是一个非静态方法。,16.3 问题域类与数据存取类通信,删除图书PD类的delete方法:调用DA类的delete方法。,16.3 问题域类与数据存取类通信,其他问题域方法对于DA类中包含的其他方法,如initialize、terminate和getAll,在PD类中也必须包含这些方法。,16.4 使用文件实现持久性,有两种类型的文件结构:顺序文件和随机存取文件。顺序文件包含按连续顺序存储和处理的记录;随机存取文件可以通过指定其记录编号来访问记录
8、。,16.4 使用文件实现持久性,Java输入/输出流Java中的输入/输出操作通常都是通过输入/输出流来实现的。一个流就是一个从源流向目的地的数据序列。输入/输出流可以与各种数据源和目标相连。,16.4 使用文件实现持久性,Java输入/输出流为了从信息源获取信息,就需要在程序中打开一个输入流,这个输入流便在信息源与程序之间建立了连接,程序可以从输入流读取信息。当程序需要向目标位置写信息时,便需要打开一个输出流,这个输出流便在程序与输出目标之间建立连接,程序通过输出流向这个目标位置写信息。,16.4 使用文件实现持久性,Java输入/输出流Java的输入/输出都要通过java.io包来实现,
9、java.io包提供了一系列支持读/写的java流类。Java使用两种不同的数据流:字符流和字节流。,16.4 使用文件实现持久性,Java输入/输出流Java的输入/输出都要通过java.io包来实现,java.io包提供了一系列支持读/写的java流类。Java使用两种不同的数据流:字符流和字节流。,16.4 使用文件实现持久性,字符流字符流是专门用于字符数据的,Java中的字符使用的都是16-bit的Unicode 编码,每个字符占两个字节。Unicode可以容纳大多数语言中的所有字符。字符流的源或目标通常是文本文件。,16.4 使用文件实现持久性,字符流字符流是专门用于字符数据的,Ja
10、va中的字符使用的都是16-bit的Unicode 编码,每个字符占两个字节。Reader和Writer是java.io包中所有字符流的抽象基类。Reader提供了输入字符的API及其部分实现,Writer则提供了输出字符的API及其部分实现。,16.4 使用文件实现持久性,字符流字符流是专门用于字符数据的,Java中的字符绝大多数程序使用Reader和Writer这两个抽象类的一系列子类来读/写文本信息。例如FileReader/FileWriter就是用来读/写文本文件的。,16.4 使用文件实现持久性,字节流字节流通常用于一般目的的输入/输出。这种流通常被用来读写诸如图片、声音之类的二进
11、制数据。事实上,绝大多数数据都是以二进制文件存储的。,16.4 使用文件实现持久性,字节流InputStream和OutputStream是用来处理8位字节流的抽象基类,程序使用这两个类的子类来读写8位的字节信息。这些子类中有两个特殊的类ObjectInputStream和ObjectOutputStream,它们可用来读/写对象。,16.4 使用文件实现持久性,java.io包中的常用类,16.4 使用文件实现持久性,java.io包中的常用类,16.4 使用文件实现持久性,使用顺序文件实现持久性在顺序文件中存储属性值 initialize方法读取包含图书的属性值的图书记录,为每条记录创建图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 设计 数据 存取

链接地址:https://www.31ppt.com/p-6344012.html