Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

О.О.П / ооп / 3_техн / Лекції / Лекція 2 у

.pdf
Скачиваний:
27
Добавлен:
30.05.2020
Размер:
580.36 Кб
Скачать

Мал. 3 Ієрархія класів Вікно і Окно_меняющєє_цвет

Таким чином, в ієрархічному дереві класів у міру видалення від кореня ми зустрічає все більш складні класи, екземплярами яких будуть об'єкти з складнішою

структурою і поведінкою.

Спадкоємство властивостей в ієрархії істотно спрощує роботу програміста. В

даний час створені бібліотеки найбільш класів, що часто зустрічаються, які можна

використовуватизновізнов,будуючинаїхоснові класидлявирішеннярізнихзавдань.

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

Для реалізації таких ієрархій в мові програмування повинен бути передбачений

поліморфізм, що забезпечує можливість завдання різних реалізацій деякого єдиного по назві методу для класів різних рівнів ієрархії. У ООП такий поліморфізм називається простим, а

методи, що мають однакову назву, - статичними поліморфними. Сукупність

поліморфних методів з одним ім'ям для ієрархії класів утворює єдиний поліморфний

метод ієрархії, в якому реалізація поліморфного методу для конкретного класу

представляє окремий аспект.

Примітка. Термін «поліморфізм» в програмуванні, відповідно до свого

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

Розрізняють декілька термінів, пов'язаних з конкретними механізмами реалізації

поліморфізму для різних випадків:

чистий поліморфізм - використовується для позначення того, що один код функції може по-різному інтерпретуватися залежно від типу аргументів;

використовується в мовах високого рівня абстракції, наприклад, в мові LISP або

SMALLTALK;

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

якщо вибір визначається типом аргументів, то перевантаження називається

параметричним; наприклад, мова C++ дозволяє розробникові виконувати

параметричне перевантаження функцій поза класами;

перевизначення (простій полиформизм) - використовується в ООП за наявності різних визначень методів в ієрархії класів, конкретний метод визначається типом об'єкту

21

при компіляції програми (раннє скріплення), методи називаються статичними поліморфними;

поліморфні об'єкти (складний поліморфізм) - використовуються в ООП за

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

називаються віртуальними поліморфними (розглянуті далі);

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

аргументів методів класу (розглянуті далі).

Об'єкти

Уявіть собі будь-який існуючий об'єкт, допустимий, кішку. Можна сказати, що у кішки є властивості, такі як ім'я, вік і забарвлення; у кішки також є типи поведінки, наприклад,

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

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

об'єкт (допустимо, хімічний процес).

Класи і члени класів

Продовжуючи аналогію з реальним світом, уявіть, що у нас є декілька кішок різного

забарвлення, віку і з різними кличками, кожна з яких по-своєму їсть і мурлычит. Але

всупереч їх індивідуальним особливостям, всі кішки є, виражаючись мовою ООП,

представниками однієї категорії, одного класу: класу кішок. У термінології ООП, кожна

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

Також, в об'єктно-орієнтованому програмуванні клас визначає нарис характеристик

об'єкту. Характеристики і поведінка класу також розповсюджуються на членів цього класу. Характеристики (у випадку з кішкою: забарвлення, вік і кличка) називаються

властивостями класу і представляються змінними; варіанти поведінки (кішки їдять,

сплять) називається методами класу і представляються функціями

Спадкоємство

Одна з основних переваг ООП полягає в тому, що ви можете створювати підкласи

класу; підклас успадковує всі властивості і методи суперкласу. Підклас зазвичай оголошує додаткові методи і властивості або розширює суперклас. Підкласи також

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

22

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

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

одному з важливих завдань при розробці.

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

У об'єктно-орієнтованому дизайні об'єкти розглядаються як “чорні ящики”, що містять або, іншими словами, що інкапсулюють функціональність. Програміст повинен мати можливість взаємодіяти з об'єктом, знаючи лише його властивості, методи і події (його

програмний інтерфейс), без знання деталей їх виконання. Цей підхід дозволяє програмістам думати абстрактніше і будувати основу для складних систем.

Завдяки інкапсуляції, наприклад, ActionScript 2.0 включає контроль доступу, тобто деталі виконання можуть бути зроблені невидимими для коди поза даним об'єктом. Код поза об'єктом взаємодіє з програмним інтерфейсом об'єкту, а не з деталями виконання.

Це надає ряд переваг; наприклад, це дозволяє творцеві об'єкту міняти структуру його виконання, не зачіпаючи код поза об'єктом, до тих пір, поки програмний інтерфейс

залишається незмінним.

Поліморфізм

ООП дозволяє вам встановлювати відмінності між окремими класами за допомогою техніки, званою polymorphism, завдяки якій класи можуть перевизначати методи своїх суперкласів і самим визначати виконання цих методів.

Наприклад, ви можете почати з класу Ссавці, у якого є методи Грати() і Спати(). Потім ви створюєте підкласи Кішки, Собаки і Мавпи. Підкласи перевизначають метод Грати() класу Ссавці, щоб відобразити особливості кожного з тварин. Клас Мавпи перевизначає метод Грати()как Стрибок з дерева; Кішки — як Гра з клубком; Собаки — як Лов м'яча. Оскільки функціональність методу Спати() для тварин схожа, ви використовуєте визначення методу з суперкласу.

Контрольні запитання:

1.Технологічні засоби розробки об'єктного підходу.

2.Які принципи покладен в іоснову ООП.

3.Які види ієрархії використовуються в ООП.

4.Об'єктно-орієнтовані мови програмування.

23

5. Етапи розробки програмних систем з використанням ООП

Література:

1.Архангельский А.Я. Программирование в Delphi 7, М.,: ООО «Бином-Пресс»,

2003 г. – 1152 с.

2.Дарахвелидзе П. Г., Марков Е. П. Программирование в Delphi 7. — СПб.: БХВ-

Петербург, 2003. — 784 с: ил.

3.Колосов С.В. Программирование в среде Delphi., - Мн.: БГУИР, 2005, - 164 с.

4.Иванова Г.С., Ничушкина Т.Н., Пугачев Е.К. Об'ектно-ориентированное

программирование: Учеб. Для вузов / Под ред. Г.С.Ивановой. – М.: Изд-во МГТУ

им. Н.Э.Баумана, 2001 – 320с.

5.Пестриков В.М., Маслобоев А.Н., Delphi на примерах. – СПб.: БХВ – Петербург, 2005. 496 с.

24

Соседние файлы в папке Лекції