9.1.1. Поняття класу та об’єкта в об’єктно-орієнтованому програмуванні; конструктори й деструктори, інтерфейс і реалізація
9.1.1. Поняття класу та об'єкта в об’єктно-орієнтованому програмуванні:
конструктор і деструктор, інтерфейс та реалізація
Об'єктно-орієнтоване програмування (ООП, іноді об'єктно-зорієнто́ване програмува́ння; англ. Object-oriented programming, OOP) — одна з парадигм програмування, яка розглядає програму як множину «об'єктів», що взаємодіють між собою. Основу ООП складають чотири основні концепції: інкапсуляція, успадкування, поліморфізм та абстракція. Однією з переваг ООП є краща модульність програмного забезпечення (тисячу функцій процедурної мови, в ООП можна замінити кількома десятками класів із своїми методами).
Клас визначає абстрактні характеристики деякої сутності, включно з характеристиками самої сутності (її атрибутами або властивостями) та діями, які вона здатна виконувати (її поведінкою, методами або можливостями). Наприклад, клас Собака може характеризуватись рисами, притаманними всім собакам, зокрема: порода, колір хутра, здатність гавкати. Класи вносять модульність та структурованість в об'єкто-орієнтовану програму. Зазвичай клас має бути зрозумілим для не-програмістів, що знаються на предметній області, що, своєю чергою, значить, що клас повинен мати значення в контексті. Також, код реалізації класу має бути досить самодостатнім. Властивості та методи класу, разом називаються його членами.
В об'єктно-орієнтованому програмуванні, клас — це спеціальна конструкція, яка використовується для групування пов'язаних змінних та функцій. При цьому, згідно з термінологією ООП, глобальні змінні класу (члени-змінні) називаються полями даних (також властивостями або атрибутами), а члени-функції називають методами класу. Створений та ініціалізований екземпляр класу називають об'єктом класу. На основі одного класу можна створити безліч об'єктів, що відрізнятимуться один від одного своїм станом (значеннями полів).
У програмуванні існує поняття програмного інтерфейсу, що означає перелік можливих обчислень, які може виконати та чи інша частина програми, включаючи опис того, які аргументи і в якому порядку потрібно передавати на вхід алгоритмам з цього переліку, а також що і в якому вигляді вони будуть повертати. Абстрактний тип даних інтерфейс придуманий для формалізованого опису такого переліку. Самі алгоритми, тобто дійсний програмний код, який буде виконувати всі ці обчислення, інтерфейсом не задається, програмується окремо та називається реалізацією інтерфейсу.
Об'єкт в об'єктно-орієнтованому програмуванні (ООП) — ключове поняття об'єктно-орієнтованих технологій проєктування та програмування; втілення абстрактної моделі окремої сутності (предмету або поняття), що має чітко виражене функціональне призначення в деякій області, належить до визначеного класу та характеризується своїми властивостями та поведінкою. Об'єкти є базовими елементами побудови програми — програма в ООП розглядається як сукупність об'єктів, що знаходяться у визначених відношеннях та обмінюються повідомленнями.
Властивості об'єкта визначаються його атрибутами (полями даних). Поточне значення атрибутів визначає поточний стан об'єкта у множині можливих станів.
Опорний конспект
Клас (Class) — це шаблон (або тип), який описує структуру та поведінку об’єктів.
Складається з:
- Поля (атрибути): змінні, які описують стан об’єкта.
- Методи (функції-члени): дії, які об'єкт може виконувати.
Приклад (на C++):
class Car {
public:
string brand;
void drive() {
cout << "Driving";
}
};
Об’єкт (Object) — це конкретний екземпляр класу, який має свій стан і може виконувати методи.
Приклад:
Car myCar;
myCar.brand = "Toyota";
myCar.drive();
Конструктор (Constructor) — спеціальний метод класу, який викликається автоматично під час створення об’єкта.
Особливості:
- Має ім’я, як і клас
- Не має типу повернення
- Може бути перевантажений
Приклад:
class Car {
public:
string brand;
Car(string b) { brand = b; } // конструктор
};
Деструктор (Destructor) — метод, який викликається автоматично при знищенні об’єкта для вивільнення ресурсів.
Особливості:
- Починається з тильди ~
- Не має параметрів і не повертає значення
Приклад:
~Car() {
cout << "Destructor called";
}
Інтерфейс (Interface) — це сукупність публічних методів, доступних для використання зовні (API класу).
Мета: приховати реалізацію, надати зовнішній контракт для користувача.
Приклад:
class Car {
public:
void startEngine(); // інтерфейс
private:
void injectFuel(); // реалізація (прихована)
};
Реалізація (Implementation) — це фактичний код методів, що виконує функціональність, описану в інтерфейсі.
Реалізацію часто приховують через інкапсуляцію для захисту від змін та помилок.
Інкапсуляція = інтерфейс + прихована реалізація
| Компонент | Опис | Приклад |
| Клас | Шаблон об’єктів | class Car {...} |
| Об’єкт | Екземпляр класу | Car myCar; |
| Конструктор | Метод створення об’єкта | Car(string brand) |
| Деструктор | Метод знищення об’єкта | ~Car() |
| Інтерфейс | Публічні методи | void drive() |
| Реалізація | Код, що виконує дію | { cout << "driving"; } |
Підсумок для ЄФВВ:
- Клас — основа ООП.
- Об’єкт — його реалізація.
- Конструктори — автоматизують ініціалізацію.
- Деструктори — автоматизують очищення.
- Інтерфейс — що може робити об’єкт.
- Реалізація — як саме об’єкт це робить.
Шрифти
Розмір шрифта
Колір тексту
Колір тла
Кернінг шрифтів
Видимість картинок
Інтервал між літерами
Висота рядка
Виділити посилання
Вирівнювання тексту
Ширина абзацу