На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (8) « Первая ... 5 6 [7] 8  все  ( Перейти к последнему сообщению )  
> Инкапсуляция vs Агрегирование , размышления в различных реализациях (языках программирования)
   
Что считаете лучшим?
Гости не могут просматривать результаты голосования.
Гости не могут голосовать 
    Мне одному кажется, что в случае с квадратами и прямоугольниками начать следует с вопросов о том, какие еще будут сущности, что вообще делаем, какую задачу в итоге решаем, и только потом уже начинать за наследование, классы и прочую агрегацию? :huh:
    Сообщение отредактировано: Астарот -
      Цитата applegame @
      Когда Круг является Эллипсом, но наследовать Круг от Эллипса - очень плохая идея.

      Зависит от интерфейсов. В случае иммутабельных объектов - норм.
        Цитата D_KEY @
        В случае иммутабельных объектов - норм.

        Тыщастопицот объектов-"кругов" будут занимать больше памяти за счет лишнего параметра.
          Цитата Астарот @
          В котором нет никакого наследования вообще
          Подобие интерфейсов зато есть - https://elixirschool.com/ru/lessons/advanced/protocols/
          Цитата JoeUser @
          А-я-яй! Врешь и не краснеешь На первой же странице:
          Врешь и не краснеешь, потому что я покраснел когда врал! :D
            Цитата Wound @
            Вот тут автор предлагает другое решение: https://dou.ua/lenta/articles/composition-v...itance-in-java/
            Ну там он в принципе призывает отказываться от наследования. И приводит пример в самом начале.

            Ни коем разом не противоречит мною написанному! Я просто расписал как правильно наследоваться в "придуманной проблеме", но не обсуждал - нужно ли это делать, или же можно решить проблему вообще иначе.

            Добавлено
            Да и ващще, Бритва Оккама рулит!
            И в определении последовательности наследования - рулит не менее!
              Цитата applegame @
              Подобие интерфейсов зато есть

              Поведение из эрланга, я так понимаю?
                Цитата Астарот @
                Поведение из эрланга, я так понимаю?
                Нет, это чисто эликсировская хрень, поведение - это совсем другое.
                Сообщение отредактировано: applegame -
                  Скрытый текст
                  Цитата applegame @
                  Врешь и не краснеешь, потому что я покраснел когда врал!

                  :good:
                    Цитата Астарот @
                    Мне одному кажется, что в случае с квадратами и прямоугольниками начать следует с вопросов о том, какие еще будут сущности, что вообще делаем, какую задачу в итоге решаем, и только потом уже начинать за наследование, классы и прочую агрегацию?

                    Не, не одному :) Любая задача жи начинается с осмысления, с построения более менее непротиворечивой и полной системы. Выдуманная и, увы, распространенная "проблема" наследования квадрата и прямоугольника - имхо, это очередной сферический конь в вакууме.
                      Цитата JoeUser @
                      Выдуманная и, увы, распространенная "проблема" наследования квадрата и прямоугольника - имхо, это очередной сферический конь в вакууме.
                      Очевидно же, что это не проблема в смысле "сложная задача, которую трудно решить", это просто синтетический пример того, что вот этот вот тезис:
                      Цитата JoeUser @
                      1) Наследование используется, если имеем отношение "является"

                      в общем случае может привести (а может и не привести) к ошибке описанной в этом примере.
                      Для того чтобы избежать подобных косяков на практике, Барбара Лисков предложила довольно простой принцип.
                      Этот принцип является одним из пяти принципов SOLID

                      Вы же с Астаротом, похоже, восприняли эту "проблему" как некую критику наследования или хз что вы там подумали.
                      Сообщение отредактировано: applegame -
                        Цитата applegame @
                        Вы же с Астаротом, похоже, восприняли эту "проблему" как некую критику наследования или хз что вы там подумали.

                        Лично я эту "проблему" воспринял так, что если это абстрактная проблема, то решать ее можно как угодно, а если реальная, то начинать решать надо совсем с другого :-?

                        Цитата applegame @
                        Барбара Лисков предложила довольно простой принцип.

                        Принцип-то простой, но куда его прикладывать на практике я так до конца и не вкурил :(
                        Сообщение отредактировано: Астарот -
                          Цитата Астарот @
                          Лично я эту "проблему" воспринял так, что если это абстрактная проблема, то решать ее можно как угодно, а если реальная, то начинать решать надо совсем с другого
                          Воспринимай эту "проблему" точно также как ты воспринимал вот эту :)
                          Цитата Астарот @
                          Есть еще более классическая фигня - лопата копает яму, или яма копается лопатой?

                          Цитата Астарот @
                          Принцип-то простой, но куда его прикладывать на практике я так до конца и не вкурил
                          А в чем трабла? Собрался наследовать B от A. Подумай, сможешь ли во все методы предназначенные для A корректно засунуть любой B. Если сможешь, все ок, если нет - что-то пошло не так.
                          Сообщение отредактировано: applegame -
                            Цитата Астарот @
                            но куда его прикладывать на практике я так до конца и не вкурил :(

                            К отношениям :)
                            Вот если объект класса B может всегда и везде выступать как объект класса A, если контракты B полностью соответствуют контрактам A (в случае методов можно ослаблять предусловия и усиливать постусловия), тогда и применимо наследование :-?
                            Сообщение отредактировано: D_KEY -
                              Цитата applegame @
                              А в чем трабла? Собрался наследовать B от A. Подумай, сможешь ли во все методы предназначенные для A корректно засунуть любой B. Если сможешь, все ок, если нет - что-то пошло не так.

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

                              Цитата D_KEY @
                              Вот если объект класса B может всегда и везде выступать как объект класса A, если контракты B полностью соответствуют контрактам A (в случае методов можно ослаблять предусловия и усиливать постусловия), тогда и применимо наследование

                              Что за "пред" и "пост" условия такие? :scratch:
                                Цитата Астарот @
                                Есть еще более классическая фигня - лопата копает яму, или яма копается лопатой?

                                В этом мире человек копает яму лопатой. =)
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0463 ]   [ 18 queries used ]   [ Generated: 18.04.24, 05:30 GMT ]