Java programming fundamentals : problem solving through object oriented analysis and design - Nair, Premchand S. (CRC, 2009)