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:
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
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.