Four Pillars of Object Oriented Programming