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

        И на что этот обработчик исключения будет влиять? :huh: У вас же как я понимаю в делфях конструкция try/except/finaly неразрывные, тоесть не могут быть размазаны по коду...

        Цитата DesweR @
        Можешь зарегистрировать сообщения, установить обработчик исключений, подменить менеджер памяти, инициализировать пул потоков, да вообще что угодно.

        Это если объекты этих типов они описаны глобально для модуля? Так ведь глобальные переменые зло, мыж тут вроде ООП обсуждаем...

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

        Понятно, и часто вы юзаете глобальные переменные в рамках одного модуля? В С++ они автоматом создаются, если нужно инициализировать, то можно сразу же инициализировать, считай что секций initialization/finalization в С++, это тело неймспейса
          Цитата KILLER @
          И на что этот обработчик исключения будет влиять?


          Обработчик необработанных исключений, видимо имелся в виду. Ну, или safecall-exception-обработчик. Можно вариантные функции переопределить, например, чтобы при конвертации варианта в строку вызывалась твоя функция. Ну или что-то в этом роде, многие системные функции можно заменить своими совершенно легально

          Добавлено
          Цитата KILLER @
          если нужно инициализировать, то можно сразу же инициализировать


          Так циферку или там массив и у нас инициализироват можно, а что, у вас при обявлении, скажем, класса, можно сразу и его методы вызвать? :blink:
            Так ведь у вас же можно через имя модуля вызывать функции? или они должны быть описаны в этих секциях для нормальной компиляции? Допустим если в С++ в глобальном пространстве имен(без неймспейсов) попытаться переопределить системную функцию которая тоже расположена в глобальном пространстве имен, то будет ошибка компиляции, а вот если ее засунуть в свой неймспейс, и вызывать через имя этого неймспейся или внутри него, то уже будет вызвана переопределенная функция.
              Можно еще какие-нибудь курсоры/битмапы из ресурсов загрузить...
                Цитата KILLER @
                И на что этот обработчик исключения будет влиять? У вас же как я понимаю в делфях конструкция try/except/finaly неразрывные, тоесть не могут быть размазаны по коду...

                Не так понял, я про свои трейсеры исключений.

                Цитата KILLER @
                Это если объекты этих типов они описаны глобально для модуля? Так ведь глобальные переменые зло, мыж тут вроде ООП обсуждаем...

                Зло конечно, но от него никуда не деться (или как к примеру реализуешь пул потоков?).

                Цитата KILLER @
                Понятно, и часто вы юзаете глобальные переменные в рамках одного модуля?

                RTL и VCL практически везде :)
                  Цитата --Ins-- @
                  Цитата korvin @
                  2) задача класса -- описывать объекты, а не служить этаким универсальным комбайном


                  +1. Уже устал твердить на разных форумах, что классу просто приписали понятие пространство имен, кое к ООП никакого отношения не имеет. Но ведь иначе нельзя будет заявить что Java/C# - это 100% объектно ориентированные языки. А в этом случае реклама потерпит эпик фэйл и языки не продвинутся на рынок (за счет чего?). Так что это просто дешевая уловка на которую клюют недалекие программисты и менеджеры

                  Добавлено
                  Цитата D_KEY @
                  Что дают модули(не как единицы трансляции, а на уровне логики), чего не в состоянии обеспечить классы?


                  Всё. :) Так как задачи у модулей и у классов - совершенно разные :)

                  Можно узнать источники информации по данному вопросу? Или это твое личное мнение?
                  И это... Никто не говорит о пространстве имен - это отдельная тема.
                  Ты вообще знаешь что такое модульность?
                    Цитата --Ins-- @
                    Так циферку или там массив и у нас инициализироват можно, а что, у вас при обявлении, скажем, класса, можно сразу и его методы вызвать? :blink:

                    При объявлении экземпляра класса наверно ты имел ввиду? Ну так ведь конструктор класса вызывается автоматически.
                      Цитата KILLER @
                      DesweR, может быть ты мне пояснишь практическую ценность этих секций?

                      как пример: у меня GDI+ инициализируется/финализируется в этих секциях
                      т.е. просто подключил модуль и работаем
                        Цитата KILLER @
                        Так ведь у вас же можно через имя модуля вызывать функции? или они должны быть описаны в этих секциях для нормальной компиляции?

                        Ну да, то что лежит в интерфейсной секции.
                          Цитата --Ins-- @
                          Цитата KILLER @
                          Ты так и не ответил на вопрос!


                          Я ответил - все. Все, что делают модули, т.е. содержат различные обявления и реализации. И если ты считаешь что это задача классов, то искренне сочувствую. Гвозди ты тоже лопатой забиваешь?

                          Какие различные объявления и реализации? В ООП просто нет необходимости в таком сборище. В ООП задача решается в терминах объектов и взаимодействия между ними. Для группировки же схожих классов в подсистемы используются неймспейсы и пакеты в стиле Java.
                          Еще раз прошу объяснить, зачем в таком случае нужны модули, ведь достаточно файлов и единиц трансляции.
                            Цитата KILLER @
                            Так ведь у вас же можно через имя модуля вызывать функции? или они должны быть описаны в этих секциях для нормальной компиляции? Допустим если в С++ в глобальном пространстве имен(без неймспейсов) попытаться переопределить системную функцию которая тоже расположена в глобальном пространстве имен, то будет ошибка компиляции, а вот если ее засунуть в свой неймспейс, и вызывать через имя этого неймспейся или внутри него, то уже будет вызвана переопределенная функция.


                            Ты нефига не понял :) Допустим есть необработанное исключение. Если оно возникнет, то будет вызвана специальная функция обработчик. Прикол в том, что адрес этой функции хранится в некой глобальной переменной. Возникло необработанное исключение - читаем адрес и вызываем функцию по адресу. Так вот, в модуле system.pas объявлена такая функция по-умолчанию, она показывает окошко об ошибке с текстом runtime-error. А вот модуль, скажем, SysUtils.pas назначает этой переменной адрес своей функции, которая покажет более развернутую информацию об исключении. А вот в модуле специализированной утилиты-построителя отчетов вообще может быть показан навороченный диалог со стеком вызовов и ссылкой на сайт разработчика :) Понял?
                            Ну, или safecall-исключения можно по другому обрабатывать. По-умолчанию если safecall-вызов привел к исключению, то на вызываемой возбуждается EOleException. Это не всегда удобно, удобнее было бы возбудить то же исключение, что и возникло внутри модуля (если это возможно). Я когда-то писал функцию, которая это делает. Естественно ее нужно установить в initialization

                            Добавлено
                            Цитата Shaggy @
                            как пример: у меня GDI+ инициализируется/финализируется в этих секциях
                            т.е. просто подключил модуль и работаем


                            Хороший пример :yes:
                              Цитата --Ins-- @
                              1. Модуль - это единица компиляции
                              2. Разделение интерфейса от реализации (вот если бы это было в C# - я бы значительно меньше имел против него, но мне очень не нравится необходимость писать код прямо внутри объявления класса)
                              3. Возможность объявить implementation-only идентификаторы (функции, переменные, типы)

                              Для этого достаточно единиц трансляции. Модули, как логическая сущность не нужны

                              Цитата
                              4. initialization/finalization-секции. Классовые конструкторы/деструкторы не заменяют эти возможности, но могут удачно дополнять.

                              Приведи пример, демонстрирующий необходимость подобного механизма. Постараюсь ответить.
                                Цитата Shaggy @
                                как пример: у меня GDI+ инициализируется/финализируется в этих секциях
                                т.е. просто подключил модуль и работаем

                                Оно ведь как я понимаю реализовано с помощью классов? У вас ведь деструкторы/конструкторы автоматом вызываюца

                                Скрытый текст
                                Вотето вы строчите... за вами не успеваю :crazy:
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 27 28 [29] 30 31 ...  494 495


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.1319 ]   [ 15 queries used ]   [ Generated: 28.07.26, 23:43 GMT ]