Object-oriented software engineering using UML, patterns, and Java - Brügge, Bernd; Dutoit, Allen H. (Pearson Education Limited, 2014)