CS2704: Object-Oriented Software Design and Construction
Spring 2000
Midterm Exam Topics
The midterm exam will be held at the beginning of class. The exam will
be "close book and close notes."
You should be able to do the following.
-
Object-Oriented Programming
-
Describe the difference between procedural and object-oriented design (task
and subtasks vs. objects and interactions)
-
Rationale for object-oriented programming (why is it a better solution
compare to some other methods?)
-
Describe the different design strategies (abstraction, separation, composition,
generalization)
-
Abstraction: What is it? Properties of good abstraction. How abstraction
corresponds to classes and objects. How does it help reusability.
-
Separation: What is it? How does it help flexibility and extensibility?
-
C++ Issues
-
Identify classes and objects
-
Describe the anatomy of a C++ class
-
Access control (private, public)
-
Function overloading
-
Use of modifiers: const, static (for methods and member data)
-
Scope and lifetime
-
Automatic vs. Dynamic objects
-
Use constructors and destructors to manage problems with dynamic memory
(deep copy vs. shallow copy)
-
Operator overloading
-
Use of friend methods
-
Describe the advantages/disadvantages of inlining.
-
Type conversion (explicit vs. implicit)
-
Design
-
Class diagram notation
-
Represent class relationships
-
Evalute class design
-
Proper documentation (coding conventions: naming, file arrangements)
-
Aggregation: What does it mean? How one is setup?
-
Association: What does it mean? How one is setup? How does it differ from
aggregation?