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 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 area.
  • Rectangle.php: Crie uma classe Rectangle que implements Calculable. Inclua o arquivo da interface. A classe deve ter as propriedades privadas $width e $height, definidas por meio do constructor. Implemente calculateArea() para retornar a area (width multiplied por height).
  • Circle.php: Crie uma classe Circle que também implements Calculable. Inclua o arquivo da interface. A classe deve ter uma propriedade privada $radius, definida por meio do constructor. Implemente calculateArea() para retornar a area usando a formula pi() * radius * radius.
  • main.php: Inclua os dois arquivos de formas. Crie uma function chamada displayArea que accepts um parâmetro Calculable e um nome de forma (string). A function deve Print: "[name] area: [area]", com a area arredondada para 2 casas decimais usando number_format().

Você receberá quatro inputs: width do rectangle, height do rectangle, radius do circle e um nome de forma para o circle. Crie um Rectangle com o width e o height (converta-os para números de ponto flutuante) e um Circle com o radius (converta-o para um número de ponto flutuante). Call displayArea() duas vezes: primeiro com o rectangle usando "Rectangle" como nome e, depois, com o circle usando o nome de forma provided. Print cada resultado em sua própria linha.

A function displayArea() funciona com qualquer forma que implements Calculable. Ela não precisa saber se está calculando a area de um rectangle, circle ou de qualquer forma futura que você possa adicionar. Essa é a beleza de programar 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