COMS S1007 Object-Oriented Programming and Design in Java August 12, 2008 Final Exam Logistics • 825 Mudd (usual classroom) • Thursday, 5:40-8:40pm – Note the start time • No calculators, books, notes, electronic devices, etc. What’s on the final exam? • All material covered in lecture • Programs discussed in lecture and posted on the class website • Assigned readings – Emphasis will be on material covered in class Assigned Readings • Java basics – chapters 1-7 • Designing classes – 8.1 – 8.9 • Software Engineering – chapter 12 • Software Testing – 2.8, 3.6, 5.5, 7.8, 8.10; slides from 7/10 • Interfaces, Inheritance – 9.1 – 9.5, 10.1 – 10.8 • Graphics – 2.11 – 2.13, 3.9, 10.9 – 10.11, chapter 18 Assigned Readings • Event handling – 9.6 – 9.10 • Threads – chapter 20 • Exceptions – chapter 11 • Data structures – chapters 15 & 16 • Networking • Design patterns – chapter 21 – not in the book!! What’s NOT on the final? • Extra material in textbook, such as: – Common Errors – How Tos – Quality Tips – Productivity Hints – Random Facts – ….unless covered in lecture!! • Advanced Topics covered last week Format of the exam (tentative) • • • • • • 10-15 short-answer “concept” questions 2-3 problem solving and analysis 4-5 writing Java methods 1-2 writing Java classes 1-2 “Find the bugs” questions 3-4 determining output of Java code Studying for the exam • Review your class notes, particularly the descriptions of Java classes and APIs • Review and make sure you understand the source code that we looked at in class and in the textbook from the assigned readings • Review the comments made on your homeworks • Office hours by appointment on Thursday Taking the exam • Note how much each question is worth • Look through the entire exam and start by working on problems that you think you can do quickly and that are worth a lot of points • Read the questions carefully to see what is expected of you • Ask the proctor if you have any questions More advice • Concept questions – Don’t write too much, but try to be detailed – Give an example if you can’t explain it • Problem solving and analysis – Show your work to get partial credit – Clearly state any assumptions you make More advice • “Find the bugs” question – Look for compile-time (syntax, semantic) errors before trying to find logic errors – Be sure it’s a bug (look out for tricks) • Writing Java code – You are graded on accuracy of syntax and semantics (your code must “compile”) – Pay attention to stylistic issues – You will not be provided with any API docs, except for classes not previously seen Classes you should know well • • • • • • Math: random, pow, sqrt… String: charAt, indexOf, size… Scanner: constructors, hasNext, next, nextLine… JFrame: setSize, setVisible, add… Graphics: setColor, drawString, fillOval… Object: equals, hashCode, toString, clone… • These are not the only ones that may appear on the exam, but are the ones you should know best Java Basics (chapters 1-7) • • • • • • • OOP: classes and objects Encapsulation: public and private Methods and constructors Object references and aliases Pre- and post-increment Lazy evaluation of boolean expressions Call-by-reference vs. call-by-value Coding style • • • • • • • Avoid calling the same method multiple times Use lazy evaluation Use constants User errors vs. programmer errors Avoid side effects Member variables vs. local variables Aliasing a parameter Designing classes (8.1 – 8.9) • Classes vs. methods – Classes are nouns, methods are verbs • Cohesion: everything belongs together • Coupling: co-dependence • Side effects: modifying an object passed as an explicit parameter Interfaces & Inheritance (9.1 – 9.5, 10.1 – 10.8) • Interfaces: collection of abstract methods • Polymorphism • Inner classes • Inheritance • Abstract classes • Object: the global superclass Graphics and Java GUIs (2.11 – 2.13, 3.9, 18.1 – 18.4) • JFrame and its methods • JComponent • Drawing with the Graphics object • Java Swing components – JPanel, JTextField, JButton, etc. Testing (2.8, 3.6, 5.5, 7.8) • The “assert” statement • Unit testing – White box and black box testing – Boundary values and equivalence classes • Integration and systems testing • Regression testing Event handling (9.6 – 9.10) • Event sources and listeners – Not just for GUI events • Java GUI Listeners – MouseAdapter – MouseMotionAdapter – KeyAdapter – ActionListener • MouseEvents, KeyEvents, ActionEvents Networking (21.1 – 21.5) • The ServerSocket class – constructor binds to a port – “accept” method waits for a connection • The Socket class – “connect” method connects to a port • Input and Output streams Threads (20.1 – 20.5) • Why use threads? • The Thread class and Runnable interface • Invoking a new Thread and important methods – start: begins a new thread of execution – run: starting point of executable code • Race conditions • Locks and synchronization Exceptions (11.1 – 11.6) • Exception hierarchy • The try/catch/finally blocks • Throwing exceptions • Custom exceptions Data structures (15.1 – 15.4) • Linked Lists – LinkedList and ListIterator class • Stack: LIFO, push/pop • Queue: FIFO, add/remove – Either can be implemented with arrays or with LinkedLists More Data Structures (16.1 – 16.10) • Set: add, remove, contains • Map: get, put • Hashing functions and hash tables • Trees and traversal techniques • Heaps and Heapsort Design Patterns • What are design patterns used for? • What are the three GoF classes of patterns? • Singleton: limit to a single instance • Composite: treat a collection of objects with the same interface as individual ones • Observer: publish/subscribe Final Exam Logistics • 825 Mudd (usual classroom) • Thursday, 5:40-8:40pm – Note the start time • No calculators, books, notes, electronic devices, etc. • Chapters 1-12, 15-16, 18, 20, 21