Object oriented software construction - Meyer, Bertrand (Prentice Hall international series in computer science, 1988)