
- •Раздел 4. Разработка по Тема 4.1. Проектирование интерфейса с пользователем
- •4.1.1. Типы пользовательских интерфейсов.
- •4.1.2. Пользовательская и программная модели интерфейса.
- •4.1.3. Разработка диалогов.
- •4.1.4. Основные компоненты графических пользовательских интерфейсов.
- •Тема 4.2. Реализация графических пользовательских интерфейсов.
- •4.2.1. Диалоги, управляемые пользователем.
- •4.2.2. Диалоги, управляемые системой.
- •4.2.3. Использование метафор.
- •4.2.4. Технология Drag and Drop.
- •4.2.5. Интеллектуальные элементы.
- •4.3.1. Базовые типы данных.
- •Константы
- •Область действия имен
- •4.3.2. Указатели и адресная арифметика.
- •4.3.3. Составные типы данных. Структуры
- •Битовые поля
- •Определение типов
- •Перечислимые типы
- •4.3.4. Выражения и операции.
- •4.3.5. Управляющие конструкции. Условные операторы
- •Операторы циклов
- •4.4.1. Статические одномерные массивы.
- •4.4.2. Статические многомерные массивы.
- •4.4.3. Динамические массивы.
- •4.4.4. Массивы указателей.
- •4.5.1. Стеки.
- •4.5.2. Очереди.
- •4.5.3. Списки.
- •4.5.4. Бинарные деревья.
- •4.6.1. Объявление классов и экземпляров классов.
- •4.6.2. Инкапсуляция данных и методов.
- •4.6.3. Конструкторы классов.
- •Конструктор по умолчанию
- •Конструктор копирования
- •4.6.4. Деструкторы классов.
- •4.7.1. Разделы в описании класса.
- •4.7.2. Friend-конструкции.
- •4.7.3. Статические члены классов.
- •4.7.4. Использование описателя const в классах.
- •4.8.1. Вложенность классов.
- •4.8.2. Наследование данных и методов.
- •4.8.3. Типы наследования.
- •4.9.1. Полиморфизм раннего связывания.
- •4.9.2. Полиморфизм позднего связывания и виртуальные функции.
- •4.9.3. Абстрактные методы и классы.
- •4.10.1. Функции консольного ввода-вывода.
- •4.10.2. Функции файлового ввода-вывода.
- •4.10.3. Использование библиотеки классов потокового ввода-вывода.
- •4.11.1. Перегрузка операций.
- •4.11.2. Шаблоны функций.
- •4.11.3. Шаблоны классов.
- •4.11.4. Обработка исключений.
- •Тема 4.12. Com-технология.
- •4.12.1. Основные понятия.
- •4.12.2. Типы интерфейсов.
- •Свойства интерфейсов
- •Типы интерфейсов
- •4.12.3. Типы com-объектов.
- •4.12.4. Фабрика классов.
- •Тема 4.13. Построение com-сервера.
- •4.13.1. Язык idl.
- •Содержимое файла idl
- •4.13.2. Определение пользовательского интерфейса.
- •4.13.3. Реализация пользовательского интерфейса.
- •4.13.4. Создание тестового клиента.
- •Тема 4.14. Обзор платформы ms .Net.
- •4.14.1. Общая идея архитектуры .Net.
- •4.14.2. Достоинства и недостатки .Net.
- •4.14.3. Схема трансляции программ в .Net.
- •4.14.4. Язык msil.
- •4.14.5. Объектно-ориентированная модель .Net.
4.12.3. Типы com-объектов.
Вы можете упаковать объекты СОМ тремя способами: в виде клиентов, в виде серверов и в виде элементов ActiveX. Рассмотрим коротко каждый способ.
Клиенты COM
Клиенты СОМ являются приложениями или инструментами программирования, которые управляют одним или несколькими объектами СОМ. Эти объекты могут существовать в этом же приложении или в каком-то другом. Клиенты используют существующие объекты, создают новые экземпляры объектов, получают и устанавливают свойства, а также вызывают методы, поддерживаемые объектом.
Инструментальные средства VB представляют собой клиента СОМ. Можно использовать VB и подобные инструменты программирования для создания упакованных сценариев, имеющих доступ к объектам автоматизации. Можно создать клиентов, выполнив следующие действия:
• написав программный код в приложении, которое с помощью средств автоматизации обращается к объектам, предоставляемым другим приложением;
• изменив существующий инструмент программирования, например встроенный макроязык, для добавления поддержки автоматизации;
• разработав новое приложение, например компилятор или броузер информации о типе (type information), который поддерживает автоматизацию.
Серверы СОМ
Объекты СОМ могут существовать в том же процессе, что и их контроллер (controller). Также их можно переместить в другой процесс.
• Объекты внутрипроцессного сервера (in-of-process server) реализуются в виде модулей DLL и исполняются внутри пространства процесса контроллера.
• Объекты внепроцесспого сервера (out-of-process server) реализуются в виде исполняемых файлов и исполняются в отдельном пространстве процесса.
Доступ к объектам внутрипроцессного сервера гораздо быстрее, чем к объектам внепроцессного сервера, поскольку средствам автоматизации не требуется выполнять удаленный вызов процедур за границами процесса. Это справедливо, если вы ограничитесь средствами VB.
Объекты внутрипроцессного сервера фактически могут исполняться как автономные объекты, если они исполняются под управлением псевдопроцесса (surrogate process), (как стандартного псевдопроцесса, так и пользовательского). Клиенты без всяких затруднений могут создавать внепроцессные объекты, базирующиеся на модулях DLL. Далее мы это рассмотрим.
Механизм доступа (интерфейс IDispatch или таблица VTBL) и локализация объекта (внутрипроцессный или внепроцессный сервер) определяют неизменную долю накладных расходов, требуемых для-доступа к объектам СОМ. Наиболее важные факторы, влияющие на производительность, — специфика и объем работы, выполняемой вызываемыми методами и процедурами. Если метод требует значительных расходов времени или вызова удаленных процедур, то накладные расходы на вызов IDispatch делают вызов функций таблицы VTBL наиболее эффективным решением.
Элементы ActiveX
Элементы ActiveX реализуются в виде внутрипроцессного сервера, который можно использовать в любом контейнере OLE, например VB. Различие между элементом ActiveX и внутрипроцессным сервером СОМ в том, что элементы ActiveX, как правило, имеют пользовательский интерфейс. Полный набор функциональных возможностей элемента ActiveX доступен только при использовании внутри контейнера, сконструированного специально под элементы ActiveX.
В элементах ActiveX используется несколько программных компонентов, эффективно взаимодействующих с контейнером элемента ActiveX и его пользователем.
ООП и СОМ
При разработке и использовании COM активно применяются средства объектно-ориентированного программирования. Однако в понятии “объект” в ООП и COM есть различия.
В ООП объекты являются экземплярами класса при выполнении программы. Вы не можете работать с объектом во время разработки программы; вы можете работать только с классами.
Объект называется объектом СОМ, если он удовлетворяет рассмотренным правилам СОМ. Совокупность объектов в компилированной форме, обеспечивающая набор функциональных возможностей, называется компонентом. Таким образом, компонент — это совокупность объектов, удовлетворяющих правилам СОМ и компилированных в бинарную форму.