1 / 89 COP 3503 FALL 2012 SHAYAN JAVED LECTURE 11 Programming Fundamentals using Java 1.
COP 3503 FALL 2012 Shayan Javed Lecture 13
description
Transcript of COP 3503 FALL 2012 Shayan Javed Lecture 13
1 / 431
COP 3503 FALL 2012SHAYAN JAVED
LECTURE 13
Programming Fundamentals using Java
2 / 43
Storage and Retrieval
3 / 43
Storage and Retrieval
Looked at how to read and write files.
4 / 43
Storage and Retrieval
Looked at how to read and write files.
How can we store and later retrieve the objects we need for our programs?
5 / 43
Storage and Retrieval
Method 1:
Create a file format
6 / 43
Storage and Retrieval
Method 1:
Create a file format
Store all your info as text
7 / 43
Storage and Retrieval
Example:
Let’s look at the UndergradStudent class from Project 1
8 / 43
Storage and Retrieval
Example:
Let’s look at the UndergradStudent class from Project 1
We want to store all the students
9 / 43
Storage and Retrieval
public class UndergradStudent extends Student {
public UndergradStudent(String name, int UFID, String dob, double gpa) {
super(name, UFID, dob, gpa);}
}
10 / 43
Storage and Retrieval
public class UndergradStudent extends Student {
public UndergradStudent(String name, int UFID, String dob, double gpa) {
super(name, UFID, dob, gpa);}
}
Properties: String nameint UFIDString dobdouble gpa(Ignore courses for now)
11 / 43
Storage
Need to decide on a format to store the info
12 / 43
Storage
Need to decide on a format to store the info
Sample format:
Undergrad Student: Name: name UFID: UFID D.O.B: dob GPA: gpa
13 / 43
Storage
Need to decide on a format to store the info
Sample format:
Undergrad Student: Name: name UFID: UFID D.O.B: dob GPA: gpa
14 / 43
Storage
Sample method to write to file:
public static void writeStudent(PrintWriter pw, UndergradStudent student) throws IOException
pw.println("Undergrad Student: "); pw.println("Name: " + student.getName()); pw.println("UFID: " + student.getUFID()); pw.println("D.O.B: " + student.getDob()); pw.println("GPA: " + student.getGpa()); }
15 / 43
Retrieval
Now we have files with student info in them
16 / 43
Retrieval
Now we have files with student info in them
Need to be able to read the info back and construct student objects
17 / 43
Retrieval
Now we have files with student info in them
Need to be able to read the info back and construct student objects
Have to parse the file
18 / 43
Retrievalpublic static UndergradStudent readStudent(Scanner in) throws
IOException {// read line by line// nameString line1 = in.nextLine(); ....// UFIDline1 = in.nextLine(); .....// DOBline1 = in.nextLine(); .....// gpaline1 = in.nextLine(); ....
// Create the student objectUndergradStudent student = new UndergradStudent(name, ufid, dob, gpa);return student;
}
19 / 43
Storage and Retrieval
So we looked at one method of storing and retrieving objects.
20 / 43
Storage and Retrieval
Method 1
Advantages: Stored in human-readable format (open in text editor)
21 / 43
Storage and Retrieval
Method 1
Advantages: Stored in human-readable format (open in text editor) Can edit data directly
22 / 43
Storage and Retrieval
Method 1
Advantages: Stored in human-readable format (open in text editor) Can edit data directly Can be read in any programming language
23 / 43
Storage and Retrieval
Method 1
Disadvantages: Need to write read/write methods
24 / 43
Storage and Retrieval
Method 1
Disadvantages: Need to write read/write methods Reading/Writing can be slow
(Create Scanner, read next line, then next token, etc. etc...)
25 / 43
Storage and Retrieval
There is another way of writing and reading objects.
26 / 43
Storage and Retrieval
There is another way of writing and reading objects.
Create persistent objects in memory.
27 / 43
Storage and Retrieval
There is another way of writing and reading objects.
Create persistent objects in memory.
Objects stored as streams of bytes.
28 / 43
Storage and Retrieval
Objects are serialized (writing)
29 / 43
Storage and Retrieval
Objects are serialized (writing)
Serialization is the process of converting an object state into a format that can be stored (for example, in a file or memory buffer) and "resurrected" later in the same or another computer environment.
30 / 43
Storage and Retrieval
Objects are serialized (writing)
Serialization is the process of converting an object state into a format that can be stored (for example, in a file or memory buffer) and "resurrected" later in the same or another computer environment.
“Resurrection” = Deserialization (reading)
31 / 43
Storage and Retrieval
Objects are serialized (writing)
Serialization is the process of converting an object state into a format that can be stored (for example, in a file or memory buffer) and "resurrected" later in the same or another computer environment.
“Resurrection” = Deserialization (reading)
32 / 43
Serialization
In Java, implement the Serializable interface
33 / 43
Serialization
In Java, implement the Serializable interface
Indicates that it can be converted into a stream of bytes for writing
34 / 43
Serialization
In Java, implement the Serializable interface
Indicates that it can be converted into a stream of bytes for writing
Marker interfaceimport java.io.Serializable;
public className implements Serializable {
35 / 43
Serialization// Create an UndergradStudent objectUndergradStudent student1 = new UndergradStudent("John Smith”, ...)
FileOutputStream fos = null;ObjectOutputStream out = null;try {
// Create FileOutputStreamfos = new FileOutputStream(args[0]); // pass in file nameout = new ObjectOutputStream(fos);// write out the objectsout.writeObject(student1);// close the streamfos.close();
} catch (IOException io) {...}
36 / 43
DeSerialization// Create an UndergradStudent objectUndergradStudent student;
FileInputStream fis = null;ObjectInputStream in = null;try {
// Create FileInputStreamfis = new FileInputStream(args[0]); // pass in file namein = new ObjectInputStream(fis);// read the objectsstudent1 = (UndergradStudent) in.readObject();// close the streamfis.close();
} catch (IOException/ClassNotFoundException io) {...}
37 / 43
Storage and Retrieval
Method 2: Serialization
Advantages: Very simple to write and read. Fast
38 / 43
Storage and Retrieval
Method 2: Serialization
Disadvantages: Not human-readable. Cannot be edited by text-editors Restricted to one programming language
(not exactly…have to implement reading/writing algorithm for other languages).
39 / 43
Storage and Retrieval
What if you don’t want a variable in a class to be written out?
40 / 43
Storage and Retrieval
What if you don’t want a variable in a class to be written out?
public Student implements Serializable {protected Course[] courses;…
}
41 / 43
Storage and Retrieval
What if you don’t want a variable in a class to be written out?
public Student implements Serializable {protected Course[] courses;…
}
We don’t want to store the Courses array when writing out
42 / 43
Storage and Retrieval
What if you don’t want a variable in a class to be written out?
public Student implements Serializable {protected transient Course[] courses;…
}
Use the transient keyword
43 / 43
Summary
Two ways of storage/retrieval: Text files
specify a file format, write parsers Serializable
stream of bytes write out objects directly, read back directly
TODO: Look into “JSON” as a format