Object-Oriented Software Construction (Prentice-Hall International series in computer science)