This Document Last Edited: Thu Apr 25 11:10:01 1996 by jnw (Joseph N. Wilson) on aviator.cis.ufl.edu
Final Examination Study Guide
The questions and exercises below are representative of the level of
detail and type of material that might be asked on the final examination.
The final examination will contain about 15 questions.
This document may be updated at any time.
- What is the yo-yo problem and why is it almost inherent in
any OOPL?
- What is the difference between mapping and iteration
approaches to executing code across a collection of objects.
- What is an abstract class? Name some abstract collection classes
from the Smalltalk class hierarchy.
- What relationship does the Law of Demeter have to the concepts of
coupling and cohesion?
- Cite an example of coupling in Budd's solitaire program.
- Why is it potentially dangerous for an OOPL to provide slicing
of objects upon assignment? What valuable property of OO code
does slicing remove?
- How do Dylan and C++ differ (in broad terms) with respect to
generic function overload resolution?
- What is a deferred method and why would one use such a method?
- Argue that polymorphism (as implemented in C++) is not a source
of inefficiency in program execution.
- Cite some of the results of the differing views of variable bindings
employed by C++ versus Smalltalk and Dylan. (This difference was
characterized by your instructor as the assembly language
versus lisp view of a variable.) Give benefits and
drawbacks for both views.
- Why is it critical to have a garbage collector in a Smalltalk
system and not with C++?
- Explain why assignment overloading would be impossible in C++
if the language did not support reference parameters.
- Cite at least one problem with the use C++ macros.
- What does the term CRC stand for? Give an example of a CRC
card for some class in a program you've written.
- Discuss the fundamental differences between inheritance and
aggregation. How can you easily decide which should be used
in any situation?
- What is the container problem?
- Cite benefits and drawbacks of static versus dynamic binding
of methods to messages. Why would true polymorphism be
impossible without some form of dynamic binding?
- What is an active value? What OOP techniques support the use of
active values?
- Explain how the keywords
public
, private
,
and protected
control the accessibility of C++
objects, but not the visibility of those same objects.
- Argue both for and against using garbage collection in C++.
This document is copyright 1996 by Joseph N. Wilson.