Object -oriented design using Java - Skrien, Dale (McGraw Hill, 2009)