Наследование Inheritance в ооп - проблемы которые могут возникнуть

Поделиться
HTML-код
  • Опубликовано: 22 окт 2019
  • В этом видео описаны проблемы которые появляются при использовании наследования в объектно ориентированном (ооп) программировании.
    Видео о преимуществах использования композиции - • Композиция Composition...
    Наследование скорее вредит чем помогаем в написание нашего кода.
    matthiasnoback.nl/2018/09/fin... в этой статье на английском автор обьясняет почему он принял решение не использовать наследование вообще.

Комментарии • 19

  • @KickFuel
    @KickFuel 3 года назад

    Почему так мало подписчиков, такой канал топовый, автор объясняет все ну максимально понятно, большим каналам стоит поучиться. Автору второй раз за день респект:)

  • @cleverscript
    @cleverscript 4 месяца назад

    В примере с корзиной, будет ошибка Deprecated: Creation of dynamic property FastBasket::$items is deprecated in ... т.к св-во приватное, что бы ее не было нужно сделать protected

  • @vincentvega1903
    @vincentvega1903 4 года назад

    Спасибо

  • @duckmanllxo6a
    @duckmanllxo6a 4 года назад +1

    на ноль делить нельзя - это не проблема инкапсуляции, а проблема в самом методе подсчёта

  • @victoriam6569
    @victoriam6569 4 года назад

    Насколько это всё относится и к имплементации?

    • @livecodingschool8906
      @livecodingschool8906  4 года назад

      Не уверен что понял в чем вопрос, имплементации это какое то решение в коде которое мы реализует. Можете вы имели ввиду инкапсуляция ?

    • @victoriam6569
      @victoriam6569 4 года назад

      @@livecodingschool8906 Я хотела узнать насколько, по-вашему, тема относится не только к наследованию (использованию родительских классов), но и использованию интерфейсов.

    • @victoriam6569
      @victoriam6569 4 года назад

      ... и заодно к множественному наследованию, трейтам?

    • @livecodingschool8906
      @livecodingschool8906  4 года назад +1

      @Victoria M тема данного видео относится только в наследованию интерфейсы и трейты оно не затрагивает.

  • @igoreksazonov
    @igoreksazonov 4 года назад +4

    Больше не согласен с автором чем согласен, если это как в примерах php то на скорость не ВЛИЯЕТ (ну не критически), если только в конструкторе базы нет тяжёлых запросов итп что уже неверно.
    1. Должна быть продумана архитектура приложения так чтобы не было проблем
    2. В пункте с деливери и скидками можно использовать трейт
    3. SOLID
    4. Пример с setItem возможен если у людей кривые руки или неправильная архитектура которая этот айтем размывает между классами, наименования по SOLID.
    Ну т.е. проблема конечно есть, но зависит от программиста.

    • @livecodingschool8906
      @livecodingschool8906  4 года назад +4

      спасибо за комментарий. 1 - как правило требования меняются/добавляются уже посте того как что-то сделано так что заранее что-то придумать нет возможности. 2 использование traits это уже не наследование не понятно почему вы здесь со мной не согласны ). 3 наследование нарушает ( потенциально нарушает) первые три условия S O L. 4. Вопрос вы будете уверены что ни чего не сломаете если относледуете дочерний класс скорее всего да но вот если наследование продолжится на 100% быть уверенным быть нельзя, а вдруг вам нужно поменять в родительском классе - (у вас 4 потомка и 3 подпотомка ) вы все еще так же уверенные в том что ничего не сломается ? какие бы примые руки небыли с наследованием потенциально вероятность ошибки возрастает . Оно вам надо ? Если говорить о простом скрипте то здесь все можно в одном файле уместить а вот если в проекте сотни тыс строк кода здесь нужно бы задуматься

  • @gcomsu5819
    @gcomsu5819 Год назад

    Наследование применять когда оно уместно, а функционал классов контролировать интерфейсами.

  • @spoki89
    @spoki89 4 года назад

    А решение какое? Через композицию?

    • @livecodingschool8906
      @livecodingschool8906  4 года назад +1

      да решение в следуюдщем видео

    • @free115
      @free115 4 года назад +2

      @@livecodingschool8906 Уточняйте пожалуйста, какое видео. У меня например отображается следующее видео "Неудержимые 3". А в целом видео понравилось.

  • @valentinknoll4106
    @valentinknoll4106 2 года назад

    Лучьше 2-3 дубляжа, чем один швейцарский нож с надписью на рукоятке "Костыль"

  • @FigisBadralov
    @FigisBadralov Месяц назад

    Можно вообще обойтись без наследования. Вот язык Go вообще обходится без него. Да, там есть any, композиция. Но как-то можно. И это вообще антипатерн, как оказалось после использования C++, Java

    • @sardaucar
      @sardaucar Месяц назад

      На мой взгляд это не проблема наследования, а проблема проектирования класса. Если у вас возникли проблемы, значит вы неверно спроектировали класс.

    • @FigisBadralov
      @FigisBadralov Месяц назад

      @@sardaucar да, всегда надо планировать разработку