IDL-описаниеи библиотека типа

Помимо информации об интерфейсах, IDL-описание может содержать информацию о библиотеке типа.

Библиотека типа определяет важные для клиента характеристики СОМ-объекта: имя его класса, поддерживаемые интерфейсы, имена и адреса элементов интерфейса.

Рассмотрим пример приведенного ниже IDL-описания объекта для работы с файлами. Оно состоит из 3 частей. Первые две части описывают интерфейсы IРаботаСФайлами и IПреобразованиеФорматов, третья часть— библиотеку типа ФайлыБибл. По первым двум частям компилятор MIDL генерирует код посредников и заглушек, по третьей части — код библиотеки типа:

-----------1-я часть

[ object,

uuid(E7CDODOO-1827-11CF-9946-444553540000) ]

interface IРаботаСФайлами; IUnknown

{ import "unknown.idl"

HRESULT ОткрытьФайл ([in] OLECHAR имя[31]);

HRESULT ЗаписатьФайл ([in] OLECHAR имя[31]);

HRESULT ЗакрытьФайл ([in] OLECHAR имя[31]);

}

----------- 2-я часть

[ object.

uuid(5FBDD020-1863-11CF-9946-444553540000) ]

interface IПреобразованиеФорматов: IUnknown

{ HRESULT ПреобразоватьФормат ([in] OLECHAR имя[31],

[in] OLECHAR формат[31]);

}

------------ 3-я часть

[ uuid(B253E460-1826-11CF-9946-444553540000),

version (1.0)]

library ФайлыБибл

{ importlib ("stdole32.tlb");

[uuid(B2ECFAAO-1827-11CF-9946-444553540000) ]

coclass СоФайлы

{ interface IРаботаСФайлами;

interface IпреобразованиеФорматов;

}

}

Описание библиотеки типа начинается с ее уникального имени (записывается после служебного слова uuid), затем указывается номер версии библиотеки.

После служебного слова library записывается символьное имя библиотеки (ФайлыБибл).

Далее в операторе importlib указывается файл со стандартными определениями IDL - stdole32.tlb.

Тело описания библиотеки включает только один элемент — СОМ-класс (coclass), на основе которого создается СОМ-объект.

В начале описания СОМ-класса приводится его уникальное имя (это и есть идентификатор класса — CLSID), затем символьное имя — СоФайлы. В теле класса перечислены имена поддерживаемых интерфейсов — РаботаСФайлами и IПреобразованиеФорматов.

Как показано на рис. 13.24, доступ к библиотеке типа выполняется по стандартному интерфейсу ITypeLib, а доступ к отдельным элементам библиотеки — по интерфейсу ITypelnfo.

IDL-описаниеи библиотека типа - student2.ru

Рис. 13.24. Доступ к библиотеке типа

Диаграммы размещения

Диаграмма размещения (развертывания) — вторая из двух разновидностей диаграмм реализации UML, моделирующих физические аспекты объектно-ориентированных систем. Диаграмма размещения показывает конфигурацию обрабатывающих узлов в период работы системы, а также компоненты, «живущие» в них.

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

Узлы

Узел — физический элемент, который существует в период работы системы и представляет компьютерный ресурс, имеющий память, а возможно, и способность обработки. Графически узел изображается как куб с именем (рис. 13.25).

IDL-описаниеи библиотека типа - student2.ru

Рис. 13.25.Обозначение узла

Как и класс, узел может иметь дополнительную секцию, отображающую размещаемые в нем элементы (рис. 13.26).

IDL-описаниеи библиотека типа - student2.ru

Рис. 13.26.Размещение компонентов в узле

Сравним узлы с компонентами. Конечно, у них есть сходные характеристики:

q наличие имени;

q возможность быть вложенным;

q наличие экземпляров.

Последняя характеристика говорит о том, что на предыдущем рисунке изображен тип Контроллера. Изображение конкретного экземпляра, принадлежащего этому типу, представлено на рис. 13.27.

Теперь обсудим отличия узлов от компонентов. Во-первых, они принадлежат к разным уровням иерархии в физической реализации системы. Физически система состоит из узлов, а узлы — из компонентов. Во-вторых, у каждого из них свое назначение. Компонент предназначен для физической упаковки и материализации набора логических элементов (классов и коопераций). Узел же является тем местом, где физически размещаются компоненты, то есть играет роль «квартиры» для компонентов.

IDL-описаниеи библиотека типа - student2.ru

Рис. 13.27.Экземпляр узла

Отношение между узлом и компонентами, которые он размещает, можно отобразить явно. Отношение зависимости между узлом Контроллер и компонентами Вводы.ехе, Выводы.ехе иллюстрирует рис. 13.28. Правда, чаще всего такие отношения не отображаются. Их удобно представлять в отдельной спецификации узла.

IDL-описаниеи библиотека типа - student2.ru

Рис. 13.28.Зависимость узла от компонентов

Группировку набора объектов или компонентов, размещаемых в узле, обычно называют распространяемым модулем.

Для узла, как и для класса, можно задать свойства и операции. Например, можно определить свойства БыстродействиеПроцессора, ЕмкостьПамяти, а также операции Запустить, Выключить.

Наши рекомендации