Студопедия

КАТЕГОРИИ:


Архитектура-(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)

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

Інкапсуляція. Наслідування.

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

Інкапсуляція дозволяє багато в чому ізолювати клас від решти частин програми, зробити його "самодостатнім" для вирішення конкретного завдання. У результаті клас завжди неце в собі деяку функціональність. Наприклад, клас Tform в Delphi містить (інкапсулює в собі) усе необхідне для створення Windows - вікна, клас Ttimer забезпечує роботові таймера і так далі.

Одиницею інкапсуляції в OOD є об' єкт.

Спадкоємство дозволяє створювати ієрархію класів, починаючи з деякого первинного базового класу (предка) і продовжуючи складнішими, такими, що включають (що успадковують) елементи попередніх класів (нащадків або похідних класів).

Будь-який клас може бути породжений від іншого класу. Для цього при його оголошенні вказується ім 'я класу-батька:

Tchildclass = class(мова Object Pascal)

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

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

Об' єднання даних і дій над ними в єдине ціле. Визначальною ідеєю об' єктно - орієнтованого підходу до розроблення сучасних програмних продуктів є поєднання даних і дій, що виконуються над ними, в єдине ціле, яку називають об' єктом.

Функції об' єкта, які у мові програмування C++ називають методами або функціями -членами класу, зазвичай призначені для доступу до даних об' єкта та виконання певних дій над ними. Наприклад, якщо необхідно зчитувати будь- які значення даних об' єкта, то потрібно викликати відповідну функцію, яка їх зчитає та поверне об' єкту. Зазвичай прямий доступ до даних є неможливим, тому сморід приховані від зовнішніх дій, що захищає їх від випадкових змін. Вважають, що дані та методи класу між собою інкапсульовані. Терміни приховання та інкапсуляція даних є ключовими в описі об' єктно - орієнтованих мов програмування.

 

Під інкапсуляцією розуміють об'єднання атрибутів (даних) і методів їх опрацювання в об'єкті.

Методи об'єкта дозволяють визначати так звані властивості цього об'єкта.

Властивостями називають ті дані про об'єкт, які можна отримати в результаті застосування методів.

Поняття властивості об'єкта, таким чином, не співпадає з поняттям атрибута. Так, наприклад, площа геометричної фігури може не входити до списку атрибутів об'єкта Фігура, але її можна обчислити, застосувавши відповідний метод. З іншого боку, деякі атрибути об'єкта можна приховати, якщо не визначити метод їх одержання.

Повний список доступних методів і властивостей об'єкта називають його протоколом.

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

 

Рис 2.2. Принцип інкапсуляції даних і операцій об'єкта.

 

Мал. 1.3. Об' єктно - орієнтований підхід до встановлення зв' язків між даними і методами (функціями)

 

Якщо необхідно змінити значення даних об' єкта, то, очевидно, ця дія також має бути покладена на відповідну функцію об' єкта. Ніякі інші функції не можуть змінювати значення даних об' єкта, тобто дані класу. Такий підхід полегшує написання, відлагодження та використання програми. Таким чином, типова програма, написана мовою C++, складається з сукупності об' єктів, що взаємодіють між собою за допомогою методів, які викликають один одного.

Об' єктно - орієнтований підхід до встановлення зв' язків між даними і функціями (методами) класу, написаної мовою C++, наведено на мал. 1.3.

 

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


Дата добавления: 2013-12-14; Просмотров: 840; Нарушение авторских прав?; Мы поможем в написании вашей работы!


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



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




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