Порівняння процедурного та обʼєктно-орієнтованого програмування
Розділ: Основи мов програмування
📌 Про що ця тема
Тут перевіряють розуміння двох базових підходів (парадигм) до написання програм: процедурного та обʼєктно-орієнтованого. Ключові поняття — процедура (функція), обʼєкт, клас. Важливо бачити, чим відрізняється «мислення алгоритмом» від «мислення обʼєктами» і коли який підхід зручніший.
📖 Головне
• Парадигма програмування — це спосіб організації коду, загальний стиль побудови програми.
• Процедурне програмування (ПП): програма — це набір процедур і функцій, які по черзі виконують дії над даними. Дані й дії відокремлені одне від одного.
• Основні елементи ПП: змінні, функції/процедури, цикли, розгалуження. Приклади мов: Pascal, C, базовий Python-стиль.
• Обʼєктно-орієнтоване програмування (ООП): програма — це набір обʼєктів, які містять і дані (поля), і дії над ними (методи). Приклади мов: Java, C++, C#, Python (підтримує обидва стилі).
• Клас — опис-шаблон (з яких полів і методів складається обʼєкт). Обʼєкт — конкретний екземпляр класу.
• Поле (атрибут) — змінна всередині обʼєкта; метод — функція всередині обʼєкта.
• Три принципи ООП: інкапсуляція (обʼєднання даних і методів, приховування внутрішнього устрою), успадкування (новий клас переймає властивості іншого), поліморфізм (однакова назва методу — різна поведінка для різних обʼєктів).
• Ключова відмінність: у ПП дані передаються у функції ззовні; в ООП дані «живуть» усередині обʼєкта разом з методами.
• ПП простіше й швидше для невеликих задач; ООП краще масштабується у великих програмах, спрощує повторне використання коду.
🔢 Як це працює на прикладі
Задача: порахувати площу прямокутника.
Процедурний стиль:
функція area(a, b): повертає a * b
виклик: area(3, 5) → 15
Дані (3 і 5) і функція існують окремо.
Обʼєктно-орієнтований стиль:
клас Rectangle з полями a, b і методом area(), що повертає self.a * self.b
створюємо обʼєкт: r = Rectangle(3, 5)
викликаємо: r.area() → 15
Тут обʼєкт r зберігає свої дані й сам уміє рахувати площу (інкапсуляція).
⚠️ Типові помилки
• Плутають клас і обʼєкт: клас — це опис-шаблон, обʼєкт — конкретний екземпляр, створений за цим шаблоном.
• Вважають Python суто обʼєктно-орієнтованим — насправді він підтримує обидві парадигми.
• Плутають поле і метод: поле зберігає дані, метод виконує дії.
• Плутають успадкування і поліморфізм: успадкування — передача властивостей від класу до класу; поліморфізм — різна поведінка однойменного методу.
• Думають, що ООП завжди краще — для простих задач процедурний підхід часто доречніший.
🎯 Що завчити напамʼять
• Три принципи ООП: інкапсуляція, успадкування, поліморфізм.
• Клас = шаблон; обʼєкт = екземпляр класу.
• Поле = дані обʼєкта; метод = дія обʼєкта.
• ПП: дані і функції окремо. ООП: дані і методи разом в обʼєкті.
• Приклади мов: Pascal, C — процедурні; Java, C++, C# — обʼєктно-орієнтовані; Python — обидва.
🧠 Перевір себе
1. Що є «шаблоном» — клас чи обʼєкт?
2. Назви три принципи ООП.
3. Чим поле відрізняється від методу?
4. У якому підході дані зберігаються разом з діями над ними?
Відповіді: 1 — клас (обʼєкт — його екземпляр); 2 — інкапсуляція, успадкування, поліморфізм; 3 — поле зберігає дані, метод виконує дії; 4 — в обʼєктно-орієнтованому (ООП).