Menu
Coddy logo textTech

Итоги — Калькулятор фигур

Часть раздела Объектно-ориентированное программирование путешествия по PHP на Coddy — урок 32 из 91.

challenge icon

Задание

Легко

Давайте создадим калькулятор фигур, который демонстрирует мощь интерфейсов для создания гибкого и расширяемого кода. Вы создадите интерфейс, определяющий контракт для вычисления площади, а затем реализуете его в различных классах фигур.

Вы организуете свой код в четырех файлах:

  • Calculable.php — Определите интерфейс Calculable с одной сигнатурой метода: calculateArea(). Этот контракт гарантирует, что любая вычисляемая фигура может рассчитать свою площадь.
  • Rectangle.php — Создайте класс Rectangle, который реализует Calculable. Подключите файл интерфейса. Класс должен иметь приватные свойства $width и $height, устанавливаемые через конструктор. Реализуйте calculateArea(), чтобы возвращать площадь (ширина, умноженная на высоту).
  • Circle.php — Создайте класс Circle, который также реализует Calculable. Подключите файл интерфейса. Класс должен иметь приватное свойство $radius, устанавливаемое через конструктор. Реализуйте calculateArea(), чтобы возвращать площадь по формуле pi() * radius * radius.
  • main.php — Подключите оба файла фигур. Создайте функцию с именем displayArea, которая принимает параметр типа Calculable и имя фигуры (string). Функция должна выводить: "[name] area: [area]", где площадь округлена до 2 знаков после запятой с помощью number_format().

Вы получите четыре входных значения: ширину прямоугольника, высоту прямоугольника, радиус круга и имя фигуры для круга. Создайте Rectangle с шириной и высотой (преобразуйте в числа с плавающей точкой) и Circle с радиусом (преобразуйте в число с плавающей точкой). Вызовите displayArea() дважды — сначала для прямоугольника, используя "Rectangle" в качестве имени, затем для круга, используя предоставленное имя фигуры. Выведите каждый результат на новой строке.

Функция displayArea() работает с любой фигурой, реализующей Calculable — ей не нужно знать, вычисляет ли она площадь прямоугольника, круга или любой другой фигуры, которую вы добавите в будущем. В этом и заключается прелесть программирования через интерфейс!

Попробуйте сами

<?php
// Подключите файлы фигур
require_once 'Rectangle.php';
require_once 'Circle.php';

// TODO: Создайте функцию с названием displayArea
// Она должна принимать параметр типа Calculable и название фигуры (строку)
// Вывод: "[name] area: [area]", где площадь округлена до 2 знаков после запятой с помощью number_format()

// Чтение входных данных
$width = floatval(trim(fgets(STDIN)));
$height = floatval(trim(fgets(STDIN)));
$radius = floatval(trim(fgets(STDIN)));
$circleName = trim(fgets(STDIN));

// TODO: Создайте объект Rectangle с указанной шириной и высотой

// TODO: Создайте объект Circle с указанным радиусом

// TODO: Вызовите displayArea() для прямоугольника, используя "Rectangle" в качестве названия

// TODO: Вызовите displayArea() для круга, используя предоставленное название фигуры
?>

Все уроки раздела Объектно-ориентированное программирование