Object-Oriented Design Course Material
Lectures
- Intro to the course, overview of the course outline
- Software Processes [pdf] (note: pdf does not cover the Pfleeger material),
Chapter 2 (pp. 45 - 65) of Shari Lawrence Pfleeger. Software Engineering; Theory and Practice (Second Edition). Prentice Hall. 2001.
Note: eXtreme Programming (XP) is quite "extreme" in insisting on "merciless" refactoring.
Any refactoring operation (be it of code, or of a design) must however preserve "required" properties
(typically, functional requirements) while improving other properties (such as re-usability or non-functional requirements such as performance).
To give you a better idea of refactoring, www.refactoring.com has a
catalog of refactoring patterns.
-
Unit Testing in Python. Chapters 13 - 15 in Mark Pilgrim's Dive into Python.
- What does it mean to be Object-Oriented ? [pdf]
[OO examples (polymorphism etc.) in Python]
(Page-Jones Chapter 1. p. 3 - 49).
- UML
- What is? [pdf]
- Class Diagrams [pdf]
(Page-Jones Chapter 3. p. 85 - 101, Chapter 4. p. 107 - 130)
- Architecture Diagrams, Package Diagrams
(Page-Jones Chapter 7. p. 188 - 196)
- (Object-)Interaction Diagrams:
- Communication Diagrams (formerly known as Collaboration Diagrams)
[pdf]
(Page-Jones Chapter 5. p. 137 - 146)
- Sequence Diagrams
[pdf]
(Page-Jones Chapter 5. p. 146 - 160)
- Behaviour Diagrams:
Below this line is the material for the final exam.
- Higraphs [pdf],
Statecharts [pdf]
Page-Jones Chapter 6. p. 164 - 181 is optional reading. It is replaced by
David Harel.
On Visual Formalisms. Communications of the ACM, 31(5):514-530. May 1988.
(read pages 514 - 523)
The example Statechart "organically" grown using AToM3 during the tutorial:
tutorialExample_DCharts_MDL.py.
- Quality of Design:
- Design Patterns
- Creational:
- Singleton - [pdf]
(GoF p. 127 - 134)
- Abstract Factory [pdf]
(GoF p. 87 - 95)
- Structural:
- Composite - [pdf]
(GoF p. 163 - 169)
- Adapter - [pdf]
(GoF p. 139 - 150)
- Behavioural:
- Command - [pdf]
(GoF p. 233 - 238 and 62 - 64)
- Observer / Template Method - blackboard notes
(last year's presentations are very close to what appeared on the board:
[pdf1], [pdf2])
(GoF p. 293 - 300)
- Visitor [pdf]
(GoF p. 331 - 336)
- Final Review
Tutorials
- Python mini-tutorial
(link to an old mini-tutorial given in COMP 206).