На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Закрыто archimed7592 11-03-2008: Лимит страниц. Продолжаем Delphi vs C++

Страницы: (117) « Первая ... 97 98 [99] 100 101 ...  116 117  ( Перейти к последнему сообщению )  
> Delphi vs C++ , Часть 1
    Цитата
    В том то и дело, что не проще.


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

      Добавлено
      Цитата --Ins-- @
      Не прощем, чем правильно спроектировать систему?

      Конечно проще. :) Именно по этому такого кода ты мало где увидишь. А там, где увидишь, его использование будет оправдано. :)
        Цитата Flex Ferrum @
        соответствующей литературе такая форма вызова метода не описывается.

        просто интересно стало, а что это за литература?
          Цитата negram @
          просто интересно стало, а что это за литература?

          из серии "С++ for dummers". :)
            Цитата
            Конечно проще.


            Так, вы меня запутали :) Еще раз. Дано: необходимость вызова реализации виртуального метода предка, перекрытого в данном классе. Что проще: "выкрутиться" подобным образом? Или изначально спроектировать систему так, чтобы такой необходимости не возникало? И что из этого правильнее?
              Цитата Flex Ferrum @
              И второй момент - совсем новички о такой возможности просто не знают, т. к. в соответствующей литературе такая форма вызова метода не описывается.

              Да?!!! Млин. Проходил тут обучение не так уж давно... Почему-то меня не покидает ощущение, что я так вызовы и делал :wacko:
                Цитата Romkin @
                Да?!!! Млин. Проходил тут обучение не так уж давно... Почему-то меня не покидает ощущение, что я так вызовы и делал :wacko:

                Есть разные контексты использования подобных консрукций. Упомянутый мною их вид действительно очень редко используется. :)
                  Цитата
                  И второй момент - совсем новички о такой возможности просто не знают, т. к. в соответствующей литературе такая форма вызова метода не описывается.


                  Да не играет это роли никакой... :no: Так как что это за объектный язык такой, в который встроены механизмы, предназначенные для того, чтобы обходить ограничения ООП, нарушая тем самым его принципы. Причем замечу, ограничения умышленные, а не вынужденные.
                    Цитата --Ins-- @
                    Так как что это за объектный язык такой, в который встроены механизмы, предназначенные для того, чтобы обходить ограничения ООП, нарушая тем самым его принципы. Причем замечу, ограничения умышленные, а не вынужденные.

                    Если тебе хочется программировать в полном соответствии с фундаментальными принципами ООП - то тебе лучше всего взять SmallTalk или что-нибудь типа Eiffel. ;) Ибо в том же Паскале я могу, спустившись на уровень голых указателей, положить большой болт на все принципы, и наворотить столько дров, что мама дорогая. :) Или не могу? Если есть желание обойти правила - возможности будут найдены. Но начинать упрекать само наличие возможности в том, что оно провоцирует нарушение правил - это абсурд. :)

                    Добавлено
                    Цитата --Ins-- @
                    Причем замечу, ограничения умышленные, а не вынужденные.

                    В языке есть определенных набор фундаментальных правил, описывающих, в том числе, механизм интерпретации имен, поиска идентификаторов, и проч. проч. проч. В данном случае, есть правило "квалифицированного" и "неквалифицированного" имени. Для квалифицированных имен везде используются одни правила. Для неквалифицированных - везде другие. Делать исключения типа "если имя - полностью квалифицировано, при этом ссылается на виртуальную функцию, то компилятор должен быть программиста порукам" - это увеличивать объем и без того пухлого и сложного стандарта. Если программист дурак - то ему такие ограничения не помогут. А умный - каждую возможность будет применять там, где в этом есть необходимость. Или это не очевидно?
                      Цитата Flex Ferrum @
                      Ибо в том же Паскале я могу, спустившись на уровень голых указателей, положить большой болт на все принципы, и наворотить столько дров, что мама дорогая. :) Или не могу?

                      Например?
                        Цитата
                        Если тебе хочется программировать в полном соответствии с фундаментальными принципами ООП - то тебе лучше всего взять SmallTalk или что-нибудь типа Eiffel.


                        :yes: Вот SmallTalk - это действительно на 100% объектный язык. В отличие, скажем, от Java, C#, где 100%-я объектность - липовая, и является чисто маркетинговым ходом. Но так уж получилось, что прикладные и системные задачи, которые передо мной стоят, удобнее решать именно на Delphi. Так что, ничего другого, с вашего позволения, я пока брать не буду ;)

                        Цитата
                        Ибо в том же Паскале я могу, спустившись на уровень голых указателей, положить большой болт на все принципы, и наворотить столько дров, что мама дорогая. Или не могу?


                        Можете. А если спуститься на уровень машинных команд - то тем более. Но в C++, как я вижу, даже на этот уровень спускаться не нужно. Это заложено на уровне объектов и классов.

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


                        Вот мне интересно... В Delphi, например, членам классов можно задавать различные модификаторы видимости - private, public и т.д. Полагаю, в C++ - тоже, может иначе называются, да не суть. Может в C++ есть какие-нибудь механизмы, открывающие доступ к закрытым членам класса? А что, ведь если программист умный, то он сможет использовать это с пользой, а если дурак, то дураки не в счет ;) Есть такие механизмы?

                        Добавлено
                        Цитата
                        Например?


                        Я действительно могу в Delphi проделать то же самое - вызвать виртуальный метод родителя, дедушки - не важно кого, даже если в моем классе он перекрыт. Но правила языка сделать это мне не позволяют. Мне позволяет сделать это знание внутреннего устройства объектов и классов. Которое не является документированным.
                          Цитата --Ins-- @
                          Может в C++ есть какие-нибудь механизмы, открывающие доступ к закрытым членам класса? А что, ведь если программист умный, то он сможет использовать это с пользой, а если дурак, то дураки не в счет ;) Есть такие механизмы?

                          Да, в определенных случаях, если очень извратиться и захотеть - можно получить доступ к закрытым членам. Но, опять же, случайно это сделать практически невозможно.

                          Цитата --Ins-- @
                          Но в C++, как я вижу, даже на этот уровень спускаться не нужно. Это заложено на уровне объектов и классов.

                          С++ - это мультипарадигменный язык. И не ставит своей задачей заставить программиста писать правильно. Во многих местах там подложена соломка, в каких то случаях - даст по рукам. Но если программист хочет отхватить себе палец - мешать ему в этом не будет, т. к. на злобных дендромутантов не рассчитан. :)
                            Цитата
                            Да, в определенных случаях, если очень извратиться и захотеть - можно получить доступ к закрытым членам. Но, опять же, случайно это сделать практически невозможно.


                            Это тоже на уровне языка позволено? :blink:
                              Цитата --Ins-- @
                              Знаете почему в C/C++ чувствительный к регистру синтаксис

                              Ну и почему ?
                                Цитата
                                С++ - это мультипарадигменный язык.


                                Угу. Я тоже так считаю. Только несколько перефразирую - это некий "универсальный" инструмент, который подобен длинному древку с лопатой на одной стороне, и с граблями на другом. Начинаешь копать - грабли мешают. А стоит на эти грабли случайно наступить - получишь по лбу лопатой :lol:
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (117) « Первая ... 97 98 [99] 100 101 ...  116 117
                                Закрыто archimed7592 11-03-2008: Лимит страниц. Продолжаем Delphi vs C++



                                Рейтинг@Mail.ru
                                [ Script execution time: 0,2524 ]   [ 15 queries used ]   [ Generated: 25.07.25, 23:27 GMT ]