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

    ты не поверишь...
      Цитата korvin @
      Цитата D_KEY @
      Такие вещи нужно инкапсулировать.

      ты не поверишь...

      Ты имеешь в виду, что их можно инкапсулировать в модуле?
      Да, можно. Только я здесь не модули ругаю, а утверждаю, что при ОО-проектировании, это все делают классы. И делают они это лучше.
      Например, можно поменять GDI+ на что-то другое хоть в процессе выполнения.
        Цитата D_KEY @
        Shaggy, я о том, что эта инициализация должна делаться за кулисами того класса, который обеспечивает нужный функционал(и реализован с использованием GDI+).

        какой из? их несколько
        например:
        TGraphics - холст, TImage, TBitmap - наследник TImage, TPen и наследники, TBrush и наследники и т.д.
        и все они реализованы с использование GDI+

        Цитата D_KEY @
        Ибо скорее всего, классы, использующие GDI+ могут успешно решать свои задачи, если будут использовать какое-то другое средство, обеспечивающее нужный функционал.

        вот этого вообще не понял, это как, так? работать c GDI+, но пользоваться другими средствами, какими?
          Цитата Shaggy @
          Цитата D_KEY @
          Shaggy, я о том, что эта инициализация должна делаться за кулисами того класса, который обеспечивает нужный функционал(и реализован с использованием GDI+).

          какой из? их несколько
          например:
          TGraphics - холст, TImage, TBitmap - наследник TImage, TPen и наследники, TBrush и наследники и т.д.
          и все они реализованы с использование GDI+

          А разве их логика зависит от GDI+ ;) ?

          Цитата
          Цитата D_KEY @
          Ибо скорее всего, классы, использующие GDI+ могут успешно решать свои задачи, если будут использовать какое-то другое средство, обеспечивающее нужный функционал.

          вот этого вообще не понял, это как, так? работать c GDI+, но пользоваться другими средствами, какими?

          Сегодня они работают с GDI+, а завтра они могут работать с какой-то сторонней библиотекой, а после завтра могут быть перенесены на другую платформу. На .NET, например. Зачем иметь зависимость от конкретной реализации?
            Цитата D_KEY @
            А разве их логика зависит от GDI+ ?

            а от чего она зависит, если я работаю именно с GDI+
            Цитата D_KEY @
            Зачем иметь зависимость от конкретной реализации?

            не зависеть от реализации = ограничивать себя в возможностях
              Цитата Shaggy @
              Цитата D_KEY @
              А разве их логика зависит от GDI+ ?

              а от чего она зависит, если я работаю именно с GDI+

              От того, что представляет собой bitmap, image, pen, brush, ...
              Они совершенно независимы от GDI+.

              Цитата
              Цитата D_KEY @
              Зачем иметь зависимость от конкретной реализации?

              не зависеть от реализации = ограничивать себя в возможностях
              Зачем?

              Добавлено
              Цитата Shaggy @
              не зависеть от реализации = ограничивать себя в возможностях

              Впрочем, с таким подходом, лучше работать с процедурами/функциями/модулями.
                Цитата D_KEY @
                Зачем?

                зачем что?

                я написал(переписал под себя на самом деле) модуль для работы с GDI+, именно с ней
                и описал как в нём реализована часть функционала, как делфийские модули в этом помогли

                ты пишешь, что это неправильно и надо отвязатся от конкретной технологии/реализации
                прекрасно, если мне это понадобится напишу более абстрактную прослойку поверх этого модуля
                но обсуждалось то не это...
                  Цитата D_KEY @
                  Ты имеешь в виду, что их можно инкапсулировать в модуле?
                  Да, можно. Только я здесь не модули ругаю, а утверждаю, что при ОО-проектировании, это все делают классы. И делают они это лучше.
                  Например, можно поменять GDI+ на что-то другое хоть в процессе выполнения.

                  этоот языка зависит, в CL например можно менять что угодно и когда угодно, а классы ты и в плюсах в рантайме не поменяешь
                  Сообщение отредактировано: korvin -
                    Цитата Shaggy @
                    я написал(переписал под себя на самом деле) модуль для работы с GDI+, именно с ней и описал как в нём реализована часть функционала, как делфийские модули в этом помогли

                    А почему ты не написал в таком случае класс для работы с GDI+?

                    Добавлено
                    Цитата korvin @
                    Цитата D_KEY @
                    Ты имеешь в виду, что их можно инкапсулировать в модуле?
                    Да, можно. Только я здесь не модули ругаю, а утверждаю, что при ОО-проектировании, это все делают классы. И делают они это лучше.
                    Например, можно поменять GDI+ на что-то другое хоть в процессе выполнения.

                    этоот языка зависит, в CL например можно менять что угодно и когда угодно, а классы ты и в плюсах в рантайме не поменяешь

                    Класс менять и не надо(зачем?). Я могу поменять объект ;)
                      Цитата D_KEY @
                      Класс менять и не надо(зачем?). Я могу поменять объект ;)

                      ну добавь метод в объект
                        Цитата korvin @
                        Цитата D_KEY @
                        Класс менять и не надо(зачем?). Я могу поменять объект ;)

                        ну добавь метод в объект

                        Зачем? Я имел в виду поменять один объект на другой. А завести специальный вид классов, содержащий расширяемый контейнер функций и обеспечивающий вызов метода по имени - дело не хитрое.
                        Сообщение отредактировано: D_KEY -
                          Цитата DesweR @
                          Это мысли вслух, они ничем не обоснованны.
                          А что, у тебя обоснования есть? Прости, не заметил, ткни, где.
                          Я вроде бы не претендовал на безгрешность, когда то писал. То, что это моё ИМХО, т.с. чистые рассуждения, там ясно видно. Если процитированное мною является твоим мне обвинением, ты промазал. Если б твоя критика была конструтивной, могли б хорошо побеседовать, а так... не вижу во флейме смысла.
                          Цитата DesweR @
                          Ну мы тоже можем выкинуть все исходники и работать только с одними DCU.
                          Ага. Только ими тогда нельзя будет пользоваться без документации. У нас - можно, если оставить .h.
                          Впрочем, я, конечно, придираюсь. .h - это только публикация интерфейсов, эдакий справочник. Документацией это назвать было бы слишком натянуто. Однако я и Дельфях видел .int файлики, которые просто суть те же модули с вырезанной implementation секцией, и которые не используются никак, окромя просто почитать глазками.
                          Цитата KILLER @
                          В принципе первые три пункта меня мало инетерсуют, так как С++ имеет такие возможности, а вот по 4 пункту было бы интересно послушать, что это за initialization/finalization-секции такие, для чего используются ?
                          Первые три пунктра ещё в C были. А initialization/finalization-секции - это эдакие конструкторы и деструкторы модулей. (Ага, korvin уже тоже то же сказал.) Хм... а оно надо? Ну если надо, глобальный экземпляр класса в безымянном пространстве имён. Хотя мне ни разу не понадобилось строить чёрный ящик на уровне единицы трансляции. Бред это.
                          Цитата korvin @
                          разве нэймспейсы в C++ уже умеют разделять интерфейс и реализацию?
                          Запросто. Намёк: пространства имён открыты.
                          Цитата Shaggy @
                          т.е. ты предлагаешь завести отдельный класс для инициализации/финализации?
                          Вот вы смешные, её богу. Зачем в язык заводить аж целую новую сущность с целыми двумя специальными ключевыми словами, если существующие механизмы с этим справляются на ура. Будем меряться количеством строчек? У нас пять, у вас две. Считайте, вы выиграли.
                          Цитата Shaggy @
                          твой вариант:
                          ...
                          я правильно понял?


                          мой вариант:
                          ...
                          Нет, не правильно. Будет твой вариант.
                          Цитата korvin @
                          ...а классы ты и в плюсах в рантайме не поменяешь
                          Если я правильно понял, то замена одной реализации на другую в ран-тайм поддержана наличием позднего связывания. Не поверю ,что ты о ней не слышал. Значит я тебя неправильно понял. А как правильно?
                            Цитата D_KEY @
                            Зачем? Я имел в виду поменять один объект на другой.

                            так а при чем тут тогда модули? менять значения переменных они не мешают

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

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

                            Добавлено
                            Цитата Qraizer @
                            Если я правильно понял, то замена одной реализации на другую в ран-тайм поддержана наличием позднего связывания. Не поверю ,что ты о ней не слышал. Значит я тебя неправильно понял. А как правильно?

                            чтобы поменять класс в рантайме, нужно чтобы классы были объектами первого класса
                              Цитата D_KEY @
                              Да, можно. Только я здесь не модули ругаю, а утверждаю, что при ОО-проектировании, это все делают классы. И делают они это лучше.

                              А что они делают? Что?

                              Цитата Qraizer @
                              А что, у тебя обоснования есть? Прости, не заметил, ткни, где.
                              Я вроде бы не претендовал на безгрешность, когда то писал. То, что это моё ИМХО, т.с. чистые рассуждения, там ясно видно. Если процитированное мною является твоим мне обвинением, ты промазал. Если б твоя критика была конструтивной, могли б хорошо побеседовать, а так... не вижу во флейме смысла.

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

                              Цитата Qraizer @
                              Ага. Только ими тогда нельзя будет пользоваться без документации.

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

                              Цитата Qraizer @
                              У нас - можно, если оставить .h.
                              Впрочем, я, конечно, придираюсь. .h - это только публикация интерфейсов, эдакий справочник.

                              К слову, что не нравится в .h - хрен найдёшь саму реализацию (хотя может быть я не умею правильно искать).

                              Цитата Qraizer @
                              Первые три пунктра ещё в C были. А initialization/finalization-секции - это эдакие конструкторы и деструкторы модулей. (Ага, korvin уже тоже то же сказал.) Хм... а оно надо? Ну если надо, глобальный экземпляр класса в безымянном пространстве имён. Хотя мне ни разу не понадобилось строить чёрный ящик на уровне единицы трансляции. Бред это.

                              Открой любой модуль Delphi из RTL или VCL - практически в каждом используется initialization/finalization.

                              Цитата Qraizer @
                              Вот вы смешные, её богу. Зачем в язык заводить аж целую новую сущность с целыми двумя специальными ключевыми словами, если существующие механизмы с этим справляются на ура. Будем меряться количеством строчек? У нас пять, у вас две. Считайте, вы выиграли.

                              А в сумме используемых модулей сколько дополнительных строчек будет? У нас ноль - а у вас от 100 и более :)
                              Сообщение отредактировано: DesweR -
                                Цитата DesweR @
                                К слову, что не нравится в .h - хрен найдёшь саму реализацию (хотя может быть я не умею правильно искать).

                                А зачем тебе реализация? Чтобы посмотреть в каком порядке вызываются конструкторы классов, дабы не выхватить AV при использовании? Реализация хранится в *.с/*.сpp файлах, реализация шаблонов - часто располагается в *.h файлах.
                                Или я может не допонял чего :-?

                                Цитата DesweR @
                                А в сумме используемых модулей сколько дополнительных строчек будет? У нас ноль - а у вас от 100 и более :)

                                Ты чего такое говоришь? Кто за тебя эти секции будет писать? Хоть в сумме хоть без суммы... Я же объяснял вроде, и Qraizer тут повторял, аналог вашей секции initialization/finalization это пространство имен(глобальное/локальное/безымянное), единственно что 5 строчек, это если нужно проделать сложные действия, тогда просто придется эти действия обернуть в класс, и в пространстве имен создать экземпляр этого класса, и все, конструктор и деструктор будут вызваны автоматически.. о каких 100 и более строчках ты говоришь?
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 29 30 [31] 32 33 ...  494 495


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.1282 ]   [ 15 queries used ]   [ Generated: 29.07.26, 00:38 GMT ]