Что такое ООП · PHP Backend — JobPilot

Что такое ООП

PHP Backend · 25%
Вопрос 19 / #
Пример ответа

1) Короткий ответ
ООП (Объектно-Ориентированное Программирование) — это парадигма программирования, в которой программа строится как совокупность объектов, взаимодействующих друг с другом.

3) Четыре основных принципа ООП

  1. Инкапсуляция
    Объединение данных и методов в одном объекте + контроль доступа.
    Пример: Приватные свойства с публичными геттерами/сеттерами.

  2. Наследование
    Создание нового класса на основе существующего с переносом функциональности.
    Пример: Класс AdminUser наследует от User.

  3. Полиморфизм
    Возможность использовать объекты разных классов через общий интерфейс.
    Пример: Метод calculateArea() по-разному работает для Circle и Rectangle.

  4. Абстракция
    Сокрытие сложной реализации и представление только существенных характеристик.
    Пример: Интерфейс PaymentGateway скрывает детали оплаты.

5) Пример на PHP

php

Copy

Download

// Абстракция и Инкапсуляция
class BankAccount {
    private float $balance = 0;  // Инкапсуляция
    
    public function deposit(float $amount): void {
        if ($amount > 0) {
            $this->balance += $amount;
        }
    }
    
    public function getBalance(): float {  // Контролируемый доступ
        return $this->balance;
    }
}

// Наследование
class SavingsAccount extends BankAccount {
    private float $interestRate;
    
    public function applyInterest(): void {
        $interest = $this->getBalance() * $this->interestRate;
        $this->deposit($interest);
    }
}

// Полиморфизм
interface Shape {
    public function calculateArea(): float;
}

class Circle implements Shape {
    public function __construct(private float $radius) {}
    
    public function calculateArea(): float {
        return pi() * $this->radius ** 2;
    }
}

class Rectangle implements Shape {
    public function __construct(private float $width, private float $height) {}
    
    public function calculateArea(): float {
        return $this->width * $this->height;
    }
}

// Использование полиморфизма
function printArea(Shape $shape) {
    echo "Area: " . $shape->calculateArea();  // Работает с любым Shape
}

$circle = new Circle(5);
$rectangle = new Rectangle(4, 6);
printArea($circle);     // Area: ~78.54
printArea($rectangle);  // Area: 24

6) Follow-up вопросы

  • В чем разница между абстрактным классом и интерфейсом?Реализация vs Контракт.

  • Когда использовать композицию вместо наследования?"Has-a" vs "Is-a".

7) Практический совет

  1. Перепишите 1-2 процедурных скрипта в ООП-стиле, выделив сущности в классы с инкапсулированными данными.

  2. Реализуйте иерархию классов с полиморфизмом (например, разные типы уведомлений: EmailNotification, SMSNotification с общим интерфейсом Notification).

New chat

PHP Backend
Junior
25%
Навигация
Что такое PSR
Предыдущий: Что такое PSR

Мы используем cookie для улучшения сайта. Продолжая пользоваться сайтом, вы соглашаетесь с политикой cookie и политикой конфиденциальности.