Java software solutions : foundations of program design - Loftus, William (Addison Wesley, 2003)