CONQUERING FUNDAMENTAL DESIGN IN JAVA: A DETAILED EXPLANATION