Большие проблемы наследования в ООП

Большие проблемы наследования в ООП

ExtremeCode

4 года назад

176,678 Просмотров

Ссылки и html тэги не поддерживаются


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

MoRoZoK Gaming
MoRoZoK Gaming - 19.11.2023 02:59

наследование не нужно, ексепшены не нужны, а дальше... програмиирование не нужно, интернет бесполезен ...

Ответить
андрей скиба
андрей скиба - 08.11.2023 11:14

музыкальное сопровождение шикарно

Ответить
Aleksandr Palachev
Aleksandr Palachev - 05.11.2023 17:40

10 тыс лайков от горе программистов

Ответить
Aleksandr Palachev
Aleksandr Palachev - 05.11.2023 17:39

автор сам создал проблему и обвинил в этом наследование. Ясно

Ответить
Nadir Nazirov
Nadir Nazirov - 03.11.2023 18:57

Код в C# написан или Java?

Ответить
Andrei Petrov
Andrei Petrov - 02.11.2023 00:34

Пример с пробелами наследования какой-то дебильный. Паттерн стратегия тоже как-то невместно тут прилеплен. Но таки да постоянно всё наследовать текая же тупость как везде к месту и не к месту влеплять стратегию. Я бы даже сказал, что в основном лучше не надо.

Ответить
Intivi
Intivi - 10.10.2023 14:58

У меня только один вопрос... Нет, я понимаю, что, наверное, есть проекты, в которых без всей этой чертовщины обойтись сложно (но это неточно), но вам не кажется, что обычные структуры с битовым масками дают гораздо больше гибкости и, что более важно, дают абсолютное понимание логики работы?
Какие-то шаблоны, статичные классы, интерфейсы, наследования... Для чего? Для чего этот весь геморрой? Неужели для упрощения разработки? Но эта разработка не выглядит упрощенной! Наоборот, она выглядит усложненной.
ООП определенно свернуло куда-то не туда.

Ответить
Игорь Сухарев
Игорь Сухарев - 22.09.2023 02:34

Слоны на самом деле умеют плавать

Ответить
Никита Аюханов
Никита Аюханов - 20.09.2023 22:01

Очень интересное решение. А в шарпах нет миксинов?

Ответить
Владислав Безуглый
Владислав Безуглый - 14.09.2023 14:54

Можно более подробный разбор последнего примера ? А-то я вроде понял , но больше на интуицию , хотелось бы больше ясности в нем , что бы так сказать уверенно ступать и чувствовать твердый пол под ногами =D

Ответить
Вальдес
Вальдес - 09.06.2023 23:13

А можно было бы не заниматься херней и в базовый класс "Зверушки" добавить метод "Перемещаться", а конкректная реализация метода "Перемешаться" в конкректном классе "Рыбка" уже бы реализовала необходимое перемещение, а именно плавание

Другими словами нельзя городить абстактный класс "Средство_передвижения" с конкретным методом "Ехать", потому что он может и плавать и летать, все зависит от класса наследника который реализует конкректное поведение и конкректное средство_передвижения

P. S У абстрактного класса и методы абстрактные

Ответить
Halturin Evgeniy
Halturin Evgeniy - 28.04.2023 04:21

Всё классно, но вот про то, что исключения не нужны, это ты, конечно, хватанул. А как мне ещё быстро свернуть стек при завершении длинной рекурсии? Чё, скакать по ретурнам, как долбоящеру? )))))

Ответить
любитель больших пенисов
любитель больших пенисов - 29.11.2022 00:28

Слоны ес шо умеют плавать

Ответить
Shad X
Shad X - 17.11.2022 08:28

Я столько раз пытался тоже самое объяснить разрабам, но всегда встречал полное непонимание)

Ответить
Dmitriy Chinnov
Dmitriy Chinnov - 03.09.2022 07:49

Дык можно было же сначала определить метод передвижения, а в нем уже подтипы земля, вода, амфибия, червяк и тд.)) новичку не очевидно в чем проблема

Ответить
Мира Лущаева
Мира Лущаева - 31.08.2022 14:54

исключения — насилие над системой типов

Ответить
konst3d
konst3d - 07.08.2022 16:38

Чем опытнее кодер - тем реже он использует наследование реализации и чаще - наследование интерфейсов...

Ответить
angelo TrRiToN
angelo TrRiToN - 04.08.2022 13:18

Полезно, понятно, быстро и с музыкой! Однозначно лайк и спасибо! 😘

Ответить
Плавали, знаем.
Плавали, знаем. - 02.08.2022 21:54

Просто абстрактный класс нужно назвать Move. )))

Ответить
Романов Сергей
Романов Сергей - 10.06.2022 11:26

Зачем изменять родительский класс, если можно добавить недостающий функционал в дочерний...

Ответить
Алексей Доровской
Алексей Доровской - 02.06.2022 11:35

Нужно было создать метод "BAJOBATbC9_POD_XBOCT" для класса "ADEPT_OOP".

Ответить
AinTheCar
AinTheCar - 17.05.2022 12:09

Где мы говорим что все звери могут ходить, надо записать этот метод в абстрактный класс НЕ ДЕЛАЯ ЭТО САМЫЙ МЕТОД АБСТРАКТНЫМ, и всё, этот метод добавляется ко всем наследованным классам и нам не надо его реализовывать в каждом классе. К пингвину же мы добавляем его собственный метод плавания и всеееее. Или либо я такой тупой, что не понимаю всего того что городит Экстрим в первом примере, либо это у экстрима опять приступ шизофрении

Ответить
Tony
Tony - 13.02.2022 03:08

Почему бы не оставить дефолтную реализацию в абстрактном классе, а остальное выпилить в интерфейс? Значит и паттерн не нужно использовать.

Ответить
Толя Лахтанов
Толя Лахтанов - 07.02.2022 21:30

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

Ответить
Вадим Викторович
Вадим Викторович - 21.12.2021 00:12

Я под такую музыку иногда отхватывал и иногда сам кому-нибудь вкладывал на подмосковных дискотеках в начале нулевых))) А тут ООП.

Ответить
Loki Dismas
Loki Dismas - 16.10.2021 14:14

Автор не умеет выделять абстракции.

Ответить
MIXEL3D3
MIXEL3D3 - 11.10.2021 17:21

ExtremeCode: Хорошо что современные языки не поддерживают множественного наследования...
Тоже ExtremeCode: Делает множественную реализацию интерфейсов с дефолтными методами
🤡

Ответить
MIXEL3D3
MIXEL3D3 - 11.10.2021 16:58

Над было сказать: "Пример решения проблем наследования мостом и стратегией"

Ответить
ILYA ARLENKA
ILYA ARLENKA - 01.10.2021 22:38

Ты паходу и есть Life of Boris

Ответить
Danyyl Hidden
Danyyl Hidden - 23.09.2021 23:41

Penguin это модель данных, в ней не должно быть зависимостей. Попробуйте сделать стратегию с применением clean architecture. Вся логика обработки событий должна быть в сервисном слое. Этот пример не применим к реальным бизнес задачам.

Ответить
Raiziman
Raiziman - 22.09.2021 11:08

А зачем тебе абстрактный класс?

Ответить
Artiom Charin
Artiom Charin - 17.09.2021 07:57

Отличный пример хуёвого наследования. Достаточно было вместо базового "walk" въебать "move" . Дальше каждое блядское животное дополняет его характеристиками, в зависимости от эволюции. Но в целом топ.

Ответить
Temp1archik
Temp1archik - 06.09.2021 01:53

Слишком идеальный контент. Пишу комментарий, чтобы было понятно, что вы делаете лучшие туториалы на свете. И великолепным голосом

Ответить
ROMAN BUSH
ROMAN BUSH - 01.09.2021 01:50

И нахерена, когда можно все в один базовый класс записать и вызывать то что нужно, если это не противоречит

Ответить
Юрий Белоусов
Юрий Белоусов - 11.08.2021 12:35

Пример полная хрень, естественно нет ничего универсального. Это всё равно, что ругать кухонный нож за то что его нельзя использовать как метательный. Наследование позволяет решать класс задач и этого вполне достаточно, проблемы в голове автора.

Ответить
Саша Литовченко
Саша Литовченко - 29.06.2021 14:54

Классно! Помню как в рамках изучения JS писал терариум, так добавление каких-либо возможностей "жителям" иногда приводило к хорошим проблемам. А вообще мне понравилось)

Ответить
Ilia Salaur
Ilia Salaur - 28.06.2021 23:17

В плюсах есть множественное наследование...

Ответить
Chak Chaky
Chak Chaky - 20.06.2021 10:08

УЖААААССС) Как забить гвоздь микроскопом - это как раз про эти подходы)))) Сложно, код вынесен в кучу мест, модель получается раздробленная, логика вынесена вообще к авакову на кулички, УЖАССС!!! Это не программирование, а надувание щёк. Это не про творчество при программирование, а про потешание своего эго(...

Ответить
Chak Chaky
Chak Chaky - 20.06.2021 10:04

) ахахахаха)))))))))) Так проблема-то вовсе не в наследовании, а в абстрактных методах)))) Абстракции вообще надо только тогда, когда без них никак)))
Учите матчасть и будет вам наследование очень нравиться) Просто пишите как люди, а не как обизяны после крутых курсов))))
Я вообще в коде на crystal-lang отлично справляюсь ВООБЩЕ без абстракций простым наследованием и код ОЧЕНЬ внятный и понятный получается.

Ответить
Gena Bykin
Gena Bykin - 19.06.2021 01:19

Слоны умеют плавать

Ответить
Инквизиция Ютуба
Инквизиция Ютуба - 16.06.2021 01:28

Сплошная манипуляция. Начнем с того, что идет рассказ про абстракции, а в мэйне идет работа с конкретным типом. Ну да ладно, не будем придираться. Итак, абстрактный клас Animal, автор добавляет в него конкретный метод Walk вместо абстрактного Move и дальше начинает решать созданую самим же собой проблему. Наследование подразумевает перенятие основополагающей логики, а интерфейсы - обозначение второстепенной. И вот тут автор умолчал об основной проблеме предложенного им решения, а именно том, как экшоны будут менять состояние объектов на которых они висят. Чем более фундаментальный фунционал переносится в классы стратегии, тем больше доступа к данным для них нужно предоставлять. Т.е. решам одну проблему, но создаем другую.

Ответить
Александр Черныш
Александр Черныш - 15.06.2021 05:56

ну и где 3d демонстрация ходьбы и плаванья пингвина по нажатиям клавиш

Ответить
Павел Т
Павел Т - 01.06.2021 21:24

То есть про разделение интерфейсов в SOLID автор не слышал

Ответить
HR0N
HR0N - 15.05.2021 01:16

Ебу**я музыка! Из головы теперь не выходит...

Ответить
Slava
Slava - 10.05.2021 03:46

так подумал, в джаве таких проблем пока не наблюдается

Ответить