In object oriented programming, class is a fundamental unit to solve a problem. The way you design, assign responsibilities, and create a hierarchy of classes to build an maintainable and extendable application is always a fundamental challenge software developer faced for decades. A tons of material, books has written on…