Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
COMS S1007 Object-Oriented Programming and Design in Java August 7, 2007 Final Exam Logistics • Thursday, 5:40-8:40pm • No calculators, books, notes, electronic devices, etc. • Graded exams will be available for viewing starting next Tuesday 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 Interfaces, Inheritance: 9.1 – 9.5, 10.1 – 10.8 Graphics: 2.11 – 2.13, 3.9, 18.1 – 18.4 Testing: 2.8, 3.6, 5.5, 7.8 Event handling: 9.6 – 9.10 Threads: 20.1 – 20.5 Networking: 21.1 – 21.5 Exceptions: 11.1 – 11.6 Data structures: 15.1 – 15.4, 16.1 – 16.7 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 • • • • • 10-15 short-answer “concept” questions 4-5 writing Java methods 1-2 writing Java classes “Find the bugs” question 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 • Use the discussion board on CourseWorks 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 • 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 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) • Understanding Java code – Review the different APIs to know what they do 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 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 – 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 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 line of execution – run: starting point of executable code • Race conditions • Locks and synchronization 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 Exceptions (11.1 – 11.6) • • • • • Exception hierarchy The try/catch/finally blocks Throwing exceptions Custom exceptions Using exceptions for control flow Data structures (15.1 – 15.4, 16.1 – 16.7) • Linked Lists – LinkedList and ListIterator class • • • • • • • Linked Lists vs. arrays Stack: LIFO, push/pop Queue: FIFO, add/remove Set: add, remove, contains Map: get, put Hashing functions and hash tables Trees Final Exam Logistics • Thursday, 5:40-8:40pm • No calculators, books, notes, electronic devices, etc. • Graded exams will be available for viewing starting next Tuesday