Understanding Object-Oriented Programming with JAVA - Budd, Timothy (2009)