Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Інкапсуляція

Для визначеності зупинимося на підході, використовуваному в COM.

Вступ до компонентного програмування.

У цьому розділі буде дане тільки дуже коротке введення в проблематику компонентного програмування.

Компонентне програмування - спроба вирішити ті проблеми, які виникають при використанні ТОП. Основна ідея -поширення класів в бінарному виді (тобто не у вигляді початкового коду) і надання доступу до методів класу через строго певні інтерфейси, що дозволяє зняти проблему несумісності компіляторів і забезпечує зміну версій класів без перекомпіляції застосувань, що використовують їх.

Тут варто відмітити, що роль інтерфейсів в COM значно важливіша, ніж роль посередника. Вусі в COM починається з інтерфейсів. Сморід визначаються першими і задають семантику деякого сервісу. Різні класи можуть реалізовувати завдань інтерфейс, забезпечуючи тим самим поліморфізм на новому рівні.

Є різні технології, що реалізовують парадигму компонентного програмування. Серед них COM (DCOM, COM+) CORBA,.Net.

Компонент - це сховище (у вигляді DLL або EXE файлу) для одного або декількох класів. Вусі, що знає клієнт про клас, це його унікальний ідентифікатор і один або декілька інтерфейсів, що забезпечують доступ до реалізованим цим класом методам. Допускається реалізація компонента і клієнта, що використовує його, на різних мовах (Visual C++, Visual Basic). У реєстрі системи зберігається інформація про місце розташування компонента, що утримує цей клас (на локальному або видаленому комп' ютері). Це дозволяє системі прозоро для клієнта перенаправляти виклики методів до потрібного компонента і повертати результати.

Таким чином, забезпечується виконання двох важливих принципів компонентного програмування:

· незалежність від мови програмування

· прозорість місця розташування сервера для клієнта.

Основні особливості компонентного програмування можна коротко охарактеризувати таким чином:

У COM інкапсуляція знаходиться на більш високому рівні чим в ТОП. Між клієнтом і реалізацією класу знаходяться інтерфейси. Інтерфейс - абстрактний базовий клас, який не має елементів даних і який являється випрямляємо нащадком не більше ніж одного іншого інтерфейсу. Реалізація методів цього інтерфейсу виконується в класі який є нащадком даного і, можливо, ще інших інтерфейсів.

При дотриманні цих обмежень різні компілятори генерують еквівалентний код для викликів методів інтерфейсу з боку клієнта. Клієнт без перекомпіляції може викликати методи нової версії класу (при збереженні інтерфейсу). Нова версія може мати розширену функціональність за рахунок додавання нових інтерфейсів. Ці нові інтерфейси можуть використовуватися новими клієнтами, старі ж клієнти продовжують працювати із старими інтерфейсами, не знаючи про існування нових.

<== предыдущая лекция | следующая лекция ==>
Синхронізація | Бінарне представлення
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 236; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.065 сек.