Introduction to Software Design with Java - Robillard, Martin P. (Springer International Publishing,)