На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (495) « Первая ... 75 76 [77] 78 79 ...  494 495  ( Перейти к последнему сообщению )  
> Delphi vs C++ vs C# , ну и Java немножко, где-то ближе к старшему байту номеров страниц
    Цитата korvin @
    инс, а если программист забудет поставить инхеритед?


    При переопределении виртуального метода inherited не пишут только в одном случае - если они точно знают что этот inherited делает и умышленно хотят это поведение подавить. Если забудут - так это применимо к любому виртуальному методу. Можно точно так же спросить, а что если программист переопределяя виртуальный метод забудет вызвать унаследованную реализацию? Тут что в Delphi, что в C# - эффект будет один и тот же.
      Цитата --Ins-- @
      Цитата D_KEY @
      Предок выставляет свои поля в конструкторе напрямую, а modified ставиться в false. Потомки делают точно также, а свойство modified оказывается не измененным(false)


      Я переспросил потом, как оно оказывается неизмененным? Из-за чего? Из-за того, что вызывается конструктор базового класса?

      Из-за того, что его никто никогда и не ставил в true.

      Добавлено
      Цитата --Ins-- @
      При переопределении виртуального метода inherited не пишут только в одном случае - если они точно знают что этот inherited делает и умышленно хотят это поведение подавить.

      :blink:
        Да, --Ins--, как в твоем случае бороться с такой ситуацией:
        ExpandedWrap disabled
          class base {
                  /*...*/
              public:
                  base() {
                  }
           
                  void SetHeight(size_t H) {
                      if(H > Height)
                          ShrinkDocument();
                  
                      Height = H;
                  }
          };
           
          class derived {
                  /*...*/
              public:
                  derived() {
                      SetHeight(100); //С каким значением сравнивается 100?
                  }
          };


        Добавлено
        Еще один аргумент не пользовать геттеры-сеттеры в конструкторах
          Цитата D_KEY @
          Нету в С++ интерфейсов. В С++ есть только абстрактные классы, которые могут обеспечить все, что обеспечивают интерфейсы.


          Я в курсе. Такой вопрос, а в c#? ;)
            Цитата MyNameIsIgor @
            Ну, дык. Придут --Ins-- с DesweR'ом и расскажут тебе, какая она убогая в плюсах, как в шарп её украли из дельфи, в котором она "просто прекрасна, просто прекрасна!"
            Проходили уже...

            Ага! :D
            Кстати, недаром в D все классы используют только ссылочную модель, в угоду полиморфизма, а также наследуются от единого базового, неспроста и множественное наследование было пущено в расход :)
            А инновационные namespaces и не менее инновационные заголовочные файлы - были выпилены и заменены на более удобную и эффективную модульную систему (и раздельную компиляцию, при желании, с ними же).
              Цитата --Ins-- @
              Цитата D_KEY @
              Нету в С++ интерфейсов. В С++ есть только абстрактные классы, которые могут обеспечить все, что обеспечивают интерфейсы.


              Я в курсе. Такой вопрос, а в c#? ;)

              В C# есть, ибо в отсутствии множественного наследования без отдельного понятия интерфейсов тяжко, сам понимаешь.

              Добавлено
              Цитата DesweR @
              Кстати, недаром в D все классы используют только ссылочную модель, в угоду полиморфизма

              И это отвращает от языка некоторых разработчиков :)

              Цитата
              а также наследуются от единого базового, неспроста и множественное наследование было пущено в расход :)

              Если мне не изменяет память, там развитые mixin'ы + возможность каста + шаблоны, множественное наследование может быть полностью воспроизведено в этих условиях.

              Цитата
              А инновационные namespaces и не менее инновационные заголовочные файлы - были выпилены и заменены на более удобную и эффективную модульную систему

              Не совсем так.

              Цитата
              (и раздельную компиляцию, при желании, с ними же).
              Эта информация пока не подтвердилась.
              Я говорю, в статье не все соответствует действительности.
                Цитата D_KEY @
                В C# есть, ибо в отсутствии множественного наследования без отдельного понятия интерфейсов тяжко, сам понимаешь.


                А абстрактные классы что означают? ;)

                Цитата Мяут-Настоящий @
                Еще один аргумент не пользовать геттеры-сеттеры в конструкторах


                Я с этим не спорю, конечно когда они делают что-то лишнее это лучше избежать. Пример мой видел? Как быть в этом случае в c++/c#? Повторю пример. У базового класса свойство Orientation с сеттером, меняющее приватное поле и Modified. Как мне в потомке выставить в конструкторе Orientation, чтобы не изменить Modified?

                Добавлено
                Цитата D_KEY @
                там развитые mixin'ы


                Миксины - это что, агрегация? :D Так она много где используется, пуская в расход множественное наследование, и в Delphi тоже :D
                  Цитата --Ins-- @
                  Я же например могу в своем базовом классе решить задачу скажем сериализации объекта (полностью), в потомке мне для этого ни строчки кода написать не придется. А вот у с++ с этим бооольшие проблемы, насколько я понял

                  Страниц 100 назад - это уже выяснялось, в С++ вообще принято (ну т.е. иначе нельзя) сбрасывать горы работы на плечи наследников и надеяться, что никто ничего не забудет дописать.

                  Добавлено
                  Цитата D_KEY @
                  И это отвращает от языка некоторых разработчиков

                  Значит действительно хороший язык :D
                    Цитата --Ins-- @
                    Цитата D_KEY @
                    В C# есть, ибо в отсутствии множественного наследования без отдельного понятия интерфейсов тяжко, сам понимаешь.


                    А абстрактные классы что означают? ;)

                    Тоже, что и в С++(да и везде) - базовые классы, не предполагающие создания своих экземпляров.

                    Цитата
                    Повторю пример. У базового класса свойство Orientation с сеттером, меняющее приватное поле и Modified. Как мне в потомке выставить в конструкторе Orientation, чтобы не изменить Modified?

                    Это должен предполагать базовый класс и определить соответствующий конструктор. Если не предполагает, то, естественно, никак, ибо это будет противоречить логике его работы.

                    Добавлено
                    Цитата --Ins-- @
                    Цитата D_KEY @
                    там развитые mixin'ы


                    Миксины - это что, агрегация? :D

                    Это миксины :)
                      Цитата DesweR @
                      сбрасывать горы работы на плечи наследников и надеяться, что никто ничего не забудет дописать.


                      Я и сам вижу :) В Delphi же принято решать задачу на том уровне абстракции, на котором она возникает, а не делегировать ее потомкам без необходимости, у которых и своих забот достаточно :)

                      Добавлено
                      Цитата D_KEY @
                      базовые классы, не предполагающие создания своих экземпляров.


                      Ну так я это и сказал. Чего киллер ржал, не знаешь? ;)
                        Цитата DesweR @
                        Цитата --Ins-- @
                        Я же например могу в своем базовом классе решить задачу скажем сериализации объекта (полностью), в потомке мне для этого ни строчки кода написать не придется. А вот у с++ с этим бооольшие проблемы, насколько я понял

                        Страниц 100 назад - это уже выяснялось, в С++ вообще принято (ну т.е. иначе нельзя) сбрасывать горы работы на плечи наследников и надеяться, что никто ничего не забудет дописать.

                        Нет :no:

                        Цитата
                        Цитата D_KEY @
                        И это отвращает от языка некоторых разработчиков

                        Значит действительно хороший язык :D

                        Да, неплохой. Если бы там было все, о чем говорит Александреску...
                          Цитата D_KEY @
                          Это должен предполагать базовый класс и определить соответствующий конструктор.


                          Т.е. если у меня в классе 20 параметров, я должен сделать двадцать конструкторов? Или один с 20-ю параметрами? Как будет правильнее? :lol:
                            Цитата --Ins-- @
                            Я и сам вижу :) В Delphi же принято решать задачу на том уровне абстракции, на котором она возникает, а не делегировать ее потомкам без необходимости, у которых и своих забот достаточно :)

                            Ты так и не ответил, что у меня не так...

                            Цитата
                            Цитата D_KEY @
                            базовые классы, не предполагающие создания своих экземпляров.


                            Ну так я это и сказал. Чего киллер ржал, не знаешь? ;)

                            Ему не нравится, что ты говоришь о реализации "абстрактных" действий. Это действительно не очень корректное выражение :)
                              Цитата D_KEY @
                              Да, неплохой. Если бы там было все, о чем говорит Александреску...

                              Будем ждать D3 :)
                              Скрытый текст
                              возьму смелость и предположу - самый удачный и стабильный будет D7 :lol:
                              Сообщение отредактировано: DesweR -
                                Цитата --Ins-- @
                                Цитата D_KEY @
                                Это должен предполагать базовый класс и определить соответствующий конструктор.


                                Т.е. если у меня в классе 20 параметров, я должен сделать двадцать конструкторов? Или один с 20-ю параметрами? Как будет правильнее? :lol:

                                Зависит от задачи. 20 параметров, конечно, не делается. Если у тебя так - надо что-то менять в дизайне.
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 75 76 [77] 78 79 ...  494 495


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.1771 ]   [ 14 queries used ]   [ Generated: 29.07.26, 21:33 GMT ]