AbstractionA simplified representation of something more complex.
Definitions:
In software engineering, it is a technique for managing complexity of computer systems.
PolymorphismThe ability of an object to behave in multiple ways.
Definitions:
A concept in type theory that allows objects of different types to be treated as objects of a higher level type.
EncapsulationBundling of data and methods that work on that data within one unit.
Definitions:
In object-oriented programming, it is a procedural barrier that prevents the data and code being interacted with directly, and it can only be accessed through the object.
InheritanceThe mechanism of creating new classes from existing ones.
Definitions:
In object-oriented programming, it is a way to form new classes (instances of which are called objects) using classes that have already been defined.
ModularitySeparation of a program into independent and interchangeable modules.
Definitions:
In software design, it is a design technique to separate functionalities into different, independent entities.
CompositeA design pattern designed to simplify the use of collections of objects.
Definitions:
In software engineering, it is a pattern that allows treating individual objects and compositions of objects uniformly.