Head first object-oriented analysis and design - McLaughlin, Brett D. (Head first series, 2007)