Object-oriented software development using Java : principles, patterns, and framework - Jia, Xiaoping (Addison Wesley, 2002)