ООП

Полиморфизм

Полиморфизм — реализация задач одной и той же идеи разными способами

ПРИМЕР

Мы сделали программу Календарь
Создали функцию getDay()

Ожидается, что человек введет цифру от 1 до 31
getDay(23)

С помощью полиморфизма мы можем не переживать, если человек введен "Один" вместо ожидаемого "1"

Мы просто сделаем возмонжность чтения и целочисленных данных и строковых
getDay(1) = getDay(Один)

Абстракция

Не является основным принципом ООП
Люди всё еще спорят об этом
Абстракция — отделение концепции от ее экземпляра

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

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

ПРИМЕР

Есть класс АВТОМОБИЛЬ
В него мы запишем общие характеристики автомобиля
Вес = 1 тонна
Количество колес = 4
Мест в салоне = 5
Распололжение руля = слева

Я хочу сделать класс BMW
Мы понимаем, что у него есть общие характеристики с классом АВТОМОБИЛЬ, поэтому мы сделаем его дочерним от этого класса
Тем самым нам не придется вновь писать количество колес или мест в салоне, а вот переопределить вес и расположение можем
Вес = 1,5 тонны
Расположение руля = справа

Класс Lexus
Наследуем от Автомобиля
Вес = 1,7 тонны
Мест в салоне = 7

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

Инкапсуляция — свойство языка программирования, позволяющее пользователю не задумываться о сложности реализации используемого программного компонента, а взаимодействовать с ним посредством предоставляемого интерфейса, а также объединить и защитить жизненно важные для компонента данные.

ПРИМЕР

Товар стоит 200 рублей
Программист ввел переменную price = 200

В игре появилась акция, где на товары сделали скидку в 50%
То есть, товар должен стоить 100 рублей

Если мы изменим значение переменной price, в будущем мы можем столкнуться с ошибками в цене

Чтобы такого не произошло, создаются функции getPrice() и setPrice(), где мы будем использовать ссылку на переменную

Тем самым, мы сможем изменить значение ссылки на переменую price = 100, но сама переменная не измениться, и когда пройдет акция, значение останеться таким же.

Сайфутдинов Даниил