4 Principles
Encapsulation
Abstraction
Inheritance
Polymorphism
Encapsulation
The hiding of data implementation by restricting access to accessors and mutators.
Abstraction
Representation of data in which the implementation details are hidden.
For examplem, the development of classes, objects, types in terms of their interfaces and functionality, instead of their implementation details.
Abstraction is used to manage complexity (decompose complex systems into smaller components).
Inheritance
The ability to derive new classes from existing classes.
Polymorphism
Polymorphism describes a pattern in object oriented programming in which classes have different functionality while sharing a common interface.
Eg. shape object.