A set of lessons for learning object-oriented programming