Дэн Щербаков ⚛️
99 subscribers
22 photos
50 links
Канал для фронтенд-разработчиков о том, как развиваться и увеличивать зарплату.

Senior Frontend Developer с 6 годами опыта. За этот период увеличил зарплату почти в 7 раз.

Начинайте тут: https://yangx.top/code_lab/280
加入频道
ООП, утренние заметки.

Вчера посмотрел перед сном лекцию, которая уложила в моей голове непонятки про ООП. Делюсь тем, что получилось.

ООП - это про сложную промышленную разработку. Тысячи классов, распределенные на сотни разработчиков... Другие парадигмы не так удобны для этой цели. Хотя мое сердце принадлежит ФП, я признаю роль объектного проектирования.

Базовые концепции:

- Инкапсуляция. Это скрытие устройства класса от посторонних. Разработчик в команде не должен знать все классы - это контрпродуктивная трата времени. Каждый пишет свой модуль - остальные предоставляют интерфейсы и публичные методы.

- Абстракция. Суть почти та же, что у чистоты функций в ФП. Абстрактный класс описывает общие для наследников переменные и методы, но не определяет их все.

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

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

- Наследование. Оно связывает классы в иерархии. Конкретные классы наследуют абстрактным, еще более определенные - им, и так далее. В JS пользуются кейвордом externds.

Проблема ООП - избыточность. Цепочка наследования тянет данные и методы, которые не используются. ФП свободно от таких проблем, но преимущества ООП не дают светлым силам функциональщины победить до конца. :)

#ООП
Терминология ООП и Java

- Геттеры также называют аксессорами. Access - доступ.

- Сеттеры называют мутаторами. Mutation - изменение.

- Инициализатор - код, срабатывающий до корнструктора. В Java заключается в { }. Может быть статическим.

#ООП #Java
Подробно о статике

- Статическая сущность - принадлжедит самому классу, а не его экземплярам.

- Статическими бывают переменные, методы, инициализаторы и даже вложенные классы.

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

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

- Статические инициализаторы выполняются только для самого первого объекта класса.

- Также они могут быть использованы для инициализации статических переменных.

- Статические методы работают только с другими статическими сущностями.

#ООП #Java