The Object-Oriented Thought Process, 4/E by Matt Weisfeld