2002D Final Exam
- [25 points] Short Answer Questions
a) Explain the difference between an interface and an abstract base class in
the Java language
b) Can coupling exist between two Java interfaces? Explain why or why not?
c) What is a weakness of having two strongly coupled classes?
d) In an analysis object model, which of the three object types (entity,
boundary, controller) represents the interaction between actors and the
system?
e) Without using an example, define a functional requirement.
- [12 points] Some design patterns were covered.
a) The intent of the command design pattern is to encapsulate a request as
an object. Describe two consequences that result when using this design
pattern.
b) When using the Enumeration design pattern, describe some impacts that
occur when the underlying aggregate set is altered.
- [20 points] We discussed top-down and bottom-up integration.
a) Describe and explain two benefits of integrating software units in
top-down fashoin instead of bottom-up.
b) Describe and explain two benefits to integrating software units in
bottom-up fashion instead of top-down
- [15 points] We discussed some life cycles in this course.
a) How is the Shark Tooth Life cycle model more responsive to a client's
needs than the waterfall model?
b) Assume two projects are underway -- one following the waterfall model,
and one using the Shark Tooth Life Cycle -- and a major problem is
discovered after the high-level design has been completed. Assuming other
characteristics of these two projects are the same, explain what you would
do if you were manager of these two projects.
- [10 points] Please answer the question that is directly related
to the component you are implementing as part of your group project.
- [15 points] This question is focused on the "Design Evolution
Case Study".
a) The final evolution of this design includes the following class
structure. Provide two benefits of this final design over earlier designs.

b) In some solitaire games there are MoveType classes that represents the
drag of a card from one Model element to another. Why do these constructors
have three arguments as the following does:
MoveWasteToFoundationMove (Pile waste, Card movingCard, Pile foundation).