Функциональное программирование — парадигма программирования, в которой процесс вычисления трактуется как вычисление значений функций в математическом понимании последних.
Императивное программирование — это подход программирования, в которой задаётся последовательность действий, необходимых для получения результата.
Идеологически ООП — подход к программированию как к моделированию информационных объектов, решающий на новом уровне основную задачу структурного программирования: структурирование информации с точки зрения управляемости.
Объектно-ориентированное программирование — это парадигма разработки программных систем, в которой приложения состоят из объектов.
Класс — это описание того, какими свойствами и поведением будет обладать объект. А объект (экземпляр) класса — это экземпляр с собственным состоянием этих свойств.
«Свойства» — это переменные, которые являются атрибутами какого-то объекта (их называют полями объекта). Аналогично «поведение» — это функции объекта (их называют методами), которые тоже являются атрибутами объекта. Разница между методом объекта и обычной функцией лишь в том, что метод имеет доступ к собственному состоянию через поля.
<aside> 📌 Имена классов принято называть с большой буквы (PascalCase), а имена переменных, в которые помещаются экземпляры класса — с маленькой (camelCase).
</aside>
Инкапсуляция (от лат. in capsule — в оболочке) — это заключение данных и функционала в оболочку; объединение данных и поведения в одном классе.
В объектно-ориентированном программировании в роли оболочки выступают классы: они не только собирают переменные и методы в одном месте, но и защищают их от вмешательства извне (сокрытие).
<aside> ‼️ Важно! Инкапсуляция не является сокрытием. Сокрытие — это часть инкапсуляции.
</aside>
Полиморфизм (от греч. poly — много и morphe — форма) — один из главных столпов объектно-ориентированного программирования. Это свойство системы, позволяющее иметь множество реализаций одного интерфейса.
Полиморфизм позволяет классам переопределять поведение супер-класса.
<aside> 📌 Супер-класс — это класс, от которого наследуется или который реализует этот класс.
</aside>
Понятие «полиморфизм» в программировании тесно связано с типизацией или, если быть более точным, c системой типов.
<aside> 📌 Полиморфизм подтипов является истинным полиморфизмом.
</aside>
Все то, что во время компиляции или исполнения программы может содержать или обрабатывать значения различных типов — является полиморфным, например: