Object-Oriented Programming

The restrictions of the imperative programming are mostly related to data structural issues. Functions and data structures cannot be combined intrinsically, the programmer has to take the burden of keeping them consistent.

Object-oriented programming focuses on the principles of data encapsulation and code reusage. With these principles very complex data structures (mostly containers) can be implemented in a way that the user need not necessarily know the internal mechanisms. Simple code resuage is enabled by different mechanisms such as the use of already implemented data structures as well as simple methods of enhancement. For object-oriented programming there are several distinct features:

Identity is the quantization of data in discrete, distinguishable entities called objects.
Classification is the grouping of objects with the same structure and behavior into classes
Polymorphism is the differentiation of behavior of the same operation on different classes
Inheritance is the sharing of structure and behavior among classes in a hierarchical relationship

The features identity and classification are grouped in the object-based mechanism. Various languages offer this mechanism. All features together are the object-oriented paradigm which can be used, e.g., in Java, C++, and other object-oriented languages.