Phone icon Зв'язатись з нами

Програмування

Що таке ООП (об’єктно-орієнтоване програмування)?

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

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

Мета всього цього — керованість. У великій системі зміни мають торкатися невеликої частини коду, а не розходитися по всьому проєкту. ООП — основна модель у Java, C# і Python, тому питання про нього звучать майже на кожній співбесіді.

Де застосовується

Об’єктна модель лежить в основі майже всіх корпоративних технологій: Spring у Java, ASP.NET Core у C#, Django в Python. Працюючи з ними, ви постійно створюєте класи — контролери, сервіси, сутності бази даних — і успадковуєте поведінку від базових класів.

Той самий підхід використовують і поза бекендом: в автоматизації тестування сторінку описують класом Page Object, у фронтенді елемент інтерфейсу — компонентом зі своїм станом. Тому питання про інкапсуляцію, успадкування і поліморфізм звучать майже на кожній технічній співбесіді.

Приклад

У системі є звичайні, корпоративні та преміум-клієнти. Знижку для кожного рахують по-своєму, але решта коду викликає один і той самий метод. Щоб додати четвертий тип клієнта, не треба змінювати місця, де ця знижка використовується.

public class Customer {
    protected String name;

    public BigDecimal discount(BigDecimal total) {
        return BigDecimal.ZERO;
    }
}

public class PremiumCustomer extends Customer {
    @Override
    public BigDecimal discount(BigDecimal total) {
        return total.multiply(new BigDecimal("0.15"));
    }
}
Інкапсуляція і поліморфізм: дані приховані за методами, а нащадок по-своєму рахує знижку.

Часті запитання

Чим клас відрізняється від об’єкта?

Клас — це опис: які поля і методи матимуть об’єкти цього типу. Об’єкт — конкретний екземпляр, створений за описом, зі своїми значеннями полів. Клас один, а об’єктів за ним може бути скільки завгодно, і кожен існує окремо.

Що таке інкапсуляція простими словами?

Це приховування внутрішньої будови: поля закриті, а ззовні доступні лише безпечні дії. Так не можна випадково встановити від’ємний баланс чи зіпсувати стан об’єкта в обхід правил — усі зміни проходять через методи, які перевіряють правильність.

Чи потрібне ООП, якщо пишеш на Python або JavaScript?

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

Чи завжди успадкування — хороше рішення?

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

Навчання програмуванню в OWU

Опануйте професію в IT на практичних курсах із менторами та реальними проєктами.

Обрати курс