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