Этот вопрос проверяет базовое понимание четырёх фундаментальных принципов объектно-ориентированного программирования.
В ООП выделяют четыре ключевых принципа: инкапсуляция, наследование, полиморфизм и абстракция. Инкапсуляция скрывает детали реализации и защищает данные объекта. Наследование позволяет строить иерархии и повторно использовать код. Полиморфизм даёт возможность подменять реализации и использовать единый интерфейс для разных объектов. Абстракция выделяет важные характеристики сущности и скрывает ненужные детали. Эти принципы помогают делать код гибким, расширяемым и понятным.
ООП основано на четырёх фундаментальных принципах, которые определяют структуру и поведение объектов.
Определение: Инкапсуляция — это механизм сокрытия внутреннего устройства объекта и предоставления доступа только через публичные методы.
Суть:
объект сам управляет своими данными
доступ к состоянию осуществляется через методы
защищает от некорректного использования
Пример:
php
class User {
private string $email;
public function setEmail(string $email): void {
// валидация
$this->email = strtolower($email);
}
public function getEmail(): string {
return $this->email;
}
}
Определение: Наследование — это возможность создавать новые классы на основе существующих.
Используется для:
переиспользования кода
построения иерархий
расширения возможностей базового класса
Пример:
php
class Animal { public function speak() {} }
class Dog extends Animal { public function speak() { echo "Woof"; } }
Определение: Полиморфизм — это возможность обращаться к объектам разных классов единым образом.
Проявления:
переопределение методов в наследниках
интерфейсы
абстрактные классы
Пример:
php
interface Notifier { public function send(string $msg); }
class EmailNotifier implements Notifier { /* ... */ }
class SmsNotifier implements Notifier { /* ... */ }
function notify(Notifier $n, string $msg) { $n->send($msg); }
Функция не знает, какой конкретно тип Notification используется.
Определение: Абстракция — это выделение значимых характеристик объекта и отвлечение от деталей реализации.
Используется для:
описания поведения без конкретики
построения интерфейсов и абстрактных классов
формализации контракта
Пример:
php
abstract class PaymentGateway {
abstract public function charge(int $amount): bool;
}
Принципы ООП позволяют строить системы, в которых код легко поддерживать, расширять и модифицировать. Использование этих принципов делает архитектуру предсказуемой и качественной.