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