The object-oriented Thought Process (second edition)