Java 5.0 Program Design by James P. Cohoon & Jack W. Davidson