Ответ
В классической формулировке четырех принципов ООП четвертым является инкапсуляция. Иногда в качестве четвертого принципа также называют абстракцию, что создает терминологическую путаницу.
Инкапсуляция — это механизм, объединяющий данные и методы, которые с ними работают, и ограничивающий прямой доступ к внутреннему состоянию объекта. Это реализуется через модификаторы доступа (public, protected, private).
Пример на PHP:
class BankAccount {
private float $balance = 0.0;
public function deposit(float $amount): void {
if ($amount > 0) {
$this->balance += $amount;
}
}
public function getBalance(): float {
return $this->balance;
}
}
$account = new BankAccount();
$account->deposit(100.50);
// Прямой доступ к $balance невозможен: $account->balance = -100; // Fatal error
Абстракция как принцип — это выделение существенных характеристик объекта, игнорируя нерелевантные детали реализации. На практике она выражается через абстрактные классы и интерфейсы.
Пример абстракции:
interface PaymentProcessor {
public function process(float $amount): bool;
}
class StripeProcessor implements PaymentProcessor {
public function process(float $amount): bool {
// Детали интеграции со Stripe скрыты
return true;
}
}
Важно не путать эти базовые принципы ООП с принципами SOLID, где четвертым является Interface Segregation Principle (ISP) — принцип разделения интерфейсов.