ACHIEVING OBJECT-ORIENTED DESIGN IN JAVA: AN DETAILED MANUAL