SOOAD Principles of OOP