Вступ до об’єктно-орієнтованого програмування

Очевидно, що об'єктно-орієнтоване програмування (OOP) означає використання об'єктів у мовах програмування. Об'єктно-орієнтоване програмування орієнтоване на реалізацію реальних об'єктів, таких як наслідування (inheritance), приховування (hiding), поліморфізм (polymorphism) та інші. Головною метою OOP є зв'язування даних та функцій, що з ними працюють, таким чином, щоб інші частини коду не могли доступитися до цих даних, окрім цієї функції.

Основні поняття OOP:

> Клас (Class)
> Об'єкти (Objects)
> Абстракція даних (Data Abstraction)
> Інкапсуляція (Encapsulation)
> Наслідування (Inheritance)
> Поліморфізм (Polymorphism)
> Динамічне зв'язування (Dynamic Binding)
> Передача повідомлень (Message Passing)

  1. Клас (Class):

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

Наприклад: Розглянемо клас Автомобіль. Можна мати багато автомобілів з різними назвами та марками, але всі вони матимуть кілька спільних характеристик, таких як 4 колеса, обмеження швидкості, пробіг і так далі. Отже, в цьому випадку класом буде Автомобіль, а колеса, обмеження швидкості, пробіг — це його характеристики.

2. Об'єкти (Objects):

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

Наприклад, "Собака" є реальним об'єктом, який має такі характеристики, як колір, порода, шерсть, сон та харчування.

pic

3. Абстракція даних (Data Abstraction)

Абстракція даних є однією з найважливіших і найпотрібніших характеристик об'єктно-орієнтованого програмування (OOP). Абстракція даних означає надання лише важливої інформації про дані зовнішньому світу, приховуючи фон та деталі реалізації. Розглянемо життєвий приклад водіння машини.
Чоловік знає, що натискання на газ призведе до збільшення швидкості машини, або натискання на гальмо зупинить її, але він не знає, як саме збільшується швидкість при натисканні на газ, і не має уявлення про внутрішні механізми машини або про те, як працюють акселератор, гальма тощо. Це і є абстракція.

4. Інкапсуляція (Encapsulation)

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

pic

Реальний приклад інкапсуляції можна побачити в компанії, де є різні відділи, такі як бухгалтерія, фінансовий відділ, відділ продажу тощо. Фінансовий відділ керує всіма фінансовими операціями і веде облік усієї фінансової інформації. Точно так само, відділ продажу управляє всіма торговими операціями і зберігає записи про всі продажі. Тепер уявімо ситуацію, коли з якихось причин працівник фінансового відділу потребує інформацію про продажі за певний місяць. У такому випадку він не має прямого доступу до даних відділу продажу.
Спочатку йому потрібно зв'язатися з іншим офіцером з відділу продажу, а потім попросити надати необхідну інформацію. Це і є інкапсуляція. Тут дані відділу продажу та співробітники, які можуть ними керувати, об'єднані під єдиним ім'ям — «відділ продажу».

5. Мережа (Inheritance)

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

pic

6.

6. Поліморфізм (Polymorphism)

Слово поліморфізм означає "мати багато форм". Простими словами, ми можемо визначити поліморфізм як здатність повідомлення бути представленим у різних формах. Наприклад, людина може одночасно мати різні характеристики. Вона може бути одночасно батьком, чоловіком, працівником. Отже, одна й та сама людина поводиться по-різному в різних ситуаціях. Це і є поліморфізм.

pic

7. Динамічне зв'язування (Dynamic Binding)

У динамічному зв'язуванні код, який виконується у відповідь на виклик функції, визначається під час виконання програми. Динамічне зв'язування означає, що код, який пов'язаний з певним викликом процедури, стає відомий тільки під час виконання цього виклику. Однією з основних переваг динамічного зв'язування є те, що клас D, який успадковує клас B, має доступ до всіх його членів.

8. Якщо D не приховує загальні члени B, об'єкт D може виражати B в будь-якому контексті. Тут можна використовувати B. Ця властивість називається підтиповим поліморфізмом (Subtype Polymorphism).

9. Передача повідомлень (Message Passing)

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

Чому нам потрібне об'є> Для полегшення розробки та обслуговування проєктів.

> Для забезпечення безпеки, що досягається через властивість приховування даних.

Якщо ми використовуємо об'єктно-орієнтоване програмування (OOP), ми зможемо вирішувати реальні проблеми.
Це забезпечує повторне використання коду.
Це дає нам змогу писати універсальний код, який працює з різними наборами даних, тому нам не потрібно постійно переписувати основні частини коду.

Використана література:

[

Вступ до об'єктно-орієнтованого програмування - GeeksforGeeks

Портал для гіків з інформатики. Тут можна знайти добре написані, продумані та добре пояснені статті з інформатики…

www.geeksforgeeks.org

](https://www.geeksforgeeks.org/introduction-of-object-oriented-programming/?source=post_page-----de66c60c17a2--------------------------------)

Перекладено з: Ob’ektga yo’naltirilgan dasturlashga kirish (Introduction of Object Oriented Programming)

Leave a Reply

Your email address will not be published. Required fields are marked *