Pedagogical Pattern #28
Using Design Patterns as a context in which to teach Fundamental Components of Object Oriented Systems
(Version 1.0)
Jane Huang
Governors State University
University Park, IL 60466 USA
ghuangj@govst.edu
Intent:
To expose students to the fundamental principles of good object-oriented design.
Motivation:
There are certain fundamental principles on which good object oriented systems are based.
Experienced programmers are familiar with these principles and have found them to be necessary
ingredients in the design of robust and reusable systems. Design Patterns Demonstrate how
these principles can be implemented to solve specific kinds of problems, and therefore provide a
rich context in which to teach these principles.
Applicability:
This Pedagogical pattern can be used in any non-beginner type object-oriented course, to teach
the fundamental principles of object-oriented design, or to demonstrate how these principles
might be implemented in a specific programming language.
Structure:
- 1. Select a Design Pattern that implements the Principle
- Determine the design principle that is to be focused upon, and select a design pattern that
clearly and concisely demonstrates how this principle might be implemented within a
specific context.
- 2. Discuss the Design Principle
- Use a short discussion or lecture to explain the design principle in terms of its purpose and
the expected outcome of applying it.
- 3. Present the Design Pattern
- Demonstrate how the design principle has been implemented within this pattern in the
following steps:
-
- Select one of the following methods to introduce the design pattern:
A formal presentation using class and state diagrams.
The Concrete to Abstract Pedagogical Pattern.
The Incremental Role Playing Pedagogical Pattern.
- Focus on the section of the design pattern that implements the principle. Observe
how classes and objects collaborate to solve the problem.
- Give an actual example, in which the design pattern has been implemented.
- 4. Work on a problem.
- Introduce a simple design problem that can be solved using this particular design pattern.
Divide the students into small groups, and have each group design a solution to the
problem that utilizes the technique or pattern being taught, and uses the specified design
pattern. The required components could include class diagrams, class interfaces,
implementation code or any combination of these items that provides the optimum
practice for the selected topic.
- 5. Present Solutions
- As many groups as possible should be given the opportunity to display their solutions.
One possibility is to assign each available blackboard to a group and have the groups
simultaneously display their results on the board. Each group can then be given a few
minutes to present key points from their solutions.
- 6. Discuss Solutions
- There should be an open class discussion of the solutions that have been displayed. Each
group should not only present their solution, but discuss how the underlying principles
have been implemented, and the expected advantages of such implementation.
- 7. Individual Practice
- The instructor can set a simple homework assignment that requires the students to
individually design a solution to a given problem by focusing on the technique or principle
being taught.
Consequences:
- Provides students with the opportunity to collaborate with others to solve a problem,
thereby fostering confidence in individuals, and encouraging listening skills.
- Exposes students to the skill of applying a known solution to a given problem, instead of
"reinventing the wheel".
- Introduces fundamental Object Oriented principles, and provides students with the
opportunity to design a simple system in which these principles have been considered.
Implementation:
- A Design Pattern must be selected that clearly illustrates the Object Oriented Principle that
is to be taught without complicating the issue by being too complicated.
- The examples used to illustrate the design pattern must be ones that can be easily
understood by the class, and the group exercises that are set must be based upon problem
domains with which the majority of students are familiar.
- Group dynamics should be discussed with the class before the group exercises take place,
so that each individual is able to fully participate in the process.
- If this method is used on more than one occasion, the groups should be altered so that
different people have the opportunity to work together.
Related Patterns:
None.
Example Instances:
Teaching principles of Object Oriented Design such as:
- Favor Object Composition over Class Inheritance
- Program to an interface and not an implementation
- Strive for loosely coupled classes
Teaching Techniques of Object Oriented Programming such as:
- Polymorphism
- Methods of communication between different types of objects.