Object-oriented software construction - Meyer, Bertrand (Bertrand Meyer, 1997)