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.
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
Specifically, you'll be responsible for the
following:
Singleton
Class Adapter
Template Method
State
Proxy
Chain Of Responsibility
Composite
Iterator
Bridge
Mediator
Observer
Abstract Factory
Factory Method
As well as any architectural patterns covered in
class before the exam
Process:
RUP
(Know the phases and workflows, iterative and incremental process)
What is the argument as to why an iterative process is a "better"
practice
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, State Diagrams,
Activity 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