Object oriented programming is a technique where programs are written as objects. Some common object oriented languages are C++, Smalltalk, and Java. Object oriented programming models real world entities like people, things, and concepts as objects that have properties and functions. Classes are collections of similar objects that define their characteristics. Object oriented programming is based on real world modeling, reuseability, information hiding, and polymorphism.