Syllabus
- Objects
- Data & Operations
- OO: Bundle operations with data
- Classes and Objects
- Object: State, Behaviour, Identity
- Class: Abstraction and Encapsulation
- Inheritance
- Liskov Substitution Principle
(Subclass is specialization of base class)
- Single, Multiple, Polymorphism
- Overloading and Overriding
- Benefits of Inheritance:
- Higher Level Abstractions (Conceptual Grouping)
- Reuse (Implementation Inheritance)
- Policy Enforcement (Type Inheritance)
- Uses for Polymorphism
(GUI Widget Sets and Simulations, among others)
- Mixins
- Class Diagrams 1:
Classes, Attributes, Operations, Generalizations
- Classes and Objects - Meaning and Relationships
- Inheritance Review
- Interface (Type) vs Implementation Inheritance
- Types of Base classes:
Default Impl, Final Impl, Abstract, Interface, Mixin
- Problems with Inheritance:
- Coupling between Sub- and Super-Class
- Language Support for Dynamic Binding
- Typing too inflexible (language dependent)
- Polymorphism less general than assumed
- Risk of modelling confusion
- Containment: Aggregation & Composition
- Class Diagrams 2: Association, Multiplicity
- Object Behaviour and Requirements Analysis
- Aggregation Review
- Class Diagrams 3: Visibility, Associations
- Sequence Diagrams
- Use Cases: Title, Actor(s), Goal, Description
- Keep Use Cases concise and to the point
(The One-Page-Principle)
- "Scenarios" as specifc sequence of steps
within a larger Use Case
- Object Modeling
- From Use Cases to Object Models
- CRC Cards
- From Object Models to Implementation
- Technical and Domain Models
- Architectural Layers, Business and Technical Objects
- Application Domain (TO) - Controllers
- Business Domain (BO)
- Infrastructure Domain (TO)
- Foundation Domain (BO) - Data Structures
- State Diagrams
- Roles and Responsibilities
- Non-functional Requirements:
- Performance
- Reliability (Mean-time between failure)
- Scalability
- Robustness (Behaviour in the presence of errors)
- Security
- Maintainability
- Extendability
- Availability (Planned uptime)
- Roles: (more info)
- Data Object (Information Holder)
- Container (Structurer)
- Manager/Event Dispatcher (Controller, Coordinator)
- Functor/Operator
- Relationship
- Interfacer
- Service Provider
- Factory
- Activity Diagrams
- Design Patterns 1
- State Diagrams (Review)
- Factory Patterns:
- Factory Method
- Virtual Constructor
- Builder
- Design Patterns 2
- Roles Review
- Structural Patterns:
- Behavioural Patterns:
- Template Method (Skeleton Implementation)
- Strategy
- State
- Special Topics 1
- Typing: Strong vs. Weak, Static vs. Dynamic
- Reflection
- Special Topics 2 - Closing
- Final Exam Review
- Double Dispatch
- Class Retrospective
- Q & A
- Closing
Prerequisites
No previous programming experience is required, although
it is certainly helpful.
No experience with an object-oriented language is
required. All material in the course will be applicable
to any language or programming environment. Examples in
the class will be given in C++, Java, Python, Ruby.
Books
Recommended
- UML Distilled, 3rd ed by Martin Fowler (ISBN: 0321193687) -
2nd ed also acceptable!
- Applying UML and Patterns (3rd ed)
by Craig Larman (ISBN: 0131489062)
- Object-Oriented Analysis and Design by Grady Booch
(ISBN: 0805353402)
Further Reading
- Agile Software Development by Bob Martin (ISBN: 0135974445)
- Fundamentals of Object-Oriented Design in UML
by Meilir Page-Jones (ISBN: 020169946X)
- Object Design: Roles, Responsibilities, and Collaborations
by Rebecca Wirfs-Brock and Alan McKean (ISBN: 0201379430)
- The Object Primer by Scott W. Ambler (ISBN: 0521540186)
- The Unified Modeling Language User Guide (2nd ed)
by Grady Booch, James Rumbaugh, Ivar Jacobson
(ISBN: 0321267974)
- Design Patterns by Gamma, Helm, Johnson, Vlissides
(ISBN: 0201633612)
Assignments and Grading
Each week, there will be a homework assignment. Assignments
are due at the beginning of the next class.
Late assignments will not be accepted.
Assignments are expected to be neat print-outs of typed text.
No hand-written assignments will be accepted. For diagrams and
drawings, either print-outs from computer drawing programs or
neat hand-drawn diagrams are acceptable.
Please make sure that each assignment carries your name in the upper
right hand corner of the first page. If there are several pages,
please number them in the bottom right.
Submitting assignments as softcopy (computer files) is only
acceptable in exceptional circumstances and by prior arrangement
with the instructor.
Assignments 1-6 will be graded as Credit/NoCredit only. Each
Credit will be worth one point.
The last assignment (assignment 7) will count as a take-home
final and be worth six points. There will be two weeks time
to complete it, and it will be due on the second-to-last day
of the class.
Of the 12 totally available points, you need 9 (i.e. 75% of the
total) to pass the course.
Attendance
You must attend at least eight of the ten class sessions to
pass the course.
|