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 criar uma calculadora de formas que demonstra o poder das interfaces para criar um 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(). Esse contrato garante que qualquer forma calculável possa calcular sua área.
  • Rectangle.php: Crie uma classe Rectangle que implemente Calculable. Inclua o arquivo da interface. A classe deve ter as propriedades privadas $width e $height, definidas por meio do construtor. Implemente calculateArea() para retornar a área (largura multiplicada pela altura).
  • Circle.php: Crie uma classe Circle que também implemente Calculable. Inclua o arquivo da interface. A classe deve ter uma propriedade privada $radius, definida por meio do construtor. Implemente calculateArea() para retornar a área usando a fórmula pi() * radius * radius.
  • main.php: Inclua os dois arquivos de formas. Crie uma função chamada displayArea que aceite um parâmetro Calculable e um nome de forma (string). A função deve imprimir: "[name] area: [area]", em que 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 a altura (converta-as para números de ponto flutuante) e um Circle com o raio (converta-o para um número de ponto flutuante). Chame displayArea() duas vezes: primeiro com o retângulo, usando "Rectangle" como nome, e depois com o círculo, usando o nome de 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 voltado para uma interface!

Experimente você mesmo

<?php
// Inclua 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 a área é arredondada para 2 casas decimais usando number_format()

// Leia 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 width e a height

// TODO: Crie um Circle com o 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

Pratique por conta própria: Compilador de PHP online