Course Overview: Design patterns have become a major emphasis of reuse in object-oriented systems. Whereas traditional reuse is aimed largely at code reuse, the reuse of design patterns is targeted at reapplying “ways of doing things” across many different problem domains. A design pattern is essentially a design template that developers can use by supplying their own classes for those in the template. As such, patterns provide application-independent vehicles of solution reuse.
Students of this two-day advanced object-oriented design course will learn how to develop and use patterns. This course presents several useful patterns, then challenges students both to apply some of those patterns to various problems and to develop and document new patterns for other problems.
Target Audience: This course is beneficial to individuals who are engaged in object-oriented development and who are also interested in the development or use of design patterns. A significant portion of this class involves laboratory exercises in which students apply and develop patterns.
Prerequisites: The attendee should possess a thorough understanding of basic object-oriented concepts and should have some experience with object-oriented design or programming. Knowledge of the Unified Modeling Language (UML) design notation is helpful, but knowledge of a particular programming language is not required.
Introduction: A brief discussion of the goals of the course. What patterns are and how they differ from code-based reuse. Three different types of patterns. Guidelines for and measures of system flexibility, and how patterns contribute to such flexibility. A brief discussion of the design notation (UML) to be used.
Specifying Patterns: The use of a “pattern language” to codify pattern so that the patterns can be reused by others. The language to be used in this course. (The general form will be that of Gamma et al.) The UML notation for documenting the application of a pattern in a design.
Using Patterns: The development of designs of several small examples that illustrate the development and application of design patterns. Interspersed in the presentation are numerous student labs that require both applying and discovering patterns.