Object-oriented software engineering : using UML, Patterns, and Java - Brügge, Bernd; Dutoit, Allen H. (Pearson, 2010)