к оглавлению   к 4GL - визуальному программированию

Сборка и импорт СОМ-объектов

Модель компонентных объектов (Component Object Model, COM) — объектно-ориентированная архитектура для создания объектов, многократно используемых разными приложениями. Эта архитектура может применяться для написания объектов, доступных из других программных сред, например из Microsoft Visual Basic и Microsoft Visual C+ + , a также из приложений, подобных Microsoft Office. Модель СОМ предоставляет стандартный протокол для соединения объектов между собой, даже если они разработаны на разных языках программирования. После установления соединения объекты взаимодействуют через стандартный интерфейс.

Visual J++ поддерживает создание и импорт СОМ-объектов. Создавая СОМ-объекты на Visual J++, Вы предоставите пользователям многократно используемые компоненты, применимые в произвольном числе приложений, в том числе написанных на разных языках. Возможность импорта СОМ позволяет применять компоненты других приложений для расширения возможностей своих WFC-приложений. Например, можно использовать СОМ-объекты, которые Microsoft Office предоставляет для достуца к функциям проверки правописания в Microsoft Word или к математическим функциям в Microsoft Excel. Применяя модель СОМ в своих проектах на Visual J++, Вы добьетесь подлинно многократного применения кода при разработке своих приложений. Из этой главы Вы узнаете:

Создание объектов СОМ

Visual J++ упрощает создание СОМ-объектов благодаря удобному интерфейсу для выбора тех классов проекта, которые надо использовать в качестве СОМ-классов. Для создания СОМ-объекта можно применять

любой открытый неабстрактный класс. Visual J++ использует общедоступные компоненты класса в качестве интерфейса к объекту СОМ. При сборке проекта классы, выбранные для использования в качестве СОМ-классов, создаются и регистрируются в системе как СОМ-объекты. После создания СОМ-объектов поместите их в COM DLL, чтобы получить доступ к ним из других программных сред или из приложений с поддержкой СОМ.

В данном примере создается СОМ-объект, размещенный в COM DLL, который предоставляет статистические функции, связанные со спортом. Вы научитесь:

Создание проекта

Visual J++ предоставляет шаблон COM DLL, который позволяет создать проект с классом, уже зарегистрированным в качестве СОМ-клас-са. Этот шаблон настроен и на размещение проекта в COM DLL. Подробности о создании проектов COM DLL с использованием этого шаблона см. в разделе «Создание COM DLL» в главе 1 «Создание проектов». Шаблон COM DLL уже имеется, но в здесь он не используется, ибо важно осознать, как в произвольном проекте выбрать класс, который станет СОМ-классом. В этом примере создается пустой проект и затем в него добавляется класс Java, который и будет СОМ-объектом.

Примечание До начала следующей процедуры Закройте все открытые проекты. (Выберите команду Close All из меню File.)

Чтобы создать пустой проект:

  1. Из меню File выберите команду New Project.
  2. На ркладке New выберите папку Visual J++ Projects и затем щелкните значок Empty Project.
  3. В поле ввода Name введите имя проекта. Для данного примера введите Stats.
  4. В поле ввода Location введите путь к каталогу, в котором будет храниться проект, или щелкните Browse, чтобы перейти к соответствующей папке.
  5. Щелкните Open.

Проект появится в Project Explorer. Он не содержит ни одного файла.

Чтобы добавить класс в проект:

  1. В Project Explorer щелкните правой кнопкой мыши имя проекта.
  2. В появившемся меню перейдите в подменю Add и выберите команду Add Class.
  3. Чтобы добавить пустой класс Java, выберите значок Class.
  4. В поле ввода Name введите имя класса Java. Для данного примера назовите класс Stats.java.
  5. Щелкните Open.

Добавление кода в класс

Чтобы клиенты COM DLL могли управлять СОМ-объектом, в СОМ-класс добавляются открытые методы. В Visual J++ все открытые методы Java-класса, включая унаследованные от суперкласса, доступны через интерфейс СОМ-объекта. В данном примере в класс добавляются два метода. Они предоставляют пользователю спортивные статистические функции.

Первый открытый метод, который предоставляет объект Stats, — win-LossPercentage. Он вычисляет процент побед из всех проведенных командой игр.

Чтобы добавить метод winLossPercentage

В этом коде применяется оператор деления по модулю, что позволяет получить остаток от деления числа побед на количество всех проведенных игр. Полученное значение затем умножается на .100f для преобразования к типу, который обычно используется на табло стадиона. После определения значения идет проверка на равенство нулю, что означает отсутствие остатка, т. е. что команда выиграла все свои игры. Если это так, то возвращается значение l.0f. В противном случае возвращается вычисленное значение.

Объект Stats также должен предоставить метод goalsAgainstAverage с модификаторами final и public. Этот метод вычисляет среднее число пропущенных или забитых голов. Оно определяется делением числа голов на число проведенных игр.

Чтобы добавить метод goalsAgainstAverage:

В этом коде число голов делится на количество проведенных игр, и результат приводится к типу float.

Определение класса в качестве класса СОМ

После создания класса и определения открытых методов, доступных через СОМ, необходимо определить класс в качестве СОМ-класса. Для выбора классов из проекта, которые будут СОМ-классами, используйте вкладку COM Classes в диалоговом окне Project Properties.

Примечание Если не нужно определять несколько СОМ-классов, то воспользуйтесь диалоговым окном Class Properties. Для его вывода щелкните правой кнопкой мыши в Class Outline имя класса и выберите команду меню Class Properties. В появившемся диалоговом окне отметьте флажок COM Class.

Чтобы определить класс в качестве СОМ-класса:

  1. В меню Project выберите команду < Project > Properties (где <Рго-ject> — это имя Вашего проекта элемента управления).
  2. Активизируйте вкладку COM Classes. ,
  3. На этой вкладке отметьте флажок Automatically generate Type Library.
  4. В списке классов выберите имя класса, который станет СОМ-объектом. Для данного примера укажите класс Stats.
  5. Щелкните ОК.

Visual J++ добавит тэг комментария @com.register сверху в начало определения класса. При компиляции проекта эта информация будет использована компилятором для регистрации класса в реестре в качестве СОМ-класса.

Размещение проекта в COM DLL

Для доступа других приложений к СОМ-объекту он размещается в COM DLL.

Примечание Для распространения объекта СОМ по Интернету разместите его в САВ-файле, а не в COM DLL.

Чтобы поместить объект СОМ в COM DLL:

  1. В меню Project выберите команду < Project> Properties (где < Project > - имя Вашего проекта элемента управления).
  2. Активизируйте вкладку Output Format.
  3. Отметьте флажок Enable Packaging.
  4. В списке Packaging type выберите COM DLL.
  5. В поле ввода File name введите имя библиотеки (имя по умолчанию создается на основе имени проекта).
  6. В соответствующем списке выберите Outputs of type и Java Classes & Resources.
  7. Щелкните ОК.

Сборка проекта

В процессе сборки Visual J++ помещает СОМ-классы в COM DLL и регистрирует саму DLL и СОМ-классы внутри нее как объекты СОМ. Когда классы находятся в реестре, они доступны для других приложений. Подробнее об импортировании объектов СОМ в Visual J+ + см. следующий раздел «Импорт объектов СОМ».

Чтобы собрать проект:

Примечание Для выполнения дополнительных действий во время регистрации СОМ-класса можно определить в этом классе пользовательский метод под названием onCOMRegister. Такой метод можно применять, например, для регистрации надстройки (add-in) в списке надстроек Visual J++. Этот метод вызывается средой Visual J++ во время процесса регистрации СОМ-классов и самой COM DLL. Вот как он выглядит:

public static void onCOMRegister(boolean register)

{

// Добавьте здесь произвольный код регистрации

}

Импорт объектов СОМ

СОМ-объекты представляют собой прекрасный способ инкапсуляции функциональных возможностей и повторного использования их многими приложениями. СОМ-объекты используют и для предоставления другим приложениям доступа к специфическим возможностям Вашего приложения или для создания набора процедур, которые требуется применять в нескольких приложениях. Поскольку модель СОМ не зависит от языка, СОМ-объекты легко интегрируются в приложения, разработанные на самых разных языках программирования. Visual J+ + используют и для просмотра и импорта СОМ-объектов, зарегистрированных в Вашей системе. В процессе импорта Visual J++ создает классы-оболочки, чтобы можно было обращаться к СОМ-объектам так же, как и к другим Java-объектам.

В данном примере импортируется СОМ-объект, создание которого описано в этой главе в разделе «Создание объектов СОМ». Вы научитесь:

Примечание Предполагается, что СОМ-объект был создан в соответствии с инструкцией из раздела «Создание объектов СОМ» и что все открытые проекты закрыты.

Создание проекта

При импорте СОМ-объекта Visual J++ создает каталоги внутри проекта и добавляет в них классы-оболочки для доступа к СОМ-объекту в этих каталогах. Для импорта СОМ-объекта необходим действующий Java-проект.

Чтобы создать проект:

  1. Из меню File выберите New Project.
  2. На вкладке New раскройте папку Visual J++ Projects, щелкните Applications и затем — значок Windows Application.
  3. В поле ввода Name введите имя проекта.
  4. В поле ввода Location введите путь к каталогу, в котором будет храниться проект, или щелкните Browse, чтобы перейти к соответствующей папке.
  5. Щелкните Open.

    В Project Explorer появится свернутое изображение проекта.

  6. В Project Explorer раскройте узел проекта.

В проект добавится файл с именем по умолчанию Forml.java.

Импорт СОМ-объекта

После создания проекта в него можно импортировать СОМ-объекты. СОМ-объект следует импортировать в каждый проект, где нужен доступ к такому объекту. При импорте СОМ-объекта в проект Visual J+ + создает классы-оболочки, которые предоставляют интерфейс для доступа к объекту. Эти классы-оболочки добавляются в пакеты в каталоге проекта. (В зависимости от числа объектов, хранящихся в COM DLL, Visual J++ может создать несколько пакетов )

Примечание При получении доступа к конкретному СОМ-объекту из других проектов можно обойтись без создания оболочки в каждом проекте, поместив классы-оболочки в Classpath.

Чтобы импортировать СОМ-объект:

  1. В меню Project выберите Add COM Wrapper. Появится диалоговое окно COM Wrappers.
  2. В списке, который содержит COM DLL и библиотеки типов, зарегистрированные на Вашем компьютере, выберите имя импортируемого СОМ-объекта.

    Для данного примера выберите объект Stats.

  3. Щелкните ОК.

Visual J++ добавит каталоги пакетов и классы-оболочки для каждого объекта СОМ, содержащегося в выбранной COM DLL.

Добавление кода для доступа к СОМ-объекту

После того как Visyal J + + создаст классы-оболочки, можно написать код для доступа к методам СОМ-объекта. В данном примере код добавляется в конструктор основной формы проекта. Этот код создает экземпляр объекта СОМ и вызывает два его метода. Методы используют явно заданные параметры, а их результаты отображаются в окне Output.

Чтобы добавить код в конструктор формы:

  1. В Project Explorer щелкните правой кнопкой мыши на Forml и выберите команду View Code.

    В текстовом редакторе появится исходный код для Forml.

  2. В конструкторе Forml следом за вызовом initForm добавьте следующий код:

statisticsobject.Stats stats = new statisticsobject.Stats();

System.out.println("0ur team has a winning percentage of " +stats.winl_ossPercentage(10, 4));

System.out.println("0ur goaltender has a Goals Against Average of " +stats.goalsAgainstAverage(12, 15));

Здесь создается экземпляр объекта Stats. Ссылка на statisticobject перед объектом Stats — это имя пакета, в котором созданы классы-оболочки для Stats. После определения экземпляра Stats вызываются его методы winLossPercentage и goalsAgainstAverage с явно заданными параметрами, и результаты посылаются в окно Output при помощи вызова System. out. println.

Сборка и запуск проекта

После вставки вызовов методов СОМ-объекта соберите и запустите проект.

  1. В меню Build выберите команду Build. (При появлении любых сообщений об ошибках компиляции исправьте их и заново соберите проект.)
  2. Чтобы запустить форму, щелкните Start из меню Debug.

После запуска проекта Вы увидите в окне Output результаты вызовов методов объекта Stats. (Чтобы увидеть окно Output, из меню View перейдите в подменю Other Windows и затем выберите команду Output.)

к оглавлению   к 4GL - визуальному программированию

Знаете ли Вы, как разрешается парадокс Ольберса?
(Фотометрический парадокс, парадокс Ольберса - это один из парадоксов космологии, заключающийся в том, что во Вселенной, равномерно заполненной звёздами, яркость неба (в том числе ночного) должна быть примерно равна яркости солнечного диска. Это должно иметь место потому, что по любому направлению неба луч зрения рано или поздно упрется в поверхность звезды.
Иными словами парадос Ольберса заключается в том, что если Вселенная бесконечна, то черного неба мы не увидим, так как излучение дальних звезд будет суммироваться с излучением ближних, и небо должно иметь среднюю температуру фотосфер звезд. При поглощении света межзвездным веществом, оно будет разогреваться до температуры звездных фотосфер и излучать также ярко, как звезды. Однако в дело вступает явление "усталости света", открытое Эдвином Хабблом, который показал, что чем дальше от нас расположена галактика, тем больше становится красным свет ее излучения, то есть фотоны как бы "устают", отдают свою энергию межзвездной среде. На очень больших расстояниях галактики видны только в радиодиапазоне, так как их свет вовсе потерял энергию идя через бескрайние просторы Вселенной. Подробнее читайте в FAQ по эфирной физике.

НОВОСТИ ФОРУМА

Форум Рыцари теории эфира


Рыцари теории эфира
 10.11.2021 - 12:37: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
10.11.2021 - 12:36: СОВЕСТЬ - Conscience -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
10.11.2021 - 12:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от д.м.н. Александра Алексеевича Редько - Карим_Хайдаров.
10.11.2021 - 12:35: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
10.11.2021 - 12:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вадима Глогера, США - Карим_Хайдаров.
10.11.2021 - 09:18: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> Волновая генетика Петра Гаряева, 5G-контроль и управление - Карим_Хайдаров.
10.11.2021 - 09:18: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
10.11.2021 - 09:16: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
10.11.2021 - 09:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Екатерины Коваленко - Карим_Хайдаров.
10.11.2021 - 09:13: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вильгельма Варкентина - Карим_Хайдаров.
Bourabai Research - Технологии XXI века Bourabai Research Institution