Menu
Coddy logo textTech

Повторение — калькулятор фигур

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

challenge icon

Задание

Легко

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

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

  • Calculable.php: Define interface Calculable с единственной сигнатурой method: calculateArea(). Этот контракт гарантирует, что любая вычислимая фигура может вычислить свою площадь.
  • Rectangle.php: Create class Rectangle, который implements Calculable. Include файл interface. У класса должны быть private properties $width и $height, устанавливаемые через constructor. Implement calculateArea(), чтобы Return площадь (width multiplied на height).
  • Circle.php: Create class Circle, который также implements Calculable. Include файл interface. У класса должно быть private property $radius, устанавливаемое через constructor. Implement calculateArea(), чтобы Return площадь с использованием formula pi() * radius * radius.
  • main.php: Include оба файла фигур. Create function с именем displayArea, которая accepts parameter типа Calculable и имя фигуры (строка). function должна Print: "[name] area: [area]", причем area округляется до 2 десятичных знаков с использованием number_format().

Вы получите четыре inputs: width прямоугольника, height прямоугольника, radius круга и имя фигуры для круга. Create Rectangle с width и height (преобразовав их в числа с плавающей точкой) и Circle с radius (преобразовав его в число с плавающей точкой). Call displayArea() дважды: сначала с прямоугольником, используя "Rectangle" как имя, затем с кругом, используя provided имя фигуры. Print каждый результат в отдельной строке.

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

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

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

// TODO: Создать функцию под названием displayArea
// Она должна принимать параметр Calculable и имя фигуры (string)
// Вывести: "[name] area: [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 с width и height

// TODO: Создать Circle с radius

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

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

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

Потренируйтесь самостоятельно: Онлайн-компилятор PHP