Тема 25. Основні поняття об’єкто-орієнтованого програмування (ООП) PDF
Document Details
Uploaded by TimeHonoredVector2117
Tags
Summary
У документі детально розглядаються ключові поняття об'єктно-орієнтованого програмування (ООП), включаючи методи, класи та деструктори в контексті мови програмування C++. Документ надаое аналогію для кращого розуміння ООП.
Full Transcript
Тема 25. Основні поняття об’єкто-орієнтованого програмування (ООП) В темі 6 ми визначили об’єкт в мові C++ як частину пам’яті, яка використовується для зберігання значень. Об’єкт з ім’ям називається змінною. У традиційному програмуванні (чим ми досі займалися), програм...
Тема 25. Основні поняття об’єкто-орієнтованого програмування (ООП) В темі 6 ми визначили об’єкт в мові C++ як частину пам’яті, яка використовується для зберігання значень. Об’єкт з ім’ям називається змінною. У традиційному програмуванні (чим ми досі займалися), програма — це набір інструкцій для комп’ютера, які визначають дані (через об’єкти), а потім працюють з цими даними (через оператори і функції). Об’єкти і функції, які працюють з цими даними, є окремими одиницями, які об’єднуються для отримання програмістом бажаного результату. Через те, що вони є окремими одиницями, традиційне програмування часто не дозволяє використовувати інтуїтивне представлення реальності. Це є справою програміста — керувати і з’єднувати властивості (змінні) з поведінкою (функціями) відповідним чином, що призводить до створення наступного коду: driveTo(you, work); Так що ж тоді є об’єктно-орієнтованим програмуванням? Для кращого розуміння скористаємося аналогією. Озирніться навколо, всюди знаходяться об’єкти: книги, будівлі, їжа і навіть ви самі. Об’єкти мають два основних компоненти: властивості (наприклад, вага, колір, розмір, міцність, форма тощо); поведінка, яку вони можуть проявляти (наприклад, відкривати що-небудь, робити що-небудь і т.д.). Властивості і поведінка є нероздільними. Об’єктно-орієнтоване програмування (скор. “ООП”) надає можливість створювати об’єкти, які об’єднують властивості і поведінку в самостійний союз, який потім можна повторно використовувати. Це призводить до створення наступного коду: you.driveTo(work); Так не тільки читабельніше, але і зрозуміліше, ким є об’єкт (you — ви) і яка поведінка викликається (driveTo — поїздка). Замість того, щоб зосередитися на написанні функцій, ми концентруємося на визначенні об’єктів, які мають чіткий набір поведінок. Ось чому ця парадигма називається «об’єктно-орієнтованою». Це дозволяє створювати програми модульним способом, що спрощує не тільки написання і розуміння коду, але і забезпечує більш високий рівень можливості повторного використання цього коду. Об’єкти також забезпечують інтуїтивніший спосіб роботи з даними, дозволяючи програмісту визначити, як він буде взаємодіяти з об’єктами, і як ці об’єкти будуть взаємодіяти з іншими об’єктами. Зверніть увагу, ООП не замінює традиційні методи програмування. ООП — це додатковий інструмент для управління складністю. Об’єктно-орієнтоване програмування також надає декілька інших корисних концепцій, таких як спадкування, інкапсуляція, абстракція і поліморфізм. Зверніть увагу, термін «об’єкт» перевантажений, він має кілька значень, що може викликати певну плутанину. У традиційному програмуванні, «об’єкт» — це частина пам’яті для зберігання значень. В об’єктно-орієнтованому програмуванні, «об’єкт» — це той самий об’єкт, що і в традиційному програмуванні, але який поєднує в собі як властивості, так і способи поведінки. З цього моменту і надалі ми будемо використовувати термін «об’єкт» в об’єктно-орієнтованому сенсі цього слова. Тема 25.1. Класи, Об’єкти і Методи Хоча мова C++ надає ряд фундаментальних типів даних (наприклад, char, int, long, float, double тощо), яких буває достатньо для вирішення порівняно простих проблем, для вирішення складних проблем функціоналу цих простих типів може не вистачати. Класи Однією з найбільш корисних особливостей мови C++ є можливість визначати власні типи даних, які краще підходитимуть для вирішення конкретних проблем. Ви вже бачили, як перерахування і структури можуть використовуватися для створення власних користувацьких типів даних. Наприклад, структура для зберігання дати: struct DateStruct { int day; int month; int year; }; Перерахування та структури — це традиційний (НЕ об’єктно-орієнтований) світ програмування, в якому ми можемо тільки зберігати дані. У C++11 ми можемо створити і ініціалізувати структуру наступним чином: DateStruct today { 12, 11, 2018}; // використовуємо uniform-ініціалізацію Для виводу дати на екран (що може знадобитися не раз і не два) хорошою ідеєю буде написати окрему функцію, наприклад: #include struct DateStruct { int day; int month; int year; }; void print(DateStruct &date) { std::cout