Hierarquia Forma

2 respostas
A

Olá Galera tudo bem??..Estava fazendo alguns programas do Livro Aprendendo Java, quando me deparei com um programa sobre hierarquia das formas. Tentei fazer mas não entendi bem alguns conceitos.Caso alguém possa me ajudar eu ficarei grato. Para facilitar resolvi separar o problema em partes:

  1. O problema consiste em implementar uma hierarquia Forma. Temos 2 formas: A Bidimensional e a Tridimensional.
  2. A Bidimensional deve conter métodos, obter área para calcular a área da forma bidimensional e A Tridimensional que tbm deve conter métodos, obter área e obter volume para calcular a área do volume mais a superfície da forma tridimensional.
  3. Deve ser criado um programa com arrays de referência Forma para objetos de cada classe concreta na hierarquia.
  4. O programa deve imprimir uma descrição de texto do objeto ao qual cada elemento do array se refere.
  5. No loop que processa todas as formas de array, determine se cada forma é uma Forma Bidimensional ou Tridimensional.
  6. Se for Bidimensional exiba sua área. Se for Tridimensional exiba área e volume

2 Respostas

B

Só uma dúvida, você não entender o que tem que fazer no programa, ou como a hierarquia vai funcionar nesse caso? O que eu faria aqui seria a princípio criar apenas 3 classes uma classe abstrata chamada Forma que tivesse o método calcularArea e Tridimencional e Bidimencional extendendo Forma e sobreescrevendo o método calcularArea, que pode ser abstrato em forma. Você vai ter que usar o operador instanceof para saber de qualquer classes você vai estar falando… O seu array vai ser do tipo Forma, assim ele pode armazenar qualquer uma das classes. Acho que isso ja ajuda

A

Olá Bruno, blz??..Valeu pela Dica…Eu fiz da seguinte maneira: criei a classe Forma, depois criei a classe Bidimensional que extend da Forma e a classe Tridimensional que extend de Forma tbm. Por fim, pra terminar o programa exibi os resultados, fiz assim:

classe Forma:

package bitridimensional;

public class Formas {

float comprimento = 0f;

float largura = 0f;

private float area = 0f;
public float obterArea(){
    area = largura * comprimento;
    return area;

}
}

classe Bidimensional:

package bitridimensional;

public class Bidimensional extends Formas{

/** Cria uma nova instancia de Bidimensional */

public Bidimensional(float c, float l) {

super();

super.comprimento = c;

super.largura = l;
}

}

classe Tridimensional:

public class Tridimensional extends Formas {
float volume = 0f;
float altura = 0f;
String nome = "tridimensional";

/** Creates a new instance of Tridimensional */
public Tridimensional(float c, float l, float a) {
    super();
    super.comprimento = c;
    super.largura = l;
    altura = a;
}
public float obterVolume(){
    volume = altura * super.obterArea();
    return volume;
}

}

Main.Java

package bitridimensional;

import java.util.ArrayList;
import java.util.List;

public class Main {

public static void main(String [] args){
    List<Formas> minhasFormas = new ArrayList();
    Bidimensional quadrado = null;
    Tridimensional piscina = null;
    
    for (int i = 1; i < 10; i++) {
        quadrado = new Bidimensional(20,i);
        piscina = new Tridimensional(20,i+10, i+5);
        minhasFormas.add(quadrado);
        minhasFormas.add(piscina);
    }
    
    for (Formas elem : minhasFormas) {
        if (elem instanceof Bidimensional) {
            System.out.println("\nSou bidimensional e minha area é: " + elem.obterArea());
        }
        if (elem instanceof Tridimensional) {
            piscina = (Tridimensional) elem;
            System.out.println("\nSou " + piscina.nome + ", meu volume é: " + piscina.obterVolume());
            System.out.println("E minha área é: " + piscina.obterArea());
        }
    }
[/b]
Criado 30 de novembro de 2006
Ultima resposta 1 de dez. de 2006
Respostas 2
Participantes 2