Практичні завдання

Який принцип порушено в коді та як можна виправити код?

class Shape
{
    public $width;
    public $height;

    public function __construct($width, $height)
    {
        $this->width = $width;
        $this->height = $height;
    }
}

class Triangle
{
    public $radius;

    public function __construct($radius)
    {
        $this->radius = $radius;
    }
}

class AreaCalculator
{
    public function calculate($shapes)
    {
        foreach ($shapes as $shape) {
            if (is_a($shape, 'Square')) {
                $area[] = $shape->width * $shape->height;
            } else if (is_a($shape, 'Triangle')) {
                $area[] = $shape->radius * $shape->radius * pi();
            }
        }

        return array_sum($area);
    }
}

Є масив зі 10 млн унікальних рядків. Програма отримує новий рядок, необхідно знайти всі рядки з масиву, що задовольняють критерій: відстань Левенштейна до нового рядка менше як 3 операції.

Потрібно побудувати сервер посилання емейлів. Які б класи/шари/абстракції ви виділили?

Як би ви реалізували скорочувалку урлів, стискач/розтискач зображень, парсер останніх повідомлень форуму, де згадується певний бренд, перевірку цін на товари у конкурентів?