Object-oriented software construction - Meyer, Bertrand (Prentice Hall PTR, 1997)