"Object-Oriented Analysis and Design With UML" outline.
Chapter 1 - Introduction
Acknowledgement
What will you learn from this course?
What is abstraction?
What is a model?
Example: Model
Why do we construct models?
What is analysis?
What is "object-oriented" about object-oriented analysis?
What is design?
What is "object-oriented" about object-oriented design?
Why should we wait until design to think about implementation?
How can one problem have more than one solution?
Find four right answers
Which solution is best?
Metrics
History of objects
Chapter 2 - Iteration
"Waterfall" methodology
What's bad about the waterfall methodology?
A new methodology
What is an iteration?
How long is one iteration?
Lab
Monopoly dependency tree
Monopoly iterations
Summary of iterations 1 to 9
Iteration 1
Iteration 2
Iteration 3
Iteration 4
Monopoly board
Monopoly square information
Chapter 3 - Encapsulation
What is your savings account?
Why do I want to group together the pieces of data?
How do I group together the pieces of data?
Why do I want to group together the data and code?
How do I group together the data and code?
Is the code stored with the data?
What is encapsulation?
How could I misuse encapsulation?
Example: Misuse of encapsulation
Lab
Chapter 4 - Information Hiding
Should data be visible outside the encapsulation?
How can I stop data from being visible?
How can users write the data if it is hidden?
How can users read the data if it is hidden?
What is information hiding?
Example: Information hiding - the developer's view
Information hiding - the user's view
Lab
Chapter 5 - Object
What is an object?
Can objects model physical things?
Can objects model non-physical things?
How do I identify objects?
How do I identify candidate objects?
What is the grammatical approach?
What's difficult about the grammatical approach?
What is the brainstorming approach?
What's difficult about the brainstorming approach?
How do I eliminate the "wrong" candidates?
How do I say "object" in UML?
Lab
Chapter 6 - Operation
What is an operation?
How do I say "operation" in UML?
Lab
Chapter 7 - Collaboration
How do I ask an object to perform an operation?
What is a message?
Example: Message
What is a response?
Example: Response
Who can send a message to an object?
Why would one object send a message to another object?
Example: Objects sending messages to other objects
What is collaboration?
Push and pull
What is a message flow diagram?
How do I construct a message flow diagram?
The pass-the-baton game
Example: message flow diagram
Coupling
Lab
Chapter 8 - Sequence Diagrams
What is a sequence diagram?
Example: Sequence diagram
How to send a message to yourself
How to loop
How do I construct a sequence diagram?
Why should I construct a sequence diagram?
Different ways to draw a sequence diagram
Lab
Chapter 9 - Attribute
What is an attribute?
How do operations affect attributes?
How do I say "attribute" in UML?
What is a derived attribute?
Example: Derived attribute
How do I say "derived attribute" in UML?
Which is more important: operations or attributes?
Operations and attributes
Object or attribute?
Lab
Chapter 10 - Relationships
Object relationships
Kinds of relationships between objects
Lab
Chapter 11 - Link
What is a link?
How do I say "link" in UML?
Why does an object have links?
How many links can an object have?
What is a role name?
How to I say "role name" in UML?
Object type or role name?
How many links can two objects have between them?
Example: Many links between two objects
How do operations affect links?
Example: Operations affect links
What is the lifetime of a link?
How do I say "navigability" in UML?
Attribute or link?
Lab
Chapter 12 - Composition
What is composition?
About composition
Example: Composition hierarchy
Should I have a link or composition?
Composition
How do I say "composition" in UML?
Lab
Two definitions of game
Chapter 13 - Class
What if I have many objects that are similar?
Example: Similar objects
How can I apply abstraction to similar objects?
Example: Applying abstraction to similar objects
What is a class?
How do I say "class" in UML?
Lab
Chapter 14 - Instance
What is an instance?
Lab
Chapter 15 - Association
What if I have many links that are similar?
Example: Similar links
How can I apply abstraction to similar links?
Example: Applying abstraction to similar links
What is an association?
How do I say "association" in UML?
Association
Composition
Navigability
What is a reflexive association?
Eliminate redundancy
Lab
Chapter 16 - Multiplicity
What is multiplicity?
Example: Multiplicity
What if a 1-many must be in a particular order?
Example: Multiplicity is ordered
How do I say "multiplicity" in UML?
Which multiplicity is correct?
Marriage in Massachusetts
Lab
Chapter 17 - Inheritance
What if I have many classes that are similar?
Example: Similar classes
How can I apply abstraction to similar classes?
Example - Applying abstraction to similar classes
What is a superclass?
Example: Superclass
What is a subclass?
Example: Subclass
What is inheritance?
Terminology
Inheritance and Venn diagrams
Example: Inheritance hierarchy of animals
Example: Inheritance hierarchy of beer
More than one way to design a hierarchy
Lab
Common lab solutions
How does inheritance affect objects?
Example: Inheritance affects objects
Students are persons, but persons are not students
What is substitutability?
Example: Substitutability
To subclass or not to subclass?
To superclass or not to superclass?
Lab
Who inherits from whom?
What about substitutability?
A square cannot substitute for a rectangle
Example: Creating a superclass
How does inheritance facilitate reuse?
Example: Inheritance facilitates reuse
How do I say "inheritance" in UML?
Lab
Chapter 18 - Concrete/Abstract Class
What is a concrete class?
Do all classes have instances?
How could a class have no instances?
What is an abstract class?
How to convert a concrete superclass into an abstract superclass
How do I say "abstract class" in UML?
Lab
Chapter 19 - Multiple Inheritance
Can a class have more than one superclass?
What is multiple inheritance?
Example: Multiple inheritance
Do I inherit attributes multiple times?
Do I inherit operations multiple times?
Resolving ambiguity
Should I avoid multiple inheritance?
What to do if multiple inheritance is inappropriate
How do I say "multiple inheritance" in UML?
Some good examples of multiple inheritance
Lab
Chapter 20 - Interface / Implementation
What are the two aspects of operations?
What is interface?
What is implementation?
Why should I separate interface from implementation?
Why would the implementation change?
How do I say "implementation" in UML?
Example: Separating interface from implementation, 1
Example: Separating interface from implementation, 2
Example: Separating interface from implementation, 3
Lab
Chapter 21 - Polymorphism
What is polymorphism? (version 1)
What is polymorphism? (version 2)
What is overriding?
What is overloading?
Why would one interface have more than one implementation?
Example: Polymorphism, more work in subclass, 1
Example: Polymorphism, more work in subclass, 2
Example: Polymorphism, less work in subclass
Example: Polymorphism, different work in different subclasses
How do I say "abstract operation" in UML?
The 3 categories of operations in a superclass
How can I use polymorphism to write flexible code?
Example: Programming to the interface
Code with/without polymorphism
Lab
Chapter 22 - This chapter intentionally left blank
Chapter 23 - UML Design
How do I do design?
How do I add redundant associations for efficiency?
How do I save derived attributes to avoid recomputation?
How do I keep stored values accurate?
What is explicit update?
What is lazy evaluation?
How do I rearrange operations to increase inheritance?
How do I add missing arguments?
How do I add empty implementations?
What is delegation?
Example: Delegation
Example: Delegation, 2
How do I use delegation to share implementation?
How do I design associations?
What if the multiplicity is 0..1 or 1?
Example: Multiplicity is 0..1 or 1
What if the multiplicity is many?
What is a container class?
Example: Container class
Example: Multiplicity is many
How do I hide the implementation of associations?
What if the multiplicity is ordered?
How to choose a container class
Lab
Review
Chapter 25 - Reuse
What is reuse?
What isn't reuse?
How can I know what classes are available for reuse?
What does a reuse library do?
How does a reuse library work?
What is your reuse aptitude?
How can I reuse a reusable class?
What is a framework?
Chapter 26 - Case tools
Which case tools are available?
What features do I want in a case tool?
Chapter 27 - Portability
How do I write portable software?
Example: Firewall of objects for portability
Which systems have been built in this way?
Chapter 28 - Persistence
What is persistence?
How can I get persistence?
How do I do persistence myself?
How do I get persistence from a class library?
What object databases are available?
How do I store objects in a relational database?
Example: Firewall of objects for persistence
Where is the SQL?
Do the objects in the firewall represent tables?
Chapter 29 - Class Libraries
What class libraries are available?
Chapter 30 - Performance Tuning
When do I think about performance?
How do I plan in performance?
Where will the bottlenecks be?
How do I locate the bottlenecks?
How do I improve the performance of an implementation?
Philosophy
Chapter 31 - References
Books
Chapter 32 - Glossary
Chapter 33 - UML Syntax
Chapter 34 - UML to C++ and Java
Chapter 35 - The 9 Diagrams of UML
Object-oriented versus non-object-oriented
Communication diagram
State diagram
Activity diagram
Swim lanes
Component diagram
Deployment diagram
Use case diagram
What is a system?
How do I say "system" in UML?
What is an actor?
How do I say "actor" in UML?
What is a use case?
How do I say "use case" in UML?
Which actors participate in which use cases?
The wrong way to do use cases
Sample use case #1
How to eliminate the "how"
Sample use case #2
Things to notice
Happy path, unhappy path
Can a use case show conditional branching?
Can a use case show looping/repetition?