Title: COMS S1007 Object-Oriented Programming and Design in Java
1COMS S1007Object-Oriented Programming and Design
in Java
2Final Exam Logistics
- 825 Mudd (usual classroom)
- Thursday, 540-840pm
- Note the start time
- No calculators, books, notes, electronic devices,
etc.
3Whats 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
4Assigned 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
5Assigned Readings
- Event handling
- 9.6 9.10
- Threads
- chapter 20
- Networking
- chapter 21
- Exceptions
- chapter 11
- Data structures
- chapters 15 16
- Design patterns
- not in the book!!
6Whats 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
7Format 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
8Studying 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
9Taking 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
10More advice
- Concept questions
- Dont write too much, but try to be detailed
- Give an example if you cant explain it
- Problem solving and analysis
- Show your work to get partial credit
- Clearly state any assumptions you make
11More advice
- Find the bugs question
- Look for compile-time (syntax, semantic) errors
before trying to find logic errors - Be sure its 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
12Classes 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
13Java 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
14Coding 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
15Designing 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
16Interfaces Inheritance (9.1 9.5, 10.1 10.8)
- Interfaces collection of abstract methods
- Polymorphism
- Inner classes
- Inheritance
- Abstract classes
- Object the global superclass
17Graphics 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.
18Testing (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
19Event handling (9.6 9.10)
- Event sources and listeners
- Not just for GUI events
- Java GUI Listeners
- MouseAdapter
- MouseMotionAdapter
- KeyAdapter
- ActionListener
- MouseEvents, KeyEvents, ActionEvents
20Networking (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
21Threads (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
22Exceptions (11.1 11.6)
- Exception hierarchy
- The try/catch/finally blocks
- Throwing exceptions
- Custom exceptions
23Data 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
24More 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
25Design 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
26Final Exam Logistics
- 825 Mudd (usual classroom)
- Thursday, 540-840pm
- Note the start time
- No calculators, books, notes, electronic devices,
etc. - Chapters 1-12, 15-16, 18, 20, 21