Object-Oriented Software Engineering: practical software development using UML and Java - Laganiere, Robert (McGraw-Hill, 2001)