CONQUERING OBJECT-ORIENTED DESIGN IN JAVA: A DETAILED MANUAL