The Four Pillars of Object Oriented Design | theleancoder