Обновить

Java ООП: 4 принципа, которые стоит понимать, а не просто заучивать

Уровень сложностиПростой
Время на прочтение16 мин
Количество просмотров7.1K
Всего голосов 3: ↑2 и ↓1+1
Комментарии6

Комментарии 6

ООП?

Ща начнется... А платить кто будет?

Мужик вбегает в пивную:

- Бармен, быстрее, кружку пива, пока не началось, пока не началось!

Бармен наливает ему кружку пива, мужик залпом выпивает ее и кричит:

- Бармен, быстрее, пока не началось, еще кружку, пока не началось!

Бермен:

- А платить кто будет?

Мужик, усталым голосом:

- Ну вот, началось...

В следующем примере я бы скорее написал что start это лишь сигнатура метода. Иначе новичков может путать абстрактный класс vs интерфейс, но с "абстрактными" методами

interface Vehicle { void start(); // Абстрактный метод - без реализации

В примере Transport маленькая опечатка. Один раз 0,15 это 15 рублей, а дальше 5 это 5 рублей.

За использование композиции респект, но я бы предал ему ещё больше значения. Один раз работал в проекте, где иерархия доходила до 7 уровней: Каждый раз когда нужно было добавить ещё атрибутов, добавляли новый абстрактный класс (*facepalm*). Композиция бы сделала жизнь разработчиков значительно легче.

Спасибо за статью. Было приятно освежить в воспоминаниях Java

автору лайк, но есть вопрос,скорее риторический, почему бы не объяснять на примере excel? ведь класс это "шаблон" пустой бланк, справка , любой типовой документ(не заполненный ) это класс, паспорт, к примеру, с фоткой и именем - экземпляр, без - класс. а абстракция это тот же паспорт но натыканый в excel документ, и его можно брать и сделать загранник и мы уже сделали новый клас от абстракции и ТД и тп. я уже давно понимаю классы не как что-то "близкое к человеку", а как некую структуру ( но это моя шиза), но учили меня именно Person new Person или Car new Car, это ужасно путало. наболело амсори

ООП — это мощный инструмент, который помогает организовать сложный код.

Rich Hickey с этим не согласен.

Далее мой личный бред (поэтому не стоит воспринимать его серьёзно): ООП это всего лишь конструкт над "сообщением" - следующий этап развития языков программирования после процурных, где программа это в конце концов огромная процедура с ветвлениями. ООП говорит по другому: вот есть типы - объекты или иерархия объектов (абстракция), они сами знают как им работать (исполнять код), их реализация скрыта (инкапсуляция) от внешнего наблюдателя, они выставляют наружу свой интерфейс (контракт) (полиморфизм) и принимают сообщения и сами могут отравлять сообщения другим объектам. Наследование это просто переиспользование общего кода иерархией - делегирование выполнения родительским типам. И таким образом мы можем выстраивать программу более сложную по структуре, но легче для понимания и написания программистом, чем процедуры - просто через обмен сообщениями.

Ну как-то так - прошу сильно не пинать - все вышесказанное это обобщение.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации