ООП — это парадигма программирования, основанная на концепции "объектов", которые содержат данные (поля/атрибуты) и методы (функции) для работы с этими данными. Вот 4 ключевых принципа ООП:
Суть: Объединение данных и методов, которые работают с этими данными, в единый "объект", а также сокрытие внутренней реализации от внешнего мира.
Зачем:
Пример:
class BankAccount {
constructor(balance = 0) {
this._balance = balance; // _balance — "приватное" поле (условно)
}
// Публичный метод для доступа к балансу
getBalance() {
return this._balance;
}
// Метод с проверкой, чтобы избежать отрицательного баланса
deposit(amount) {
if (amount > 0) {
this._balance += amount;
}
}
}
Суть: Возможность создания новых классов на основе существующих с наследованием их свойств и методов.
Зачем:
Animal → Dog
).Пример:
class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(`${this.name} издает звук.`);
}
}
class Dog extends Animal {
speak() {
console.log(`${this.name} гавкает!`);
}
}
Суть: Возможность объектов с одинаковым интерфейсом (например, методами) вести себя по-разному в зависимости от их типа.
Зачем:
Пример:
class Bird extends Animal {
speak() {
console.log(`${this.name} поет!`);
}
}
const animals = [new Dog('Рекс'), new Bird('Кеша')];
animals.forEach(animal => animal.speak());
// Выведет: "Рекс гавкает!" и "Кеша поет!"
Суть: Выделение главных характеристик объекта, игнорируя несущественные детали.
Зачем:
Пример:
class CoffeeMachine {
turnOn() {
this._heatWater();
this._grindBeans();
}
_heatWater() { /* Сложная логика */ }
_grindBeans() { /* Сложная логика */ }
}
const machine = new CoffeeMachine();
machine.turnOn(); // Пользователь не видит внутренних процессов
Эти принципы делают код более модульным, поддерживаемым и понятным. В React ООП особенно проявляется в классовых компонентах (до версии 16.8) и при проектировании сложных state-менеджеров.