Java software solutions : foundations of program design - Lewis (Pearson/Addison-Wesley, 2009)