Object oriented programming.

Stands on pillars of:

For good principles on OOP look at SOLID