Двач,а поясни за ООП, конкретнее за кастратский ООП у которого отобрали множественное наследование?
Я про Java\C# и прочие "современные" cладкие хлебушки. Меньше ошибок - хуй, "талантливый" погромист обосрётся везде.
При этом: -композиция это "имеет" -наследование это "это" -интерфейс это "может"
В итоге мы можем сгондобить костыль через интерфейс, но чото петушинно оно, да и "не повторяйся" нарушается.
Проще? Так тоже хуй. да и вообще тогда лучший ОО язык это СИ, или вовсе ассемблер, там нету нихуя ООП, а значит проще И да, изосрать весь код смесью говна и спагетти юзая GOTO(C#) значит дохуя пиздато, энтерпрайз и вообще просто, хорошо, читаемо, и сокращает ошибки. А унаследовать от двух классов - нет.
>>885325 >С++ - OOP И сразу нахуй. Более уёбищной реализации и искажения всей идеи ООП мир не видовал. Но так как кресты сами по себе - нагромождение недоразумений, то для типичной крестобляди это может быть даже не очевидно.
>>885314 (OP) >А унаследовать от двух классов - нет. Как в крестах, чтоб потом разруливать ромбовидные наследования - развлечение для дегенератов. К тому же в 2016 даже в джяваговнах есть трейты/функциональные интерфейсы, так что все твои предьявы invalid. Иди лучше проспись.
>>885314 (OP) Давай поясню за .NET и C#. C# работает на CLR, CLR допускает множественное наследование тот же CLR/C++ или элементарно на уровне MSIL. На самом деле в C# возможно множественное наследование, но не возможно ромбообразное(оно не поддерживается на уровне CLR), а так как все классы наследуют от System.Object, то используюя только C#, любое множественное наследование - ромбообразное. Если хочешь использовать множественное наследование, то гугли, способы реализации там точно были, но в целом это плохая практика.
множественное наследование не нужно. интерфейсы не нужны. абстрактные методы тоже не нужны. private разрешает методам родителя быть вызванным в потомках. инкапсуляция ломается на раз-два.
привет вам из мира руби, сверх-высокоровнего-яп, и т.д. и т.п.
>>885684 в руби есть интерфейсы, только ты их сам описываешь и выносишь в примеси и абстрактные методы там реализуются и используются в рельсах. привет ApplicationController, ApplicationModel, ApplicationView. Инкапсуляцию это дисциплина а не стена от индусов, если не будешь писать нормальные интерфейсы и под ними закрытые методы то ты пидор
>>885707 Матц это она. То есть на первую работу устроился уже? Ну малаца дальше работай старательно пару лет и может поумнеешь. 6кк закачек там потомучто в руби вкатились такие специалисты как ты. Если ты не можешь написать метод и в нем написать raise и тебе для этого надо ставить гем, то ты именно что объектный слесарь. Тебе надо на уровне языка новый кейворд добавить чтобы это костылем перестало быть?
>>885730 но я не пишу на рельсах :3 А про метц я говори Sandi Metz, которая продвигает ооп идеи у рубистов. Матцумото не особо то и хороший программист, как и дизайнер языков. Я пишу на функциональных языках и ору с того как ты говоришь что тебе не нужны интерфейсы и что в руби они костыльные. В руби они самые что ни на есть честные, чисто модуль с функциями который ты подмешиваешь в другие классы. Но если ты такое не понимаешь то это твои проблемы. Абстрактный метод реализовать как нехуй, это метод в миксине который кидает ошибку. В классе куда ты его подмешаешь ты должен будешь его переопределить.
> ору с того как ты говоришь что тебе не нужны интерфейсы и что в руби они костыльные. В руби они самые что ни на есть честные
Такой смешной))) Интерфейсы в руби не честные или нечестные. Из-под коробки их нет. Хочешь, пишешь свой миксин, который будет ко-ко-ко абстрактным, ко-ко-ко кидать экспепшены, если он (миксин) включен в класс, но не реализован; и т.п. штуки.
> Абстрактный метод реализовать как нехуй.
Это неважно, тезис в том что абстрактного метода нет из-под коробки.
Все что ты можешь, это говорить: 'это _просто сделать_ поэтому и некостыльно'. Мастер аргументации)))
Но факт остается фактом, в одном случае ответственность за проебанный вызов лежит на тебе, а в другом — тоже на тебе, но есть помощник в виде компилятора и стандартов языка, что не даст забыть отрезать тебе свои ручки)
>>885822 Все с тобой понятно. Ты дебил и надеешься что компилятор выпрямит твои кучерявые клешни. Так вот нихуя :3 Тебе ваще сколько лет? Кому ты пиздишь, что ты что-то там зарабатываешь. Ты же даже на ебаные вопросы на джуниора не ответишь, это как раз как сделать абстрактный метод в руби и определить типовый класс. Из коробки ему блять подавай, а поебаться тебе не завернуть? Личинка инженера
>>885370 >Наследование вообще в принципе в 90% случаев может быть заменено на композицию без особых проблем. Поясните за эту фразу. Уже сколько раз ее слышал в подобных тредах, но так и не могу уяснить нахуя это вообще нужно? В чем профиты композиции перед наследованием? Почему плохо - пользоваться встроенными в язык инструментами и зачем надо изобретать свои?
хотя бы затем, чтобы я не плакал, видя как очередной сердобольный пишет код вида:
## # abstract def method end
А еще отсутствие стандарта в языке или его библиотеке порождает дохуя вариаций на тему.
В жопу такой way и ооп.
Хотя бы AbstractCallError < StandartError добавить в основную библиотеку, а то приходится использовать позорный NoImplementError, что не отражает сути проблемы.
---
Дали полиформизм, дали обрубленную инкапсуляцию, а дальше ебись как хочешь, Вась. Отсюда рождаются кловуны как этот >>885751, что незнают что писать +чисто модули+ с (абстрактными) 'функциями' в руби -- идиотизм чистой воды.
---
А динамические природа языка меняет ооп, привнося duck typing, что частично компенсирует отсутствие интерфейсов в чистом их виде. Но не объянять все это школьнику выше.
>>887170 Придурок блять, что такое дак тайпинг? И что такое класс типов? и нахуя нужны интерфейсы? Наверное затем, что мы хотим чтобы некоторые разные типы(классы) обладали некоторым одинаковым интерфейсом, но реализовывали свое поведение по разному. ООП у него меняется. твое ебланское представление об ооп основано на таких ублюдках как джава и прочие поделия. ООП это когда ты описываешь систему в виде объектов, которые обмениваются сообщениями. Дак тайпинг это и есть правильный интерфейс, сообщение одно, объекты разные. А ну пиздуй назад в свою джава пещеру.
>>887399 А в чем проблема-то? ПИЧОТ от того что ваши абстрактные теоретические понятия никому не нужны, а нужны простые прикладные решения?
Вообще у вас какое-то обострение нынче, в половине тредов идет ООП срач, в котором участвует какой-то дурачок (не ты ли?) верещащий что джава-с++ это не ооп, и вообще все в меире все делают неправильно
Я про Java\C# и прочие "современные" cладкие хлебушки.
Меньше ошибок - хуй, "талантливый" погромист обосрётся везде.
При этом:
-композиция это "имеет"
-наследование это "это"
-интерфейс это "может"
В итоге мы можем сгондобить костыль через интерфейс, но чото петушинно оно, да и "не повторяйся" нарушается.
Проще? Так тоже хуй. да и вообще тогда лучший ОО язык это СИ, или вовсе ассемблер, там нету нихуя ООП, а значит проще
И да, изосрать весь код смесью говна и спагетти юзая GOTO(C#) значит дохуя пиздато, энтерпрайз и вообще просто, хорошо, читаемо, и сокращает ошибки.
А унаследовать от двух классов - нет.