COSC 1P03 File Processing You've achieved success in your field when you don't know whether what you're doing is work or play. Warren Beatty (1937 - ) Data Structures and Abstraction 1.1 COSC 1P03 Classes Classes entities within a system imported e.g. Turtle of same project write more than one class Instances objects created via new Instance variables object’s memory state Methods things object can do behaviour System execution via interacting objects Data Structures and Abstraction 1.2 COSC 1P03 Methods Method calls local methodname ( paramlist ) of another object object . methodname ( paramlist ) this . methodname ( paramlist ) Behaviour depends on state e.g. effect of forward depends on pen state and direction methods refer to instance variables can base actions on values of instance variables loops, decisions Role of constructor well-defined initial state Data Structures and Abstraction 1.3 COSC 1P03 Case Study: Payroll System Problem Payroll report based on multiple binary data files Analysis & design entities items (Employees) details about item Payroll report generator process for generating report Merge algorithm Combine 2 binary data files into one. Data Structures and Abstraction 1.4 COSC 1P03 Employee Class Class not a main class no method main Execution only when methods (constructor) called Attributes/instance variables Algorithms/methods constructors default methods accessor/updater operations Data Structures and Abstraction 1.5 COSC 1P03 Persistent Objects Lifetime extends beyond a single program execution Binary I/O Record (object) at-a-time Serializable serialVersionUID BinaryOutputFile writeObject() subtype upcasting to Object always valid BinaryDataFile readObject() must downcast to expected type not a conversion ClassCastException Data Structures and Abstraction 1.9 COSC 1P03 Creating a Binary File MakeEmpFile class only used once to bootstrap system Employee records data from a text file (ASCIIDataFile) reads text record using Employee constructor writes Employee object using writeObject Data Structures and Abstraction 1.12 COSC 1P03 Listing Contents of a Binary File Working with internal representation cannot view using text editor must use same Employee class or won’t be able to read don’t make copy, use same file programs in same package or import necessary classe(s) (e.g. Employee) can be more than one main class in a package Listing Employee File program to read binary file and display as text in same package (Payroll_System) Creating the Employee File Payroll3 assumes Employee objects are already in existence must be a program to create Employee objects initially in same package (Payroll_System) Data Structures and Abstraction 1.14 COSC 1P03 Payroll3 Class Binary input note: no use of Employee constructor – objects already exist Processing algorithm process to EOF update record Data Structures and Abstraction 1.16 COSC 1P03 Class Design Cohesion Selective disclosure only what client needs to know hide representation and implementation Accessor and updater methods instance variables private if accessible, provide accessor method Java convention: getxxx if updateable, provide updater method Java convention setxxx pseudo attributes Methods/Constructors private vs public Data Structures and Abstraction 1.18 COSC 1P03 File Processing large collections of data sequential processing batch sequential devices typically sorted by key random processing real-time/on-line direct access device access by key key primary key Data Structures and Abstraction 1.19 COSC 1P03 File Merge combine two like files maintain key order basic algorithm by hand combine sorted piles rationale by computer files & records algorithm improvements sentinel pattern filter method Data Structures and Abstraction 1.20 COSC 1P03 E.g. Employee File Merge HIGH_KEY key for sentinel record greater than all naturally occurring keys termination condition getRec input filter creates sentinel object at EOF Equal keys? unique records? error situation vs duplicate keys vs combine records Data Structures and Abstraction 1.21 COSC 1P03 File Update master file transaction file transactions updating random processing immediate sequential processing batch transactions batch processing new master file Data Structures and Abstraction 1.25 COSC 1P03 Sequential File Update sequential processing batched transactions backups report generation key comparison master < trans transaction applies to later master master = trans transaction applies to this master master > trans must apply to earlier master no master for transaction error add new record pattern Data Structures and Abstraction 1.26 COSC 1P03 The End Data Structures and Abstraction 1.34