
1.1. Об’єкти.
Об’єкт – уявна або реальна сутність, яка має характерну поведінку, певні визначальні характеристики і важлива в предметній області.
Кожний об’єкт має стан, володіє добре визначеною поведінкою і унікальною ідентичністю.
1.1.1. Стан.
Стан (state) – сукупний результат поведінки об’єкта: одна зі стабільних умов, в яких об’єкт може існувати, виражена кількісно; в будь-який момент часу стан об’єкта складається з переліку (зазвичай, статичних) властивостей об’єкта і поточного значення (зазвичай, динамічних) цих властивостей.
1.1.2. Поведінка
Кожний об’єкт має певний набір дій, які з ним можна виконати. Наприклад, можливі дії з деяким файлом операційної системи:
створити
відкрити
читати з файлу
писати у файл
закрити
вилучити
Результат виконання дій залежить від стану об’єкта в момент здійснення дії, тобто неможливо, наприклад, вилучити файл, якщо він відкритий ким-небудь (заблокований). В той же час дії можуть змінювати внутрішній стан об’єкта – при відкритті або закритті властивість “відкритий” набуває значень “так” або “ні” відповідно.
Програма, розроблена за об’єто-зорієнтованим підходом, зазвичай складається з множини об’єктів і всі ці об’єкти взаємодіють між собою. Кажуть, що взаємодія між об’єктами в програмі відбувається за допомогою передачі повідомлень між ними.
В термінології об’єкто-зорієнтованого підходу поняття “дія”, “повідомлення” і “метод” є синоніми. Тобто вирази “виконати дію над об’єктом”, “викликати метод об’єкта” і “послати повідомлення об’єктові для виконання будь-якої дії” еквівалентні. Програму, розроблену за технологією ОПП, можна уявити як віртуальний простір, заповнений об’єктами, які умовно “живуть” деяким життям. Їх активність проявляється в тому, що вони викликають один в одного методи або посилають один одному повідомлення. Зовнішній інтерфейс об’єкта або набір його методів, це набір його методів, це опис, які повідомлення він може одержувати.
Поведінка (behavior) – дія і реакції об’єкта, виражені в термінах передачі повідомлень і зміни стану; видима ззовні і відтворювана активність об’єкта.
1.1.3. Унікальність
Унікальність – це те, що відрізняє один об’єкт від інших. Наприклад, у нас є декілька абсолютно однакових монет, навіть якщо всі їх властивості (атрибути) однакові (рік випуску, номінал і т.д.) і ми можемо їх використовувати незалежно одна від одної – вони як і раніше залишаються однаковими монетами.
В машинному представленні під параметром унікальності об’єкта найчастіше розуміється адреса розміщення об’єкта в пам’яті.
Identity(унікальність) об’єкта полягає в тому, що завжди можна визначити, вказують або ні два посилання на один і той же об’єкт або на різні об’єкти. Два об’єкти можуть у всьому бути подібними, їх образ в пам’яті може представлятися в пам’яті однаковими послідовностями байтів, але їх Identity може бути різною. Найбільш розповсюднена помилка – розуміння унікальності як ім’я посилання на об’єкт. Це неправильно, оскільки на один об’єкт можуть вказувати декілька посилань і посилання можуть змінювати свої значення (посилатися на інші об’єкти) за час свого існування.
Отже, унікальність (Identity) – природа об’єкта; те, що відрізняє його від інших об’єктів.
1.2. Класи
Всі монети з попереднього прикладу належать одному і тому ж класу об’єктів (саме з цим пов’язана їх однаковість). Номінальна вартість монети, метал, з якого вона виготовлена, форма – це атрибути класу:сукупність атрибутів і їх значень характеризує об’єкт. Поряд з терміном “атрибут” часто використовують терміни “властивість” і “поле”, які в ОЗП є синоніми.
Всі об’єкти одного і того ж класу описуються однаковими наборами атрибутів. Однак об’єднання об’єктів в класи визначається не наборами атрибутів, а семантикою. Так, наприклад, об’єкти конюшня і кінь можуть мати однакові атрибути:ціна і вік. Вони можуть відноситися до одного класу, якщо розглядаються в задачі як товар, або до різних класів, якщо в рамках поставленої задачі вони будуть використовуватися по-різному, тобто над ними будуть здійснюватися різні дії.
Об’єднання об’єктів у класи дозволяє розглянути задачу в більш загальній постановці. Клас має ім’я (наприклад, кінь), яке відноситься до всіх об’єктів цього класу. Крім цього, в класі вводяться імена атрибутів. Які визначені для об’єктів. У цьому розумінні опис класу аналогічний описові типу структури або запису (record), які широко використовуються в процедурному програмуванні; кожний об’єкт при цьому має той же зміст, що й екземпляр структури (змінна або стала відповідного типу).
Формально клас – шаблон поведінки об’єкта певного типу з певними параметрами, які визначають стан. Всі екземпляри одного класу (об’єкти, породжені від одного класу)
мають один і той же набір властивостей
спільну поведінку, однаково реагують на однакові повідомлення
Згідно з UML (UnifiedModelingLanguage, уніфікована мова моделювання) клас має таке графічне зображення: клас зображується прямокутником, який має три частини. У верхній частині розміщується назва класу, в середній частині – властивості об’єктів класу, в нижній – дії, які можна виконувати з об’єктами даного класу (методи).
Кожний клас може мати спеціальні методи, які автоматично викликаються при створенні і ліквідації класу:
конструктор (constructor) – виконується при створенні об’єктів;
деструктор (destructor) – виконується при ліквідації об’єктів.
Зазвичай, конструктор і деструктор мають спеціальний синтаксис, який може відрізнятися від синтаксису. Який використовується для запису звичайних методів.