Object-Oriented Design Course Material
Lectures
The following are last year's lectures. They will gradually be replaced
by updated material through the term.
- 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.
- Testing of Object-Oriented Software [pdf] with an example of
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)
- Package, Component, Deployment Diagrams
[pdf]
(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)
- Quality of Design:
- Design Patterns
- Introduction to Design Patterns [pdf]
- Creational:
- Singleton - [pdf]
(GoF p. 127 - 134)
- Factory - [pdf]
(GoF p. 87 - 95)
- Structural:
- Composite - [pdf]
(GoF p. 163 - 169)
- Adapter - [pdf]
(GoF p. 139 - 150)
- Proxy - [pdf]
(GoF p. 207 - 210)
- Behavioural:
- Command - [pdf]
(GoF p. 233 - 238 and 62 - 64)
- Observer / Template Method - [pdf]
(GoF p. 293 - 300)
- Visitor - [pdf]
(GoF p. 331 - 336)
- Combining Design Patterns [pdf] (not for final exam!)
(GoF Chapter 2. p. 33 - 77)
- Final Review
Tutorials
- Python mini-tutorial
(link to an old mini-tutorial given in COMP 206).
- Quick Tutorial on databases: pySQLite [pdf].