Порівняння процедурного та обʼєктно-орієнтованого програмування

Розділ: Основи мов програмування

📌 Про що ця тема

Тут перевіряють розуміння двох базових підходів (парадигм) до написання програм: процедурного та обʼєктно-орієнтованого. Ключові поняття — процедура (функція), обʼєкт, клас. Важливо бачити, чим відрізняється «мислення алгоритмом» від «мислення обʼєктами» і коли який підхід зручніший.


📖 Головне

• Парадигма програмування — це спосіб організації коду, загальний стиль побудови програми.

• Процедурне програмування (ПП): програма — це набір процедур і функцій, які по черзі виконують дії над даними. Дані й дії відокремлені одне від одного.

• Основні елементи ПП: змінні, функції/процедури, цикли, розгалуження. Приклади мов: 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 — в обʼєктно-орієнтованому (ООП).

Перевірити себе на практиці

Прочитати — половина справи. Далі потрібні завдання цієї ж теми з розбором кожної відповіді: саме на них видно, чи справді тема закрита.