CONQUERING FUNDAMENTAL DESIGN IN JAVA: A COMPREHENSIVE EXPLANATION