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

    Автоматизация покруче в Delphi будет. Я ж сказал: объект создается сразу, причем кодом, уже написанным опытными людьми, единообразно для любого объекта.

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

    Цитата
    Да, если ты помнишь, я согласился с такой формулировкой. Код собственно конструктора в вашем понимании я привел выше, _ClassCreate. Но опять же он вызывается однократно для создания экземпляра, нет цепочки по предкам.
    Это не конструктор в нашем понимании. Вы разделили одно единое действие на несколько.

    Цитата
    Вообще обсуждение конструкторов неконструктивно в дальнейшем: я уже для себя уяснил, что сишники подразумевают под конструктором, и мне это не нравится. Думаю, что объяснить, что такое конструирование в Delphi я тоже смог.
    Думаю, что ты не совсем понял С++ конструкторы.

    Цитата
    По постановке. У экземпляра Car переключение - абстрактный метод, поэтому переключить скорости у абстрактной машины ты не можешь.

    Я не могу создать абстрактную машину. А запрашивать переключение скорости я могу у объекта Car.

    Цитата
    Цитата DesweR @
    А ещё в Delphi есть виртуальные статические методы

    Не путай бедных сишников. Виртуальные методы класса и статические методы - это разные вещи. В Delphi есть оба варианта, а в С++ - только второй.

    "Сишники" не бедные и знакомы с другими языками.
    Как говорится в "старой" поговорке, "любой уважающий себя сишник знает ещё с десяток других языков, главным образом для того, чтобы их обсирать".
    :D
    Сообщение отредактировано: D_KEY -
      Цитата KILLER @
      если у машины это будет просто дернуть рычаг и повысить скорость, то у электромобиля - это будет например что то другое...
      http://www.vipchasi.ru/kpp.php
        Цитата trainer @
        http://www.vipchasi.ru/kpp.php

        Гы, тогда чего тут кипиша по электромобилям навели? Значит и вообще для электромобиля не нужно будет реализовывать коробку передач, она ведь такая же как и у машины :)
          Цитата Romkin @
          Цитата D_KEY @
          Добавлено Сегодня, 11:21
          Romkin, ну так что на счет задачки по интерфейсам?

          Хм. Уже и сомневаюсь. Ок.
          Есть объект, в частности, это был пинг. Предоставляет он интерфейс IPing, с возможностью задать адрес и собственно метод ping. Есть и событие у объекта, OnPing, когда ответ пришел. Параметр - запись, адрес и время ответа. После вызова Ping идут периодические пинги до уничтожения объекта.
          В общем, сделал я. А сисадмин говорит, что пинговать ему одновременно надо много, нужна коллекция этих объектов. Причем чтобы можно было добавлять в нее элемент и извлекать его оттуда (вне коллекции). Элементы предоставляют IPing, у коллекции одно событие OnPing на всех (собственно, это и была цель).
          Что получилось:
          Элемент коллекции являетсяв враппером для класса, реализующего IPing, при этом выставляет его интерфейс. При извлечении элемента враппер уничтожается, реализация IPing продолжает работу. Сделано это было без реализации IPing враппером.
          Понятно изложил или путано?

          Если удалил из коллекции, а объект продолжает жить, то куда приходит событие?
            Цитата trainer @
            Какая есть, такая и стоит. А в чем проблема?

            Проблема в том, что у электромобиля КП нет, за ненадобностью :)

            Цитата Flex Ferrum @
            Что-то я недогоняю. Вот есть у нас всё то же отношение TAbstractButton <- TCustomButton <- TButton. Предположим, что у TAbstractButton есть поле State, которое при инициализации должно быть установлено в значение Normal (которое имеет числовое значение '10'). Правильно ли я понимаю (из твоего утверждения), что это поле должно устанавливаться соответствующим образом и в "конструкторе" класса TCustomButton и в конструкторе класса TButton?

            Понимаешь, тут меня все толкают на то, что создание и инициализация - это конструктор. Ну я и пытаюсь объяснить, так чтобы поняли, что создание и инициализация - разные этапы. Создание - сразу всего объекта, а потом остается его инициализировать как надо, это уже программист пишет. И тут его воля, хочет - вызовет инициализацию от TAbstractButton, хочет - напрямую поле установит. Если долезет, конечно. Язык гарантирует, что конструктор:
            Цитата
            To create an object, call the constructor method on a class type. For example:
            MyObject := TMyClass.Create;
            This allocates storage for the new object, sets the values of all ordinal fields to zero, assigns nil to all pointer and class-type fields, and makes all string fields empty. Other actions specified in the constructor implementation are performed next; typically, objects are initialized based on values passed as parameters to the constructor. Finally, the constructor returns a reference to the newly allocated and initialized object. The type of the returned value is the same as the class type specified in the constructor call.


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

            Во-во. Чем больше беседую, тем больше убеждаюсь, что программирование на С++ - это такой особый вид мазохизма. Ужас. Сравнимо с тем, чтобы иметь в гараже Ford-T, и ездить на нем, уверяя всех, что это круто. И периодически раз в десятилетие обращаться в мастерскую, чтобы привесили новые фишки, например, ремни безопасности за десяток лет наконец-то придумали как навесить :lol:

            Добавлено
            Цитата D_KEY @
            Если удалил из коллекции, а объект продолжает жить, то куда приходит событие?

            OnPing есть и у объекта и у коллекции. Событие приходит в OnPing объекта всегда, а в событие коллекции - если он в ней. Эссно, если есть обработчик.
              Цитата Romkin @
              Проблема в том, что у электромобиля КП нет, за ненадобностью
              Ссылка выше. Ты вообще знаешь, зачем коробка передач у автомобиля?
                Цитата D_KEY @
                "Сишники" не бедные и знакомы с другими языками.
                Как говорится в "старой" поговорке, "любой уважающий себя сишник знает ещё с десяток других языков, главным образом для того, чтобы их обсирать".

                Скорее даже можно сказать, что с каждым языком они пытаются работать точно как с С++ :) И когда это не получается - начинают обсирать. "Если это выглядит иначе, чем в С++ - значит, это неверно. Аминь".

                Добавлено
                Цитата trainer @
                Ссылка выше. Ты вообще знаешь, зачем коробка передач у автомобиля?

                Вперед, искать коробку у троллейбуса :)
                Может быть, а может не быть.
                  Цитата Romkin @
                  Сравнимо с тем, чтобы иметь в гараже Ford-T, и ездить на нем, уверяя всех, что это круто. И периодически раз в десятилетие обращаться в мастерскую, чтобы привесили новые фишки, например, ремни безопасности за десяток лет наконец-то придумали как навесить
                  А Delphi ты отождествляешь с каким автомобилем? Через сколько лет вам таки прикрутили strict-секции?
                    Цитата Romkin @
                    Вперед, искать коробку у троллейбуса
                    Может быть, а может не быть.

                    Если у него нет коробки передач, зачем тогда мне у него переключать передачу? :huh:
                      Цитата Romkin @
                      Вперед, искать коробку у троллейбуса :)
                      Может быть, а может не быть.
                      "Не быть" - значит передаточное число 1:1 и скорость одна.
                        Цитата trainer @
                        А Delphi ты отождествляешь с каким автомобилем? Через сколько лет вам таки прикрутили strict-секции?

                        Это не является необходимостью. А через сколько лет вам прикрутили строгую проверку типа перечисления?
                        Уж явно поновее самых первых моделей. По крайней мере, второе поколение, что-то вроде Опеля времен войны. object сменен на class, считай вместо ременной передачи кардан поставили.
                          Цитата Romkin @
                          Понимаешь, тут меня все толкают на то, что создание и инициализация - это конструктор. Ну я и пытаюсь объяснить, так чтобы поняли, что создание и инициализация - разные этапы. Создание - сразу всего объекта, а потом остается его инициализировать как надо, это уже программист пишет. И тут его воля, хочет - вызовет инициализацию от TAbstractButton, хочет - напрямую поле установит. Если долезет, конечно.

                          Понимаю. C++ тоже есть подобное разделение. Отдельно - аллокация (опционально), отдельно - конструирование, оно же инициализация. Да, не подкладывается соломка в виде
                          Цитата Romkin @
                          sets the values of all ordinal fields to zero, assigns nil to all pointer and class-type fields, and makes all string fields empty.

                          но зато и к двойной инициализации полей всё это не приводит. Память под объект выделили, конструктор позвали - он сделал своё грязное дело (т. е. проинициализировал должным образом поля объекта). Все довольны. :D
                            Цитата trainer @
                            "Не быть" - значит передаточное число 1:1 и скорость одна.

                            Ладно, коли так уперлось, сделай метод "получить емкость бензобака в литрах"
                              Цитата Romkin @
                              А через сколько лет вам прикрутили строгую проверку типа перечисления?

                              Да вроде от рождения стандарта была. :)
                                Цитата Flex Ferrum @
                                но зато и к двойной инициализации полей всё это не приводит. Память под объект выделили, конструктор позвали - он сделал своё грязное дело (т. е. проинициализировал должным образом поля объекта). Все довольны.

                                А случай, когда в конструкторе предка поле инициализируется в 1, а в конструкторе потомка надо туда поставить 2, не приводит к двойной инициализации?
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 207 208 [209] 210 211 ...  494 495


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.3356 ]   [ 15 queries used ]   [ Generated: 1.08.26, 10:28 GMT ]