Java software solutions foundations of program design - Lewis, John (Addison Wesley, 2003)