Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекція 1.Вступ до ООП.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
101 Кб
Скачать
☆

1.2. Модульне програмування

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

Цю технологію підтримують сучасні версії мов Pascal та С (С++), мови Ада та Modula.

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

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

Прагнення зменшити кількість зв’язків між окремими частинами програми привело до появи нових технологій програмування.

1.3 Програмування, кероване подіями

З появою ОС Windows отримало розвиток програмування, кероване подіями.

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

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

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

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

Програмування кероване подіями – найбільш поширена сучасна технолгія програмування, підтримувана операційними системами (ОС) і реалізована в мовах програмування (С++, Visual Basic, C#) та інших.

Структурне, модульне, програмування, кероване подіями утворили фундамент ООП.

2. Об’єктно-орієнтоване програмування

Наступним кроком була ідея розділення програми на модулі так, щоб дані описували структуру реально існуючого у відповідній предметній області об’єкта, а процедури - його поведінку: дії доступні для цього об’єкта. Тоді поведінка системи забезпечувалась би взаємодією її складових – об’єктів.

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

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

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

Зараз в ООП домінують два стилі – програмування, базоване на класах (class-based programming) і програмування, базоване на прототипах (prototype-based programming) – відносно новий напрям ООП.

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

Розглянемо основні поняття ООП: об'єкт, клас, властивість і метод.

Кожний об'єкт в ООП має свій тип (клас).

Клас представляє собою абстрактний тип даних, який має:

Поля – атрибути об'єкту.

Властивості - параметри об'єкту (значення його атрибутів).

Методи - дії, які можна виконувати над об'єктом цього типу, або які сам об'єкт може виконувати (процедури та функції).

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

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

В основі об'єктно-орієнтованого програмування лежать 4 основні принципи:

Абстракція - опис взаємодії виключно в термінах повідомлень/подій в предметній області. Об'єкти надають не повну інформацію про реальні властивості предметної області. Їх моделі адекватні вирішуваній задачі, працювати з ними зручніше, ніж з низькорівневим описом усіх можливих властивостей і реакцій об'єкту.

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

До основних властивостей інкапсуляції відносяться наступні:

  1. сумісне зберігання даних і функцій (тобто властивостей і методів) усередині класу;

  2. приховування внутрішньої інформації від користувача (що забезпечує більшу безпеку програмі) – за допомогою специфікаторів доступу private, internal;

  3. ізоляція користувача від деталей реалізації (що забезпечує незалежність від моделі обчислень і потенційно дружній інтерфейс програми).

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

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

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

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

Питання: Які приклади поліморфізму можна навести?

Відповідь: в С++, C# перевантаження функцій – одне і те саме ім'я функції може використовуватися для передачі повідомлень об'єктам різних класів. Такі функції повинні мати різні списки параметрів.

Отже -

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

Для реалізації цих властивостей різні мови програмування використовують різні підходи.