Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otvety_po_OAiPR.doc
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
1.23 Mб
Скачать

197) Компонентно-ориентированный подход

Программный компонент – это автономный элемент программного обеспечения,

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

Компонентно-ориентированный подход.

198) Классы объектов. Компоненты и их свойства.

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

Теперь дадим определение компонента. Компонент - это объединенные в отчуждаемую форму исполняемый бинарный код и данные, которые могут использоваться для построения программных систем. Отчуждаемость подразумевает возможность использования компонента без дополнительных знаний о нем. На практике это означает, что компонент сам должен содержать сведения о себе. Компонент должен также иметь внешний (публичный) интерфейс. Интерфейс является как бы механизмом, через который можно запустить находящийся внутри компонента код. Отчуждаемость также означает, что экземпляр компонента может быть создан динамически, и что для этого не обязательно использовать всякого рода компиляторы и интерпретаторы.

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

Интересно, что практически любой класс в .NET отвечает этим требованиям. Метаинформация создаются для любого элемента класса (будь он трижды скрытым), экземпляр любого класса можно динамически создать, и любой класс помещается в сборки (один или более исполнимых модулей), которые можно распространять независимо. В общем, можно было бы спокойно сказать, что любой класс в .NET - это компонент, если бы... Если бы не наличие отдельного класса с именем Component.

Класс Component и интерфейс IComponent

Класс Component является стандартной реализацией интерфейса IComponent, а интерфейс IComponent указывает на то, что реализующий его класс является компонентом. Зачем, спросите вы? Ведь, по сути, в .NET любой класс является компонентом! Все очень просто. Хотя это и не обязательно, но обычно, когда говорят о компонентах, подразумевают, что экземпляры класса будут использоваться в той или иной визуальной среде разработки (RAD). При этом для тесной интеграции компонента с IDE ему может понадобиться обратная связь с этой самой IDE. Такая обратная связь предоставляется через так называемый сайт. Сайт - это некоторая абстракция, ассоциируемая с каждым компонентом и дополняющая компонент специфической для контейнера информацией, например, такой, как имя компонента (в VS.NET у компонента во время исполнения имени нет, оно есть только во время разработки), а также обеспечивающая обратную связь с контейнером. В .NET сайт реализуется через интерфейс ISite. ISite назначается компоненту через свойство IComponent.Site. IComponent к тому же происходит от интерфейса IDisposable, который отвечает за освобождение unmanaged-ресурсов. Но это скорее уже дополнительная функция, которая, хотя и часто встречается, необходимой не является.

Создать компонент очень просто. Нужно создать сборку (в виде DLL, в визарде проектов VS.NET нужно выбрать проект "Class Library"), в которую поместить класс, унаследованный от Component (который также можно создать с помощью визарда - если в контекстном меню проекта выбрать "Add->Add New Item" и затем выбрать "Component Class") или IComponent. Вот простой вариант (на C#)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]