Object-Oriented Programme 1 SSD3: Object-Oriented Programming and Design.

Презентация:



Advertisements
Похожие презентации
© Luxoft Training 2013 Annotations. © Luxoft Training 2013 Java reflection / RTTI // given the name of a class, get a "Class" object that // has all info.
Advertisements

1/27 Chapter 9: Template Functions And Template Classes.
Unit II Constructor Cont… Destructor Default constructor.
Inner Classes. 2 Simple Uses of Inner Classes Inner classes are classes defined within other classes The class that includes the inner class is called.
Loader Design Options Linkage Editors Dynamic Linking Bootstrap Loaders.
Object-Oriented Programme 1 SSD3: Object-Oriented Programming and Design.
Operator Overloading Customised behaviour of operators Chapter: 08 Lecture: 26 & 27 Date:
1/30 Chapter 8: Dynamic Binding And Abstract classes.
S4-1 PAT328, Section 4, September 2004 Copyright 2004 MSC.Software Corporation SECTION 4 FIELD IMPORT AND EXPORT.
A class is just a collection of variables--often of different types--combined with a set of related functions. The variables in the class are referred.
© Luxoft Training 2013 Using Reflection API in Java.
2005 Pearson Education, Inc. All rights reserved. 1 Object-Oriented Programming: Interface.
1 © Luxoft Training 2012 Inner and anonymous classes.
Arrays Dr. Ramzi Saifan Slides adapted from Prof. Steven Roehrig.
TCP/IP Protocol Suite 1 Chapter 12 Upon completion you will be able to: Transmission Control Protocol Be able to name and understand the services offered.
Object-Oriented Programme 1 SSD3: Object-Oriented Programming and Design.
© 2005 Cisco Systems, Inc. All rights reserved. BGP v Customer-to-Provider Connectivity with BGP Connecting a Multihomed Customer to Multiple Service.
Why do we learn English at schools. (by Kurdina Ekaterina) Learning a new language often begins at a young age and, at some schools, is continued throughout.
11 BASIC DRESS-UP FEATURES. LESSON II : DRESS UP FEATURES 12.
Temple College EMS Professions1 RECORDS & REPORTS EMERGENCY MEDICAL TECHNICIAN - BASIC.
Транксрипт:

Object-Oriented Programme 1 SSD3: Object-Oriented Programming and Design

Object-Oriented Programme Input and Output Programming 3.2 Graphical User Interface 3.3 Toward Commercial Use Assessments Exam 3 Unit 3. Advanced Class Implementation

Object-Oriented Programme Input and Output Programming Contents File I/O Using File I/O in the Library System Assessments Practical Quiz 9 Exercise 6

Object-Oriented Programme File I/O Declaring and Initializing File I/O Objects Using File I/O Objects Closing Files Sample File I/O Program

Object-Oriented Programme 5 Declaring and Initializing File I/O Objects we have learnt console I/O. IO Classes needing console I/O began with the following declarations: /* Standard input stream */ private static BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in)); /* Standard output stream */ private static PrintWriter stdOut = new PrintWriter(System.out, true); /* Standard error stream */ private static PrintWriter stdErr = new PrintWriter(System.err, true);

Object-Oriented Programme 6 note BufferedReader and PrintWriter simply wrap the more primitive console I/O objects I/O System.in System.out System.err providing a more refined and convenient interface. They can be used to wrap other I/O objects, including those used for file I/O. IO

Object-Oriented Programme 7 file I/O classes so, classes needing file I/O will use the following declarations: IO BufferedReader fileIn = new BufferedReader(new FileReader(filename)); PrintWriter fileOut = new PrintWriter(new FileWriter(filename)); PrintWriter fileAppend = new PrintWriter(new FileWriter(filename, true);

Object-Oriented Programme 8 FileReader constructor What the FileReader constructor do? creates an object opens the specified file for reading. provides a mechanism for reading data from the file. The argument filename used in the declarations is simply a String indicating the name of the file to be opened.

Object-Oriented Programme 9 FileWriter constructor The FileWriter constructor makes it possible to write data to the specified file. the one-argument FileWriter constructor opens a file, it erases the contents of the file. Obviously, this is not appropriate in some situations. When data needs to be appended to a file, the two- argument FileWriter constructor should be used: if the second argument is true, the contents of the file are preserved when the file is opened. When a file is If the second argument is false, the contents are erased. opened for writing and the specified file does not exist a new empty file is created by the host system.

Object-Oriented Programme 10 Using File I/O Objects Declaring file I/O objects is very similar to declaring console I/O objects. FileReader and FileWriter objects similarly wrapped by BufferedReader and PrintWriter File I/O and console I/O objects share many methods. (See Java API document)

Object-Oriented Programme 11 Code comparison (file I/O vs. console I/O )-1 As a consequence, the code for file I/O looks very much like the code for console I/O. // reading from a file int value = Integer.parseInt(fileIn.readLine()); // reading from the console int value = Integer.parseInt(stdIn.readLine());

Object-Oriented Programme 12 BufferedReader.readLine() BufferedReader.readLine() used to read the contents of a file return null when it reaches the end of the file. The following loop, which reads all the lines in a file, takes advantage of this fact: String line = fileIn.readLine(); while (line != null) { // process line line = fileIn.readLine(); }

Object-Oriented Programme 13 Code comparison (file I/O vs. console I/O )-2 writing to a file v.s. writing to the console // writing to a file fileOut.println(5); // writing to the console stdOut.println(5);

Object-Oriented Programme 14 extra attention when dealing with file I/O While the initialization of console I/O objects generally succeeds I/O The BufferedReader, InputStreamReader, and PrintWriter constructors presented do not throw any exceptions But, initializing file I/O objects can fail: The FileReader constructor that takes a filename as argument can throw a FileNotFoundException. This should be expected, as it is certainly reasonable to think that the string given to this constructor may be the name of a file that does not exist. Note that FileNotFoundException is a direct subclass of IOException. The FileWriter constructors that take a filename as argument also can throw an IOException. In addition, the method readLine() in the class BufferedReader throws an IOException if there is an error during reading.

Object-Oriented Programme 15 Closing Files Maintaining open files requires scarce system resources, So, Files that are no longer in use should be closed. Who do the job to close files? This must be done explicitly by the programmer. BufferedReader fileIn = new BufferedReader(new FileReader(filename)); PrintWriter fileOut = new PrintWriter(new FileWriter(filename));... fileIn.close(); fileOut.close(); close() in the classes BufferedReader and PrintWriter throw an IOException if there is an error during closing the files.

Object-Oriented Programme 16 Sample File I/O Program Sample code of file I/O(CopyFile.java) It first prompts the user for two file names, the name of an input file and the name of an output file, and then copies the contents of the input file to the output file. Lines 34 and 40 the input and output files are opened. Line 43 to line 48 reads a line from the input file and writes the line just read to the output file. When the end of the file is reached, the value of the variable line becomes null, and control exits the while-loop. Lines 50 and 51 the files are closed.

Object-Oriented Programme Using File I/O in the Library System Reading Data from a File Writing Data to a File Complete Library System

Object-Oriented Programme 18 version of the library system with file I/O New Requirement: The catalog will be stored in a data file the library system will load the catalog from that file. The user will be able to save the borrower data to a file in one of three formats: Plain text, HTML and XML.

Object-Oriented Programme 19 Reading Data from a File Recall that the library system contains two kinds of catalog items: Books recordings. Every line in catalog.dat stores exactly one catalog item.

Object-Oriented Programme 20 The line format with book data Book_code_title_year_author_numberOfPages where: "Book" is a prefix that indicates the line type. code is a string that represents the code of the book. title is a string that represents the title of the book. year is an integer that represents the year the book was published. author is a string that represents the author of the book. numberOfPages is an integer that represents the number of pages in the book. The fields are delimited by an underscore ( _ ). The fields themselves will not contain any underscores.

Object-Oriented Programme 21 The lines format with recording data Recording_code_title_year_performer_format where: "Recording" is a prefix that indicates the line type. code is a string that represents the code of the recording. title is a string that represents the title of the recording. year is an integer that represents the year of the recording. performer is a string that represents the performer of the recording. format is a string that represents the format of the recording. The fields are delimited by an underscore ( _ ). The fields themselves will not contain any underscores.

Object-Oriented Programme 22 class diagram the elements used to implement this version of the library system:

Object-Oriented Programme 23 Interface LibraryCatalogLoader The interface LibraryCatalogLoader declares a method that loads a library catalog from a file. Method: Catalog loadCatalog(String filename) throws FileNotFoundException, IOException, DataFormatException Loads the information in the specified file into the library catalog. Sample code (LibraryCatalogLoader.java )

Object-Oriented Programme 24 Class FileLibraryCatalogLoader Sample code(FileLibraryCatalogLoader.java ) The class FileLibraryCatalogLoader implements interface LibraryCatalogLoader. It is used to load a library catalog from a file.

Object-Oriented Programme 25 Methods study public Catalog loadCatalog(String fileName) throws FileNotFoundException, IOException, DataFormatException Loads the information in the specified file into a library catalog. This method begins by opening the file for reading. It then proceeds to read each line in the file. If the line contains book data, it calls the method readBook to extract the book information and create a Book object; if the line contains recording data, it calls readRecording. Finally, loadCatalog adds the book (or recording) to the library catalog. This method can throw the following exceptions: FileNotFoundException. If the specified file does not exist. IOException. If there is an error reading the information in the specified file. DataFormatException. If a line in the file has errors (the exception should contain the line of malformed data).

Object-Oriented Programme 26 Methods study private Book readBook (String line) throws DataFormatException This method uses the class StringTokenizer to extract the book data in the specified line. If the line is error free, this method returns a Book object that encapsulates the book data. If the line has errors, that is, if it does not have the expected number of tokens or the tokens that should contain an integer do not; this method throws a Exception that contains the line of malformed data. DataFormatException

Object-Oriented Programme 27 Methods study private Recording readRecording(String line) This method uses the class StringTokenizer to extract the recording data in the specified line. If the line is error-free, this method returns a Recording object that encapsulates the recording data. If the line has errors, that is, if it does not have the expected number of tokens or the token that should contain an integer does not; this method throws a Exception that contains the line of malformed data. DataFormatException

Object-Oriented Programme 28 Class DataFormatException This exception is thrown when a line in a file being parsed has errors: The line does not have the expected number of tokens. The tokens that should contain numbers do not. Sample code(DataFormatException.java)

Object-Oriented Programme 29 Writing Data to a File we present a version that saves the borrower database to a file in those three formats: plain text HTML XML Sample code (LibrarySystem.java)

Object-Oriented Programme 30 Note of The method writeFile() line 256 receives a file name and a formatted string containing borrower data. lines 259 and 260 the method creates a new file (which has the specified name), and then, line 262 the method writes the formatted string to the new file. Note that the formatted string will contain end-of-line characters ( \n ) because each of the formats uses end-of-line characters.

Object-Oriented Programme 31 Complete Library System The following files implement the other classes in this version of the library system: Book.java Recording.java CatalogItem.java Catalog.java Borrower.java BorrowedItems.java BorrowerDatabase.java BorrowersFormatter.java PlainTextBorrowersFormatter.java HTMLBorrowersFormatter.java XMLBorrowersFormatter.java