COMS W1004 Introduction to Computer Science

Download Report

Transcript COMS W1004 Introduction to Computer Science

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