Exam Study Guide

 

 

You will be responsible for all assigned reading and all lecture content.  That is a lot.  Focus on central, key concepts!

 

The topics I will test you on will include the following general topics:

 

Central OO Concepts:

 

Inheritance (single, multiple, interface, implementation)

Polymorphism (issues in binding)

Encapsulation

Composition

Abstraction

Class vs. Object (Key concepts of classes and objects)

Difference between an operation (semantic) and a method (implementation)

Class constituents (Name, Attributes, Operations)

Abstract Classes

Inheritance vs. Composition (When would you use one over the other?)

 

Central Topics:

 

Reuse (Inheritance, Composition)

Aggregation/Composition

Know Brooks’s distinction between Essential and Accidental Complexity, Silver Bullet essay

What is modular programming?  It’s benefits?

What is a model and why do we model?

Difference between Interface and Implementation

 

Design Patterns:

 

Know every pattern we’ve covered and presented in class up to and including 2/23/2009.  Focus on their UML representation and their key concepts and the problem they attempt to solve (motivation).

Know what a Design Pattern is.

Be able to recognize the patterns we’ve covered from their UML representation.

Know the structure of a design pattern

 

Process:

 

RUP (Know the phases and workflows, iterative and incremental process)

Know why RUP is allegedly better than the traditional waterfall method

XP (Know the basic tenets of XP and Agile processes)

 

Analysis Modeling:

 

Know the fundamental structure of a Use Case

Why are Use Cases useful?  What are they used for?

What are Analysis Classes?  Why are they used?

What are some difficulties with Use Cases?

What is a Use Case Model Survey?

 

 

UML

(Know ALL forms covered in class.  KNOW THE SLIDES!).  This includes:

Association

Aggregation

Generalization

Dependency

Association Class

Multiplicity/Cardinality

Composition

Realization

Qualification

Dynamic Modeling (Sequence Diagrams, Collaboration Diagrams)

 

 

 

 

Sample Exam Questions from past exams:

 

1.                  In UML, discuss the differences between a generic association and composition.  In addition to explaining the difference, show an example of the UML notation used for both.

 

2.                  What is an Abstract Data Type?  Give some examples.

 

3.                  Creating analysis classes is a waste of time.  They rarely make it into design intact, and create a real pain when you have to keep the analysis model in sync with the design model.  Best not to mess with them, and dive right in to design from the Use Cases.  Do you agree or disagree?  Provide persuasive arguments in your defense.

 

4.                  Consider an ATM design of an ATM machine located at a Jewel grocery store.  If you were defining some Use Cases, which of the following would be good examples of Actors?  (Circle ALL that apply)

 

1.                  The Jewel’s night watchman

2.                  The bank’s employee who replenishes the cash supply in the ATM.

3.                  The home bank’s mainframe that holds security information for the ATM.

4.                  Any bank customer who has an ATM card.

5.                  Any Jewel customer who does not have an account at the bank

6.                  Any employee of the Jewel who replenishes stock at the Jewel where the ATM is located.

 

5.                  I’m designing a GUI application, and I’d like the user to be able to click on an icon, and while holding down the control key, drag a copy of (clone) that icon to some other location.  Thus, I want to instantiate a new object based on one that’s already on the screen at runtime.  Problem is, I don’t know in advance which icon(s) will be on the screen, and I don’t want to have to burden the Framework with knowledge of all the possible icon types.  What pattern would you suggest I use as a model?

 

1.                  Observer

2.                  Builder

3.                  Visitor

4.                  Prototype

5.                  Flyweight

 

6.                  In their article “How Architecture Wins Technology Wars”, published in the Harvard Business Review, Morris and Ferguson make some interesting and politically incorrect statements about architecture and the open source movement.  According to Morris and Ferguson, how does Architecture Win Technology Wars?  Do you agree or disagree with their argument?  Discuss.

7.         Consider the following UML diagram [picture of UML diagram presented].  What pattern is described?

8.        Here is a description of a small application.  Produce a use case diagram for this application, along with a class diagram for the application, along with one sequence diagram detailing the activities of a single scenario of your choice.

9.        Discuss polymorphism.  Why is it important in the concept of OO design and programming.  Give a specific example.