Exam Study Guide

 

 

You will be responsible for all assigned reading and all lecture content.  That is a lot.  Focus on central, key concepts!  Everything below has one or more lecture slides associated with it.  If you can't remember what something is about, find the associated lecture slides.  There will be extra credit offered on the exam.  You may find studying in groups helpful.

 

The topics I may test you on will include the following general topics:

 

Central OO Concepts:


S.O.L.I.D. Principles

Inheritance (single, multiple, interface, implementation)

Polymorphism (issues in binding)

Duck Typing
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 and Abstract Data Types

Inheritance vs. Composition (When would you use one over the other?)


OO Langauge concepts:


Differences (general) between strongly-typed and loosely-typed languages

Modules and Mixins

Aggregation and Composition
Dispatch (single, multiple)

Central Modeling Topics:

 

Reuse (Inheritance, Composition)

Aggregation/Composition differences

Know Brooks's distinction between Essential and Accidental Complexity, Silver Bullet essay

What is modular programming?  It's benefits?  How is that a loaded term?

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 Class 8.  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

 

Requirements Modeling:

 

What are Analysis Classes?  Why are they used?

Concepts around Domain-Driven Design (Bounded Contexts, Ubiquitous Language, Domain Models, Building Blocks (e.g. Entites, Value Objects, Services, Modules, Factories, Aggregates, etc.), etc.)
What is a High Level Architecture?  (cf. Domain-Driven Design)

 

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)

 

Example Exam Questions:

 

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 (doing Analysis Modeling) 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.

 

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 Ferguson make some interesting and politically incorrect statements about architecture and the open source movement.  According to Morris and Ferguson, how does Architecture Win Technology Wars?  Do you agree or disagree with their argument?  Discuss.

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.

10.      What is Duck Typing?

11.      Describe each and every design flaw in the following UML diagram [UML diagram presented].

12.      What is the "I" in S.O.L.I.D.  Explain it to me.  I don't get it.