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:
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 weakly-typed languages
Modules and Mixins
Dispatch (single, multiple)
Generics and Type Erasure in strongly-typed langauges
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
Databases:
The Database is a Detail
Fundamentals of NoSQL/NewSQL a la MongoDB (concepts not syntax)
Sockets:
Socket Communication in C (C++/BOOST.asio) (low-level)
I/O Multiplexing
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
Know
the fundamental structure of an Essential Use Case
Know the fundmental structure of a User Story
What
are some difficulties with Use Cases?
What
is a Use Case Model Survey?
Why
are Use Cases and User Stories useful? What are they used
for?
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.)
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.
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
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.