Object-oriented software development using JAVA : principles, patterns and frameworks - JIA (Addison Wesley, 2001)