Тема 1. Основні поняття об’єктно-орієнтованого програмування
Зміст теми. Вступ до ООП. Поняття класу. Атрибути. Об’єкти. фундаментальні властивості об'єктно-орієнтованого програмування: інкапсуляція, спадкування і поліморфізм.
При вивченні цієї теми студенти повинні, перш за все, ознайомитися з наступними поняттями: об’єкт, клас, атрибути, методи, засвоїти фундаментальні властивості (інкапсуляція, спадкування і поліморфізм) об'єктно-орієнтованого програмування, виявити переваги об'єктно-орієнтованого програмування.
Ми живемо в світі об'єктів. Стіл, автомобіль, ручка, студент – все це об'єкти. Разом з фізичними існують так само абстрактні об'єкти, типовими представниками яких є числа. Таким чином, об'єкт - це будь-яка фізична або абстрактна суть, що чітко ідентифікується.
Об'єкти характеризуються атрибутами. Так, атрибутами автомобіля є максимальна швидкість, потужність двигуна, колір кузова і т.д. Атрибутами студента є прізвище, ім’я, група, в якій він навчається, курс і т.д. Крім атрибутів, об'єкти володіють деякими функціональними можливостями, які в об'єктно-орієнтованому програмуванні називають операціями або методами. Так, автомобіль може їздити, корабель – плавати, комп'ютер – обчислювати.
Таким чином, об'єкт суміщає атрибути і методи, приховуючи від інших об'єктів, що взаємодіють з ним і використовують його функціональність, свою реалізацію. Так, для того, щоб перемкнути телепередачу, нам достатньо на пульті дистанційного керування набрати її номер, що запустить складний механізм, який у результаті і приведе до бажаного результату. Нам абсолютно необов'язково знати, що відбувається в пульті дистанційного керування і телевізорі, нам лише досить знати, що телевізор володіє такою можливістю (методом), і як її можна активувати. Інкапсуляція або заховання реалізації є базовою властивістю ООП. Вона дозволяє створювати призначені для користувача об'єкти, що володіють необхідними методами і далі оперувати ними, не вдаючись в будову цих об'єктів.
Об'єкт – це екземпляр деякого класу об'єктів або просто класу. Так, автомобіль Audi 6 є екземпляром класу автомобілів даної моделі, приймач Sony SW-7600G так само буде представником класу однойменних приймачів. Таким чином, клас – це абстрактне поняття.
На UML – уніфікованій мові моделювання – клас відображається у вигляді прямокутника, розділеного на три частини. У першій міститься ім'я класу, в другій – атрибути, в третій – методи (рисунок 1).
Рисунок 1 – Відображення класу на UML
Об'єктно-орієнтоване програмування моделює об'єкти реального світу за допомогою програмних аналогів. ООП дає найбільш природний і інтуїтивний спосіб розгляду процесу програмування як моделювання реально існуючих об'єктів, їх атрибутів і поведінки. ООП моделює також зв'язки між об'єктами. Подібно тому, як люди посилають повідомлення, об'єкти теж зв'язуються один з одним за допомогою повідомлень.
Об'єктно-орієнтоване програмування – це методологія програмування, заснована на представленні програми у вигляді сукупності об'єктів, кожний з яких є об'єктом певного класу, а класи утворюють ієрархію спадкоємства.
Отже, між термінами клас і об'єкт існує чітка межа: клас – це опис, об'єкт – те, що створене відповідно до цього опису.
Основними властивостями об'єктно-орієнтованого програмування є інкапсуляція, спадкування і поліморфізм.
Інкапсуляція – це визначення класів – користувальницьких типів даних, які об'єднують свій вміст в єдиний тип і реалізовують деякі операції або методи над ним, та приховують деталі реалізації від користувача.
Спадкування – є спосіб визначення нового класу (типу) на основі того, що вже існує. При цьому успадковуються елементи (властивості і методи) того класу, що існує, і додаються нові, модифікуючи або розширюючи його.
Поліморфізм – це можливість для об'єктів різних класів, зв'язаних за допомогою спадкування, реагувати різним чином при зверненні до однієї і тієї ж функції-елемента.
Для розробки об'єктно-орієнтованих програм використовуються об'єктно-орієнтовані мови програмування. Об'єктно-орієнтована мова програмування може бути визначена як мова, що має засоби хорошої підтримки об'єктно-орієнтованого стилю програмування. Такою мовою є С++.
Питання для самоконтролю