На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (245) « Первая ... 225 226 [227] 228 229 ...  244 245  ( Перейти к последнему сообщению )  
> Есть ли будущее у DELPHI?
    Цитата --Ins-- @
    Код на Java

    Цитата --Ins-- @
    // Как мне тут положить в List элементы?

    Ну наверное надо было положить элементы раньше:
    ExpandedWrap disabled
      class Derrived extends Base {
        public Derrived() {
          List list = new ArrayList();
          // Ложить в List элементы тут
          super(list);
        }
      }
      В общем, у нас тут опять то же, что было в многочисленных "тогда" :D
        Цитата OpenGL @
        Да и вообще, ситуация, когда базовому классу необходимо знание дочернего


        А где тут базовому классу необходимо знание дочернего?

        Добавлено
        Цитата Мяут-Настоящий @
        Ну наверное надо было положить элементы раньше:


        А в джава так можно? Я думал вызов конструктора предка должен быть первым?
        Сообщение отредактировано: --Ins-- -
          --Ins--, есть хороший конкретный пример?
            Цитата Flex Ferrum @
            Нередко это аккуратненько так прячется за pimpl'ом и наружу не торчит

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

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

            Костыль - это вызывать методы ещё не созданного или уже разрушенного объекта.
              Цитата MyNameIsIgor @
              Во-первых, пример?

              Да хотя бы то же Qt. :) Там все классы, которые торчат "наружу" - по сути, фасадные.


              Цитата MyNameIsIgor @
              Во-вторых, так раз не торчит, то у меня, реализующего наследника, нет никакой необходимости поддерживать двухэтапное контруирование - нет и проблем, о чём я и говорю.

              Скажем так, это может выглядеть не как "двухэтапное конструирование", а как перегрузка тех или иных виртуальных методов.
                Цитата MyNameIsIgor @
                Костыль - это вызывать методы ещё не созданного или уже разрушенного объекта.


                Нет, костыль - это сеттер спешиал фор конструктор :D Ну а чтобы я не вызывал методы несозданного объекта, я могу написать свой код так:
                ExpandedWrap disabled
                  class function CreateMyField: TList; virtual abstract;

                Ы?
                  Цитата Flex Ferrum @
                  Да хотя бы то же Qt. Там все классы, которые торчат "наружу" - по сути, фасадные.

                  Я в курсе, но там это сделано для бинарной совместимости. При чём тут двухэтапное контруирование?
                  Цитата Flex Ferrum @
                  Скажем так, это может выглядеть не как "двухэтапное конструирование", а как перегрузка тех или иных виртуальных методов.

                  Скажем так: переопределение виртуальных методов - это не двухэтапное конструирование.
                    Цитата Мяут-Настоящий @
                    Ну наверное надо было положить элементы раньше:

                    Не, в джаве это не прокатит, там super должен идти первым выражением.
                      Цитата --Ins-- @
                      Нет, костыль - это сеттер спешиал фор конструктор

                      Нет, костыль - это вызывать методы ещё не созданного или уже разрушенного объекта.
                      Цитата --Ins-- @
                      Ну а чтобы я не вызывал методы несозданного объекта, я могу написать свой код так

                      И как абстрактный метод спасает от такого вызова?
                        Цитата MyNameIsIgor @
                        Я в курсе, но там это сделано для бинарной совместимости. При чём тут двухэтапное контруирование?

                        Ну, скажем так, такой подход позволяет его должным образом использовать и получить все причитающиеся фишки. :)

                        Цитата MyNameIsIgor @
                        Скажем так: переопределение виртуальных методов - это не двухэтапное конструирование.

                        Всё зависит от методов... :)
                          Цитата korvin @
                          Не, в джаве это не прокатит, там super должен идти первым выражением.


                          В принципе можно создать статик метод, возвращающий лист, и передавать его в конструктор, но мне страшно представить как такое будет выглядеть если у нас такое поле не одно, а штук пять-десять

                          Добавлено
                          Цитата MyNameIsIgor @
                          И как абстрактный метод спасает от такого вызова?


                          Он не только абстрактный, он еще и классовый ;)

                          Добавлено
                          Цитата MyNameIsIgor @
                          Нет, костыль - это вызывать методы ещё не созданного или уже разрушенного объекта.


                          А я не вызываю методы объекта :D Метод классовый :D Так что твой костыль остался, а моего нет
                          Сообщение отредактировано: --Ins-- -
                            Цитата Flex Ferrum @
                            Ну, скажем так, такой подход позволяет его должным образом использовать и получить все причитающиеся фишки.

                            Каким образом pimpl aka bridge помогает получить двухэтапное конструирование?
                            Цитата Flex Ferrum @
                            Всё зависит от методов...

                            Ну, так пример, пример!

                            Добавлено
                            Цитата --Ins-- @
                            А я не вызываю методы объекта Метод классовый

                            Т.е. так и запишем: полиморфизм в конструкторах/деструкторах не нужен. ЧТД.
                            Сообщение отредактировано: MyNameIsIgor -
                              Цитата --Ins-- @
                              А где тут базовому классу необходимо знание дочернего?

                              private поле (а значит, доступное только базовому классу) необходимо заполнять в зависимости от того, какой это на самом деле класс. В конструкторе. Что это, если не требование знать конкретный тип?

                              Добавлено
                              А вот кстати насчет виртуальных статических методов соглашусь - они могли бы быть полезны :)
                                Цитата OpenGL @
                                private поле (а значит, доступное только базовому классу) необходимо заполнять в зависимости от того, какой это на самом деле класс. В конструкторе. Что это, если не требование знать конкретный тип?


                                Где тут требование знать конкретный тип? Базовый класс не оперирует никаким знание о потомках, он обращается только к своему интерфейсу. Чем это принципиально отличается от обычного полиморфного вызова, где базовый класс точно так же делегирует выполнить действие потомку, но при этом дергает за свой интерфейс?

                                Добавлено
                                Цитата MyNameIsIgor @
                                Т.е. так и запишем: полиморфизм в конструкторах/деструкторах не нужен. ЧТД.


                                Так метод виртуальный :lool: Классовый, но виртуальный
                                Сообщение отредактировано: --Ins-- -
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (245) « Первая ... 225 226 [227] 228 229 ...  244 245


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,2203 ]   [ 15 queries used ]   [ Generated: 20.07.25, 09:55 GMT ]