Какие основные парадигмы ООП?

Совсем недавно начал изучать объектно-оринетированый язык C#, и в процессе изучения уже кучу раз сталкивался с разными терминами касательно его парадигм. Итак, какие же основные парадигмы ООП и что именно они означают?

Тема парадигм ООП очень доступно и развёрнуто раскрывается на протяжении всего курса C# Essential. Попробую вкратце разъяснить основы.

Парадигм ООП всего около 6:

- Инкапсуляция;

- Наследование;

- Полиморфизм;

- Абстракция;

- Повторное использование;

- Посылка сообщений.

Как правило выделяют эти 4: инкапсуляция, наследование, полиморфизм и абстракция.

Инкапсуляция - сокрытие реализации программных частей для безопасности, как правило, путём использования модификаторов доступа.

Наследование - создание нового объекта на основе старого.

Полиморфизм - побочный эффект наследования, возможность дополнять объект функционалом (как правило, классическим полиморфизмом считают замещение, переопределение методов).

Абстракция - придание объекту характеристик, которые чётко выделяют его на фоне остальных. Абстрагирование в ООП - это выделение значимых характеристик объекта, исключая незначимые. Асбтракция - это набор именно таких характеристик.