王豐緒 銘傳大學資訊工程學系 問題:JAVA 物件檔輸出入.

Slides:



Advertisements
Similar presentations
单元二:面向对象程序设计 任务二:借书卡程序设计.
Advertisements

第四章 类、对象和接口.
第三讲 面向对象(上).
3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
项目6 通用堆栈.
檔案處理.
Java的程式架構與基本觀念 Java語言的歷史 Java程式的開發環境 Java程式的架構 輸出與輸入物件之使用 工具使用方法介紹
MVC Servlet与MVC设计模式.
算法设计与分析 Algorithm Design and Analysis
第一章 面向对象程序设计.
设计模式可以帮助我们改善系统的设计,增强 系统的健壮性、可扩展性,为以后铺平道路。
第二章 JAVA语言基础.
第二部分 Java语言基础篇 第4章 Java语言与面向对象 (之一).
輸入輸出 學習目標 瞭解串流與輸入輸出的關係 認識InputStream、OutputStream繼承架構
创意源自激情,技术成就梦想 畅翼创新俱乐部 2012年春俱乐部第三次技术培训 赵程.
第5章 Java中类、对象、接口 及包的概念 5.1 类的基本概念 5.2 类的继承概念 5.3 抽象类和接口 5.4 包.
Android + JUnit 單元測試 建國科技大學資管系 饒瑞佶 2012/8/19V4.
程式設計實作.
第5章 异常处理 王德俊 上海交通大学继续教育学院.
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
第5章 面向对象程序设计 本章要点 5.1 面向对象程序设计概述 5.2 Java语言的面向对象程序设计 5.3 方法的使用和对象数组
例外處理(Exception Handling)
親愛的老師您好 感謝您選用本書作為授課教材,博碩文化準備本書精選簡報檔,特別摘錄重點提供給您授課專用。 說明: 博碩文化:
Java基础 JavaSE异常.
JSP自定义标签技术的分析与应用 ----Custom Tag 的分析与应用
程序與函數的類別方法 目的:模組化程式設計 方法:由上而下設計 注意事項:(1)獨立性 (2)結合問題 (3)子問題間的溝通.
Multithread 多執行緒 I/O Lecturer:楊昌樺.
崑山科技大學資訊管理系 伺服網頁程式設計 系統開發細部流程 教師:游峰碩.
Ch13 集合與泛型 物件導向程式設計(2).
JAVA 编 程 技 术 主编 贾振华 2010年1月.
本單元介紹何謂變數,及說明變數的宣告方式。
西南科技大学网络教育系列课程 高级语程序设计(Java) 第五章 继承、接口与范型.
程式設計實作.
CH09 套件 物件導向程式設計(II).
第2章回顾 标识符:不用记,动手 关键字:if, else, switch, for, while, do, break, continue, void, …… 局部变量和成员变量 ①变量作用域 ②内存布局 基本数据类型 ①4类8种 ②互相转换 流程控制语句 ①分支 if……else, switch.
王豐緒 銘傳大學資訊工程學系 問題:JAVA 二元檔輸出入.
西南科技大学网络教育系列课程 高级语程序设计(Java) 第九章 输入/输出流.
Java语言程序设计 第五部分 Java异常处理.
中国矿大计算机学院杨东平 第5章 接口和包 中国矿大计算机学院杨东平
例外處理與 物件序列化(Exception Handling and Serialization of Objects)
檔案讀寫與例外處理 (File IO and Exception Handling)
9.1 程式偵錯 9.2 捕捉例外 9.3 自行拋出例外 9.4 自定例外類別 9.5 多執行緒
第9讲 Java的继承与多态(一) 类的继承 子类的创建 方法覆盖.
2019/1/16 Java语言程序设计-类与对象 教师:段鹏飞.
第 十二 章 C# 中的文件处理.
异常及处理.
集合框架和泛型(一).
Java程序设计 第2章 基本数据类型及操作.
C/C++/Java 哪些值不是头等程序对象
第五讲 JSP中的文件操作(1) 教学目的 本讲主要讲述JSP中使用Java输入、输出流实现文件的读写 操作 。 知识要点
P2P聊天工具.
4.2通讯服务模块线程之间传递信息 信息工程系 向模军 Tel: QQ:
第7章 繼承/多型/介面 注意: 本投影片僅供本書上課教師使用,非經同意請勿上網轉載或供拷貝.
透過YouTuBe API取得資料 建國科技大學 資管系 饒瑞佶 2018/1 V1.
JAVA 编 程 技 术 主编 贾振华 2010年1月.
C#程序设计基础 $3 成员、变量和常量.
王豐緒 銘傳大學資訊工程學系 問題:判斷是否為長方形.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
第二章 Java语法基础.
第二章 Java基本语法 讲师:复凡.
目标 流程控制 字符串处理 C# 的类和对象 C# 访问修饰符 C# 构造函数和析构函数.
第二章 Java基本语法 讲师:复凡.
第6章 面向对象的高级特征 学习目标 本章要点 上机练习 习 题.
Java程序设计 第17章 异常和断言.
JAVA 程式設計與資料結構 第三章 物件的設計.
第2章 Java语言基础.
對於成員(member)存取權的限制 成員的資料被毫無限制的存取,任誰都可以指定任意值給成員,Java語言為了防止這種現象的產生,規定:有一種成員的資料不能任由類別外部的任何人隨意存取。
C++语言程序设计 C++语言程序设计 第十一章 异常处理 C++语言程序设计.
C++程序语言设计 Chapter 14: Templates.
第二章 Java基础语法 北京传智播客教育
Presentation transcript:

王豐緒 銘傳大學資訊工程學系 問題:JAVA 物件檔輸出入

問題基本資訊 標題 問題描述 目的 版本:2011/08/05 提示 物件檔案輸出入 以人才庫為例,新增人才之後,可以以物件方式寫入檔案。此外,並可提供讀取還原人才庫的功能。 目的 練習物件檔案輸出入 版本:2011/08/05 提示 ObjectOutputStream, ObjectInputStream (java.io.*) Serializable (java.io.*)

題目:人才庫 假設現在有一個人才資料庫可以儲存人(Person)的相關資料,每一個人的基本資料包括: 姓名 ,年齡 ,電話 ,身分:可以是以下人才: 醫生(Doctor),教師(Teacher),工程師(Engineer),和業務員(SalePerson)。 除了上述的基本資料之外,每種人才分別包括下列資訊: 醫生: 科別:眼科,耳鼻喉科,心臟科等等 (文字資料) 駐院實習年數:(實數資料) 駐診醫院:(文字資料) 教師: 授課科目:英文,數學等等(文字資料) 教學年資:(實數資料) 最高學歷:(文字資料) 工程師: 工程領域:建築,電子,電腦等等(文字資料) 證照:(文字資料) 業務員: 銷售項目:房屋仲介,保險,3C產品等等(文字資料) 主管:(文字資料) 設計相關類別,允許輸入多筆醫生,教師,工程師,和業務員等人才的相關資訊。 設計必須考量將來擴充的彈性,並且以統一的介面動作,輸出所有相關資訊。 新增人才之後,可以以物件方式寫入檔案。此外,並可提供讀取還原人才庫的功能。

問題分析:掌握領域知識 問題:以人才庫為例,新增人才之後,可以以物件方式寫入檔案。此外,並可提供讀取還原人才庫的功能。 學習單1:請同學整理相關領域知識 1. JAVA 物件檔案輸出入相關知識 2. Vector類別

物件模型 學習單2:請同學根據問題描述,尋找適當的物件模型 以人才庫為例,新增人才之後,可以以物件方式寫入檔案。此外,並可提供讀取還原人才庫的功能。 名詞 檔案名稱 Person (人才) 人才庫(Vector of Person)

PeopleBase類別 資料成員 功能成員 private String filename; private Vector people; public void read() :讀取人才庫 public void write() :寫入人才庫 public Person get(int index) :取出人才 public void add(Person p) :新增人才(以前的作業) 建構元: PeopleBase(String filename)

學習單3: JAVA Code

學習任務 請利用BlueJ撰寫本問題的JAVA Code,並且進行測試

PeopleBase類別 import java.io.*; import java.util.*; public class PeopleBase { private String filename; private Vector people; /** * Constructor for objects of class People */ public PeopleBase(String filename) this.filename = filename; people = new Vector(100,10); } * Add a person public void add(Person person) { people.add(person);

PeopleBase類別 /** * return the size of people */ public int size(){ return people.size(); } * get the i'th person public Person get(int i) { if (i<people.size()) return (Person) people.get(i); else return null; * public void clear(){ people.clear();

PeopleBase類別 public void write () { try { ObjectOutputStream out = new ObjectOutputStream (new FileOutputStream (filename)); out.writeObject(people); out.close(); } catch (IOException e) { e.printStackTrace(); } /** * read people into memory * @return the array of Person */ public void read() { people.clear(); //clear the old database try{ ObjectInputStream in = new ObjectInputStream (new FileInputStream (filename)); people = (Vector) in.readObject(); in.close(); } catch (Exception e) {

反思 學習單4:請同學進行學習反思,你從此問題學到什麼? 如何讀取物件檔案 如何寫入物件檔案 物件輸出入與 Serializable 介面的關係 public abstract class Person implements Serializable { ….}

延伸學習 請同學列舉其它與本問題相關的學習 練習其他物件類型的輸出入

範例:物件檔輸入 ObjectInputStream 物件檔 FileInputStream readObject() 讀取資料物件

範例:物件檔輸出 FileOutputStream ObjectOutputStream 二元檔 writeObject(object) 寫入物件資料