Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Anderson Nunes Machado

[Resolvido] Implemente em PHP a hierarquia de classes mostrada

Recommended Posts

7. Implemente em PHP a hierarquia de classes mostrada abaixo:

 

Circulo<---------Forma-------> Retangulo

 

A classe Forma é uma classe abstrata que conterá quatro atributos: coordenada x do canto superior esquerdo,

coordenada y do canto superior esquerdo, coordenada x do canto inferior direito e coordenada y do canto inferior direito.

Estes atributos deve ser encapsulados. Forneça métodos GET e SET para todos os atributos. Forneça um construtor que

inicialize todos os atributos.

 

A classe Forma deve conter também os seguintes métodos:

 

• calculaLargura, que calcula a largura da figura. A largura da figura será igual ao valor positivo da diferença

entre as coordenadas x (a do canto inferior direito e do canto superior esquerdo). Cuidado, pois

esse valor não pode ser negativo.

 

• calculaAltura, que calcula a altura da figura. A altura da figura será igual ao valor positivo da diferença

entre as coordenadas y (a do canto inferior direito e do canto superior esquerdo). Cuidado, pois esse valor

não pode ser negativo.

 

• calculaArea, abstrato.

 

• calculaPerimetro, abstrato.

 

A classe Circulo deve implementar os métodos calculaArea e calculaPerimetro. A área de um círculo é dada pela

fórmula πR2 e o perímetro por 2πR, sendo R o raio do círculo e π igual a 3,14159. A classe Circulo deve ter um método

que calcule o seu raio, e que deve ser usado no cálculo da área e do perímetro. O raio de um círculo é dado pela diferença

entre a coordenada x do canto inferior direito e da coordenada x do canto superior esquerdo (certifique-se de que

esse valor seja positivo).

 

A classe Retangulo deve também implementar os métodos calculaArea e calculaPerimetro. A área de um retângulo

é dada pela multiplicação da largura pela altura enquanto o perímetro é igual a 2L+ 2A, sendo L a largura do retângulo

e A a sua altura.

 

Faça um programa que crie objetos da classe um objeto da classe Retangulo e um objeto da classe Circulo. Este

programa deve preencher as coordenadas de cada forma, mostrar a largura e altura do retângulo, o raio do círculo e a

área e perímetro de ambas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O programa é o script que irá instanciar as classes Retangulo e Circulo, Setar os atributos e depois executar os métodos dos cálculos específicos e mostrar o resultado na tela.

 

Forma.php

<?php

abstract class Forma {

   protected $x1;
   protected $x2;
   protected $y1;
   protected $y2;

   function __construct($x1, $x2, $y1, $y2) {
       $this->setX1($x1);
       $this->setX2($x2);
       $this->setY1($y1);
       $this->setY2($y2);
   }

   public function getX1() {
       return $this->x1;
   }

   public function setX1($x1) {
       $this->x1 = $x1;
   }

   public function getX2() {
       return $this->x2;
   }

   public function setX2($x2) {
       $this->x2 = $x2;
   }

   public function getY1() {
       return $this->y1;
   }

   public function setY1($y1) {
       $this->y1 = $y1;
   }

   public function getY2() {
       return $this->y2;
   }

   public function setY2($y2) {
       $this->y2 = $y2;
   }

   public function calculaLargura(){

       return abs($this->x2-$this->x1);

   }

   public function calculaAltura(){
       return abs($this->y2-$this->y1);
   }

   abstract function calculaArea();

   abstract function calculaPerimetro();



}

?>

 

Circulo.php

<?php

class Circulo extends Forma {

   public static $pi = 3.14159;

   function __construct($x1, $x2, $y1, $y2) {
       parent::__construct($x1, $x2, $y1, $y2);
   }

   public function calculaRaio(){
       return $this->calculaLargura();
   }

   public function  calculaArea() {
       return self::$pi*pow($this->calculaRaio(), 2);
   }

   public function  calculaPerimetro() {
       return 2*self::$pi*$this->calculaRaio();
   }


}

?>

 

Retangulo.php

<?php

class Retangulo extends Forma {

   function __construct($x1, $x2, $y1, $y2) {
       parent::__construct($x1, $x2, $y1, $y2);
   }

   public function  calculaArea() {
       return $this->calculaAltura()*$this->calculaLargura();
   }

   public function  calculaPerimetro() {
       return (2*$this->calculaLargura()) + (2*$this->calculaAltura());
   }


}

?>

 

programa.php

<?php

require 'Forma.php';
require 'Circulo.php';
require 'Retangulo.php';

$c = new Circulo(2, 4, 10, 15);
$r = new Retangulo(3, 7, 2, 10);

echo $r->calculaLargura();

echo '<br>';

echo $r->calculaAltura();

echo '<br>';

echo $r->calculaArea();

echo '<br>';

echo $r->calculaPerimetro();

echo '<br>';

echo $c->calculaRaio();

echo '<br>';

echo $c->calculaArea();

echo '<br>';

echo $c->calculaPerimetro();


?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.