Lessons on Object Oriented Programming