Transcript slides
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