Menu
Coddy logo textTech

Recapitulação - Calculadora de Formas

Parte da seção Programação Orientada a Objetos do Journey de PHP da Coddy — lição 32 de 91.

challenge icon

Desafio

Fácil

Vamos construir uma calculadora de formas que demonstra o poder das interfaces para criar código flexível e extensível. Você criará uma interface que define um contrato para calcular áreas e, em seguida, a implementará em diferentes classes de formas.

Você organizará seu código em quatro arquivos:

  • Calculable.php — Defina uma interface Calculable com uma única assinatura de método: calculateArea(). Este contrato garante que qualquer forma calculável possa computar sua área.
  • Rectangle.php — Crie uma classe Rectangle que implementa Calculable. Inclua o arquivo da interface. A classe deve ter propriedades privadas $width e $height, definidas através do construtor. Implemente calculateArea() para retornar a área (largura multiplicada pela altura).
  • Circle.php — Crie uma classe Circle que também implementa Calculable. Inclua o arquivo da interface. A classe deve ter uma propriedade privada $radius, definida através do construtor. Implemente calculateArea() para retornar a área usando a fórmula pi() * radius * radius.
  • main.php — Inclua ambos os arquivos de formas. Crie uma função chamada displayArea que aceita um parâmetro Calculable e um nome de forma (string). A função deve imprimir: "[name] area: [area]" onde a área é arredondada para 2 casas decimais usando number_format().

Você receberá quatro entradas: largura do retângulo, altura do retângulo, raio do círculo e um nome de forma para o círculo. Crie um Rectangle com a largura e altura (converta para floats) e um Circle com o raio (converta para float). Chame displayArea() duas vezes — primeiro com o retângulo usando "Rectangle" como o nome, depois com o círculo usando o nome da forma fornecido. Imprima cada resultado em sua própria linha.

A função displayArea() funciona com qualquer forma que implemente Calculable — ela não precisa saber se está calculando a área de um retângulo, círculo ou qualquer forma futura que você possa adicionar. Essa é a beleza de programar para uma interface!

Experimente você mesmo

<?php
// Inclui os arquivos das formas
require_once 'Rectangle.php';
require_once 'Circle.php';

// TODO: Crie uma função chamada displayArea
// Ela deve aceitar um parâmetro Calculable e um nome de forma (string)
// Imprima: "[name] area: [area]" onde area é arredondada para 2 casas decimais usando number_format()

// Lê as entradas
$width = floatval(trim(fgets(STDIN)));
$height = floatval(trim(fgets(STDIN)));
$radius = floatval(trim(fgets(STDIN)));
$circleName = trim(fgets(STDIN));

// TODO: Crie um Rectangle com a largura (width) e altura (height)

// TODO: Crie um Circle com o raio (radius)

// TODO: Chame displayArea() com o retângulo usando "Rectangle" como o nome

// TODO: Chame displayArea() com o círculo usando o nome da forma fornecido
?>

Todas as lições de Programação Orientada a Objetos