Some of the material in this book has been taken from jointly written papers. The material on the handle/body idiom in chapter 2 is due to Jacco van Ossenbruggen. The workgroup application in chapter 6 has been written by John Caspers. The section on architectural styles in chapter 7 is due to Bastiaan Schönhage. And the material in chapters 11 and 12 has been developed in close cooperation with Jacco van Ossenbruggen, Bastiaan Schönhage, Martijn van Welie, Frank Niessink, Dirk Bolier, Sam Megens and Paul Nash. I also thank my colleague Hans de Bruin for providing me with the material on software architectures; Thiel Chang, principal manager of ASZ Research and Development, and the ASZ/SanFrancisco team, consisting of Arne Bultman, Joris Kuipers, Ard van der Scheer, Remco van de Woestijne and Irmen de Jong, for their enthusiastic collaboration in an interesting project; and last but not least my students, who gave a fresh look on object orientation in their term papers.
For the first edition I owe thanks moreover to, in arbitrary order, Hans van Vliet, Henri Bal, Dick Grune, Cees Visser, Ira Pohl, John Caspers, and Matthijs van Doorn. Also, I thank Chris Dollin for his detailed and constructive comments on the first edition. And finally, my editors, Sally Mortimore, who got me the contract for the second edition, Keith Mansfield, who took over where Sally left off, Alison Birtwell and Karen Sutherland, for their assistance, Hedwig van Lier (from Pearson Education), for providing me with nice books, Julie Knight, who guided me through the production phase, Karen Mosman with whom I discussed the possibilities of an online version on a number of successive Web conferences, not forgetting Simon Plumtree and Andrew McGettrick for, as they will surely understand, `playing it by ear'.
The short musical phrases appearing at the beginning of each chapter are taken from The Notebook for Anna Magdalena Bach. Although other composers contributed to the `notebook', these phrases occur in a selection of pieces, composed by Johann Sebastian Bach, which are intended primarily for young players. Despite their apparent simplicity, however, they are acknowledged by experienced pianists as being hard to play properly, yet they are among the standard exercises for learner pianists. In a way this reflects the problem of teaching object-oriented programming. The concepts underlying object-oriented programming may at first seem deceptively simple (and not require the complexity of C++ or a type-theoretical analysis). However, in developing object-oriented models and applications some intrinsically difficult questions remain, for which we have no definite answer and which may even require extensive expertise and technology to come up with a partial solution. Returning to the music, I often find myself improvising, leaving the written music for what it is, a starting point.