CSSE 220: Object Oriented Software Development
Exam 2, Spring 2008-2009
What does this test cover?
This test allows you to demonstrate your understanding of:
- Object-oriented design (as in your VectorGraphics and Capstone projects):
- What is cohesion? Does good OO design call for low cohesion or high cohesion? Why?
- What is coupling? Does good OO design call for low coupling or high coupling? Why?
- What are immutable classes? Does good OO design call for mutable classes or immutable classes? Why?
- Why does OO design encourage the use of inheritance?
- Why does OO design encourage the use of interfaces?
- What are CRC cards and how are they used in OO design?
- What are UML class diagrams and how are they used in OO design?
- arrays and ArrayLists (as in ArraysAndArrayLists):
- Declaring and constructing arrays
- Looping through arrays
- Indexing into arrays
- Declaring and constructing ArrayLists (with generics)
- Looping through ArrayLists
- Indexing into ArrayLists
- Advantages of ArrayLists over arrays. Advantages of arrays over ArrayLists.
- Graphical User Interfaces using Swing: constructing and displaying JFrames, JPanels, JButtons, etc.
(as in SwingDemo, VectorGraphics, Capstone project)
- Event-driven programming: responding to button-presses, mouse-clicks, etc. (as in SwingDemo, VectorGraphics, Capstone project):
- How to respond to events
- Style: Who should respond to an event?
- Implementing is-a relationships (as in SwingDemo, VectorGraphics, Capstone project):
- How to pass objects to other objects:
- Through constructors
- Through setters
- Why pass objects to other objects
- Polymorphism (as in lecture notes and your textbook):
- What is polymorphism? Why is it helpful?
- Why do you sometimes need to cast objects? What is the notation for doing so?
- Why do you sometimes need to use the instanceof operator? What is the notation for doing so?
- Anonymous classes (as in lecture notes and your textbook):
- How to write an anonymous class
- Using variables from the outer class/method in the (inner) anonymous class
- Why use anonymous classes
- Threads (as in ThreadsIntro and your Capstone project):
- What is a thread?
- Why use threads?
- How do you use a Thread in Java
- Networking (as in NetworkingExamples and your Capstone project):
- What is a client-server architecture? Why use it?
- How do you construct a server and have it accept connections to Clients?
- How does a Client connect to a Server?
- How do you construct readers and writers for a Server or Client?
- How do readers and writers send and receive messages to/from Servers/Clients?
- What is blocking? Why is it dangerous? Which of the operations listed in previous subparts of this question might block? How do you deal with this?