Що таке класи в об'єктно-орієнтованому програмуванні | robot_dreams
Для відстеження статусу замовлення - авторизуйтесь
Введіть код, який був надісланий на пошту Введіть код із SMS, який був надісланий на номер
 
Код дійсний протягом 2 хвилин Код з SMS дійсний протягом 2 хвилин
Ви впевнені, що хочете вийти?
Сеанс завершено
На головну
Що таке класи в об’єктно-орієнтованому програмуванні

Що таке класи в об’єктно-орієнтованому програмуванні

Пояснюємо базові поняття

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

Розповідаємо, що таке класи в об’єктно-орієнтованих мовах, за якими принципами працюють і чим відрізняються.

Навіщо потрібні класи в програмуванні

ООП — це спосіб написання програм, де структуру створюють з об’єктів, які взаємодіють між собою. На базі ООП побудовані мови Java, Swift, Python, PHP, JavaScript і Ruby. 

Основа ООП — клас — спосіб відтворити предмет реального світу за допомогою атрибутів. Наприклад, безліч класів використовують як «креслення» для комп’ютерного відтворення будинків, машин, дерев, тварин і будь-яких інших об’єктів, що потрібно змоделювати. Клас у програмуванні складається з даних і коду. Дані відтворюють предмети або абстрактні поняття, а код ними керує. 

Клас ООП має набір атрибутів і характеристик. Кожна характеристика — це поле класу. Взаємодіяти з полями дозволяють методи класу — оператори та функції для певної дії.

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

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

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

Як працюють класи

ООП побудований на чотирьох основних принципах: абстрагування, поліморфізм, успадкування та інкапсуляція

Абстрагування — це відсікання несуттєвих характеристик для класу і прописування ключових. Наприклад, і для класу Car, і для класу Plane можна вказати те, що вони зроблені з металу, але це не ключова характеристика, а ось здатність їздити (для першого класу) і літати (для другого) — суттєва. Ідея абстрагування в тому, щоб задати мінімум полів для об’єкта, залишивши важливі. 

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

Наприклад, компанія має намір у 2022 році випустити у виробництво нову серію ноутбуків з поліпшеними відеокартами, процесорами та великим обсягом пам’яті. Але розробляти модель з нуля довго. Якщо в компанії вже є лінійка, яка відповідає запитам (суперклас Laptops), то клас NewLaptops успадкує атрибути суперкласу і до нього лише додадуть нові характеристики.

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

Ідею поліморфізму коротко описують так: «один інтерфейс — безліч реалізацій» — за допомогою однієї функції можна обробити дані, які належать до різних класів. Якщо компанія виробляє різну техніку з відеокамерами, код, що описує властивості камери, буде відповідним для кількох класів. Наприклад, NewLaptops і Phones.

Реалізація ООП у різних мовах

Об’єктно-орієнтоване програмування — ідея, і втілити її можна по-різному. 

Наприклад, у Java немає можливості множинного успадкування — тобто клас не може отримати властивості від кількох батьківських класів, а в Python ця опція доступна.   

У Java і C++ ви створюєте класи як шаблон для об’єктів — потім їх не можна змінити, наприклад, додати нові методи. Щоб зробити нові дії, потрібно створити підклас. У Ruby є змога додавати нові методи в наявний клас.  

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

У Python за замовчуванням усі дані відкриті. Але є й можливість створити непублічні властивості. Такі атрибути виділяють підкресленням. Для них Python змінює назву змінної, але користувач все одно може отримати до неї доступ.

Кожен із підходів і контроль доступу в мовах ООП зумовлений їхньою архітектурою, але в будь-якому з них є можливість розв’язувати однакові завдання.

Ще статті
Порівнюємо швидкість, якість і відповідальність за результат