SoftwarePractice.org: Home | Courseware | Wiki | Archive

Menu:

Module 5. Object Design

More detailed consideration of the nature of objects and their operations leads us into what is sometimes called "Object Design." In this module, we will look at the classical concepts of cohesion and coupling, which still apply today. We begin to design class operations through the principle of responsibility-driven design. We will also examine other aspects of quality object design, such as the Liskov Substitution Principle and the Fragile Baseclass problem.

Lecture material

Tutorial

The exercises from the Self-Study module can be worked through in class.

Self-study modules
This module contains a set of exercises on object design. Students explore the concepts of coupling and cohesion through examining extracts of object oriented designs from the textbook case study. The final exercise is a laboratory exercise that looks at how these concepts appear in Java code, and ways of reducing or increasing the degree of coupling or cohesion.
  • Object design :: pdf
Resources
  • Wirfs-Brock, Rebecca: Designing Objects and Their Interactions:  A Brief Look at Responsibility-Driven Design. In Scenario-Based Design, Editor John M. Carroll, Chapter 13, p.337
    This is a good article on responsibility-driven design. It traces designing objects from use cases through to object stereotype roles, responsibilities and collaborators.