Principles of Object-Oriented Software Development
[] readme course preface 1 2 3 4 5 6 7 8 9 10 11 12 appendix lectures resources

talk show tell print

Summary

This chapter has introduced the idioms and patterns of object-oriented programming. We looked at a polymorphism in Java and C++, and discussed assertions in C++ and canonical class idioms.

Polymorphism

1



slide: Section 2.1: Polymorphism

In section 2, we proceeded with a fairly detailed discussion of the idioms in hush, which illustrate basic solutions to problems occurring in the development of frameworks.

Idioms in hush

2



slide: Section 2.2: Idioms in hush

Further, we looked at how these idioms are related to patterns that provide a solution on the level of design.

A catalogue of design patterns

3


  • creational patterns
  • structural patterns
  • behavioral patterns

slide: Section 2.3: A catalogue of design patterns

Following the treatment of idioms and patterns in hush, section 3 gave an overview of the catalogue of design patterns presented in  [GOF94]. The catalogue includes creational, structural and behavioral patterns.

Event-driven computation

4


  • the Reactor pattern
  • abstract event systems

slide: Section 2.4: Event-driven computation

In section 4, we discussed the reactor pattern, which provides a generalization of event-driven software architectures. We concluded with looking at an example of a simple temperature-monitoring system, implemented using events to maintain internal consistency.

Questions

  1. How would you explain the letter/envelope idiom?
  2. Characterize the notion of polymorphism. Give some examples.
  3. What is a canonical class? Characterize its ingredients and give an example.
  4. Give a brief description of the handle/body idiom, virtual self-reference, and dynamic role switching.
  5. What kinds of patterns can you distinguish? Why do you consider patterns to be of relevance?
  6. Give a detailed description of the Factory pattern and also of the Observer pattern.
  7. Describe the Reactor pattern. Why is it useful?
  8. Give an example of a system based on event-driven computation.

Further reading

For an introduction to Java, there is ample choice. An excellent online tutorial can be found on http://java.sun.com/docs/books/tutorial . As textbooks on C++ I recommend  [Lippman91], and for the more advanced reader  [Stroustrup98]. For an extensive introduction to STL, read  [STL].  [Coplien92] is the original introduction to idioms in C++. The by now classical book for patterns is  [GOF94]. Well worth reading are the many articles in the POPL proceedings,  [POPL1],  [POPL2] and  [POPL3].



[] readme course preface 1 2 3 4 5 6 7 8 9 10 11 12 appendix lectures resources
eliens@cs.vu.nl

draft version 0.1 (15/7/2001)