Foundations of Object-Oriented Analysis and Design

Instructor

Philipp K. Janert, Ph.D.

Syllabus

  1. Objects
    • Data & Operations
    • OO: Bundle operations with data
    • Classes and Objects
    • Object: State, Behaviour, Identity
    • Class: Abstraction and Encapsulation
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. Design Patterns 1
    • State Diagrams (Review)
    • Factory Patterns:
      • Factory Method
      • Virtual Constructor
      • Builder
  8. Design Patterns 2
    • Roles Review
    • Structural Patterns:
      • Facade
      • Adaptor
      • Proxy
    • Behavioural Patterns:
      • Template Method (Skeleton Implementation)
      • Strategy
      • State
  9. Special Topics 1
    • Typing: Strong vs. Weak, Static vs. Dynamic
    • Reflection
  10. 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.