Java software solutions : foundations of program design - Lewis (Addison Wesley, 2001)