topical media & game development

talk show tell print

object-oriented programming


object-oriented programming

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.



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


  • the handle/body idiom
  • virtual self-reference
  • dynamic role switching
  • the art of hush programming

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


  • 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


  • 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.

object-oriented programming


  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.

object-oriented programming

Further reading

For an introduction to Java, there is ample choice. An excellent online tutorial can be found on . 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].

(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.