
- •Понятие компонента. Преимущества и недостатки использования компонентного подхода к проектированию программ.
- •Использование статических библиотек к проектированию программ: создание библиотеки, использование, распространение библиотек, достоинства и недостатки.
- •Динамические библиотеки с неявным связыванием: создание библиотеки, использование, распространение библиотек, достоинства и недостатки.
- •Разработка динамических библиотек с явным связыванием: создание библиотеки, использование, распространение библиотек, достоинства и недостатки.
- •Разработка клиентов динамических библиотек с явным связыванием. Функции, используемые для разработки клиента. Функция DllMain().
- •Основы com: понятие клиент-серверных систем, этапы взаимодействия клиента и сервера. Задачи, решаемые в com-технологии.
- •Именование com-объектов. Guid. Использование guid. Хранение guid в системе.
- •Теория интерфейсов. Виртуальная функция. Таблица виртуальных функций. Интерфейс iUnknown.
- •Интерфейс iUnknown. Метод QueryInterface(): параметры, возвращаемое значение, пример использования. Использование QueryInterface().
- •Реализация метода QueryInterface(). Правила использования QueryInterface().
- •Время жизни компонента. Метод AddRef() и Release(). Правила подсчета ссылок.
- •Время жизни компонента. Метод Release(). Правила подсчета ссылок.
- •Реализация компонента в виде динамической библиотеки. Диаграмма компонент.
- •Обработка ошибок в com. Hresult. Макросы succedeed() и fail().
- •Хранение guid в реестре. Информация о классе, хранимая в реестре. Инициализация com-библиотеки в клиенте.
- •Создание объектов при помощи функции CoCreateInstance(). Использование. Достоинства, недостатки.
- •Фабрика классов. Интерфейс iClassFactory(). Методы этого интерфейса. Метод GetClassObject().
- •Фабрика классов. Протокол использования фабрики классов с использованием интерфейса iClassFactory().
- •Функции, обеспечивающие работу динамической библиотеки с компонентом.
- •Регистрация классов в реестре. Способы регистрации компонент в реестре.
- •Динамическая библиотека с явным подключением
1. Понятие компонента. Преимущества и недостатки использования компонентного подхода к проектированию программ. 2
2. Использование статических библиотек к проектированию программ: создание библиотеки, использование, распространение библиотек, достоинства и недостатки. 3
3. Динамические библиотеки с неявным связыванием: создание библиотеки, использование, распространение библиотек, достоинства и недостатки. 3
4. Разработка динамических библиотек с явным связыванием: создание библиотеки, использование, распространение библиотек, достоинства и недостатки. 4
5. Разработка клиентов динамических библиотек с явным связыванием. Функции, используемые для разработки клиента. Функция DllMain(). 5
6. Основы COM: понятие клиент-серверных систем, этапы взаимодействия клиента и сервера. Задачи, решаемые в COM-технологии. 6
7. Именование COM-объектов. GUID. Использование GUID. Хранение GUID в системе. 6
8. Теория интерфейсов. Виртуальная функция. Таблица виртуальных функций. Интерфейс IUnknown. 7
9. Интерфейс IUnknown. Метод QueryInterface(): параметры, возвращаемое значение, пример использования. Использование QueryInterface(). 8
10. Реализация метода QueryInterface(). Правила использования QueryInterface(). 9
11. Время жизни компонента. Метод AddRef() и Release(). Правила подсчета ссылок. 9
12. Время жизни компонента. Метод Release(). Правила подсчета ссылок. 10
13. Реализация компонента в виде динамической библиотеки. Диаграмма компонент. 11
14. Обработка ошибок в COM. HRESULT. Макросы SUCCEDEED() и FAIL(). 11
15. Хранение GUID в реестре. Информация о классе, хранимая в реестре. Инициализация COM-библиотеки в клиенте. 12
16. Создание объектов при помощи функции CoCreateInstance(). Использование. Достоинства, недостатки. 12
17. Фабрика классов. Интерфейс IClassFactory(). Методы этого интерфейса. Метод GetClassObject(). 12
18. Фабрика классов. Протокол использования фабрики классов с использованием интерфейса IClassFactory(). 13
19. Функции, обеспечивающие работу динамической библиотеки с компонентом. 13
20. Регистрация классов в реестре. Способы регистрации компонент в реестре. 14
Динамическая библиотека с явным подключением 14
Динамическая библиотека с неявным подключением 15
Клиентская часть компонента 15
Динамическая библиотека 16
Статическая библиотека 16
Понятие компонента. Преимущества и недостатки использования компонентного подхода к проектированию программ.
Компонент — в программировании, множество языковых конструкций (например, классов в ООП языках), объединенных по общему признаку. В большинстве языков программирования нет языковых конструкций прямо отражающих понятие компонента. Компоненты реализуются с помощью стандартных конструкций, таких как классы.
Компонент – это класс, который множественно наследует интерфейсы.
Компонент – двоичный код, готовый к выполнении.
Компонентный подход программирования широко поддерживается фреймворками (программными каркасами).
Компонент — «независимый модуль программного кода, предназначенный для повторного использования и развертывания».
Может содержать «множественные классы».
Как правило, независим от конкретного языка.
Преимущества
Компонет можно распределять по сети и разрабатывать на заказ.
Можно разрабатывать универсальные библиотеки компонентов, которые используются повторно.
Можно использовать библиотеки компонентов для быстрой разработки.
Легче адаптировать приложения, поскольку для изменения нужно модифицировать нужный компонент
Недостатки
Используя компонент как готовый элемент, нужно разработать программное обеспечение с учётом его особенностей. Невозможно поменять компонент под нужды конкретной программы.
При отладке невозможно пройтись по коду компонента в пошаговом режиме, чтобы понять, как он работает
Часто содержит избыточную функциональность для конкретной программы.
Может бать не оптимален с точки зрения используемы ресурсов.
В начало
Использование статических библиотек к проектированию программ: создание библиотеки, использование, распространение библиотек, достоинства и недостатки.
Статическая библиотека – исполнимый код и таблица точек кода, которые позволяют вызвать те или иные методы.
Статическая библиотека – набор функций, который можно вызвать из основной программы. Этот набор функций будет работать с той же кучей памяти, что и основная программа.
Достоинства
Проект, откомпилированный со статической библиотекой является самодостаточным. Для его работы не требуются другие компоненты, находящиеся вне его, поскольку сама библиотека включена в состав исполнимого кода файла.
Недостатки
Файлы получаются большими, так как каждый исполнимый файл включает в себя все свои библиотеки.
В начало
Динамические библиотеки с неявным связыванием: создание библиотеки, использование, распространение библиотек, достоинства и недостатки.
Динамическая библиотека - Часть основной программы, которая загружается в ОС по запросу работающей программы в ходе её выполнения, то есть динамически.
Динамические библиотеки должны быть созданы как специальный проект, который содержит экспортируемые функции, подключаемые на разных этапах выполнения программы.
Один и тот же набор функций (подпрограмм) может быть использован сразу в нескольких работающих программах, из-за чего они имеют ещё одно название — библиотеки общего пользования.
Динамические библиотеки хранятся обычно в определенном месте и имеют стандартное расширение.
Существует два способа подключения динамических библиотек:
С неявным подключением (Implicit Linking)
С явным подключением (Explicit Linking)
При неявном подключении клиент выглядит так же, как и при использовании статической библиотеки.
Динамические библиотеки подключаются в момент загрузки в память.
Недостатки (неявное)
Медленная загрузка
Загружаются все .dll, а используются только некоторые
в случае, если модуль, который содержит в себе критическую часть, отсутствует, программа не сможет продолжить работу.
Достоинства
Текст клиента не изменится
Код проще
Если динамическая библиотека загружена в адресное пространство самой ОС (System Library), то единственная копия может быть использована множеством работающих с нею программ.
Динамическая библиотека может быть использована в качестве плагина, расширяющего функциональность программы.
В начало