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

1.2.Парадигма ооп

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

Колись, наприкінці минулого сторіччя, ООП вважалося новим підходом у програмуванні. Це було дійсно так, оскільки воно встановлювало нову парадигму, відмінну від попередніх підходів у програмуванні: процедурне програмування (мови типу PASCAL, C), логічне програмування (мови типу PROLOG), функціональне програмування (мови типу LISP).

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

Наведемо приклад, що показує відмінність ООП від інших підходів. Розглянемо вираз такого виду: “Петро неохайно поставив чашку й розбив її”. Саме так трактується ситуація, що виникла, за допомогою імперативних мов. Теж саме з погляду об’єктно-орієнтованого підходу виглядає в такий спосіб: “Петро зачепив чашку, чашка покотилася по столу, впала і розбилася”. У першому варіанті дії розвивалися згідно відносин, що встановилися між Петром і чашкою. У другому випадку чашка розбилася в силу властивих їй особливостей: після того, як Петро її зачепив, вона покотилася, впала й розбилася. В ООП всі об'єкти відповідають самі за себе, але вони можуть обмінюватися повідомленнями, впливаючи один на одного.

Алан Кей, якого називають батьком ООП, вважає наступні положення фундаментальними характеристиками об’єктно-орієнтованого підходу:

  1. Всі сутності, що розглядаються, є об'єктами.

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

  3. Кожний об'єкт має незалежну пам'ять, що визначає властивості даного об'єкта.

  4. Кожний об'єкт є представником деякого класу, що виражає властивості подібних об'єктів.

  5. У класі також задається поведінка (функціональність) об'єкта – те, як він повинен діяти при отриманні тих або інших повідомлень. Тим самим, всі об'єкти, як екземпляри даного класу, можуть виконувати однакові дії в подібних ситуаціях.

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

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

З погляду на взаємодію даних і дій над ними розходження в процедурно-орієнтованому (мови типів ALGOL, FORTRAN, PL/I, PASCAL, C) і об’єктно-орієнтованому підходах виражається в наступному. Процедурно-орієнтовані мови реалізують схему, представлену на рис. 1.4.

Рис. 1.4. Топологія процедурно-орієнтованих мов програмування

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

Рис. 1.4. Топологія об’єктно-орієнтованих мов програмування

Таким чином, об’єктно-орієнтований підхід змушує задаватися питанням не про те, що ви можете зробити для своїх структур даних, а про те, що структури даних можуть зробити для вас.

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