Alguém pode me ajudar com esse código, o programa não roda!

O programa deve ser capaz de calcular perímetro, área e volume, conforme a característica descrita nas regras acima.Para implementar essa solução, deve-se utilizar interfaces e classes da seguinte forma: as características do plano-bidimensional e do espaço-tridimensional devem ser modeladas como interfaces. As figuras devem ser modeladas como classes que implementam a respectiva interface.
Obs.: não é necessário implementar o programa principal para fazer os cálculos, basta que as interfaces e as classes sejam implementadas sintática e semanticamente corretas.
eu já fiz isso não sei se está certo

public interface Área {
    public double calculaArea();

}
public interface Unidade {

    public void setUnidade();

    }

Classe Bidimensional que implementa Unidade

public class Bidimensional implements Unidade {
    private String unidade;

    @Override
    public void setUnidade() {
        this.unidade="m²";
    }

public String getUnidade(){
    return this.unidade;
}


}

classes Calculáveis que extendem Bidimensionais pegando sua unidade de medida, implementando a interface área;

public class Quadrado extends Bidimensional implements Área {
    private double lado;
    private double area;

    // Construtor padrão da classe recebendo medida
    public Quadrado (double lado){
        this.setUnidade();
        System.out.println("Unidade de medida do Quadrado "+ this.getUnidaed());
        this.lado = lado;
    }


    // Implementação da interface Área
    @Override
    public double calculaArea() {
       return this.area = this.lado * this.lado;
    }

    // Override na toString para exibição dos componentes apenas pelos nomes de instancia

    @Override
    public String toString(){
        return "Área do quadrado calculado é = "+this.area;
    }







}
public class Retangulo extends Bidimensional implements Área {
    private double base;
    private double altura;
    private double area;

    // Construtor padrão da classe recebendo medida
    public Retangulo(double base, double altura) {
        this.setUnidade();
        System.out.println("Unidade de medida do Retangulo "
                + this.getUnidaed());
        this.base = base;
        this.altura = altura;
    }

    // Implementação da interface Área
    @Override
    public double calculaArea() {
        return this.area = this.base * this.altura;
    }

    // Override na toString para exibição dos componentes apenas pelos nomes de instancia
    @Override
    public String toString() {
        return "Área do retangulo calculado é = " + this.area;
    }

}
public class Triangulo extends Bidimensional implements Área {
    private double base;
    private double altura;
    private double area;

    // Construtor padrão da classe recebendo medida
    public Triangulo(double base, double altura) {
        this.setUnidade();
        System.out.println("Unidade de medida do Triangulo "
                + this.getUnidaed());
        this.base = base;
        this.altura = altura;
    }

    // Implementação da interface Área
    @Override
    public double calculaArea() {
        return this.area = (this.base * this.altura) / 2;
    }

    // Override na toString para exibição dos componentes apenas pelos nomes de instancia
    @Override
    public String toString() {
        return "Área do triangulo calculado é = " + this.area;
    }

}

Teste de calculos de área


public class CalculaArea {
    public static void main(String[] args) {
        Área quadrado = new Quadrado(2);
        quadrado.calculaArea();
        System.out.println(quadrado);
        Área retangulo = new Retangulo(2,3);
        retangulo.calculaArea();
        System.out.println(retangulo);
        Área triangulo = new Triangulo(10, 5);
        triangulo.calculaArea();
        System.out.println(triangulo);
    }


}

1 - Falta uma parte do enunciado do exercício;
2 - Seu exercício cumpre isso:

o espaço tridimensional basta eu fazer da mesma forma ?

Que regras são essas?

Na geometria, as figuras são tratadas no “plano” (figuras bidimensionais) ou no “espaço” (figuras tridimensionais). Figuras como retângulos, quadrados, círculos e elipses são figuras bidimensionais que podem ser colocadas no plano e que permitem o cálculo de seus perímetros e suas áreas. Figuras como pirâmides, esferas e cilindros são figuras tridimensionais que podem ser colocadas no espaço e que permitem o cálculo de seus volumes.

Porque Unidade é uma interface? Porque o cálculo da área é uma classe e não um método? Não deveria ser um método da interface Bidimensional e Tridimensional?

1 curtida

isso, você pode me dar uma ajuda ?

eu consegui rodar o programa mas não estou conseguindo fazer o que o exercício propõe

Exemplo para te clarear as ideias:

1 - Interfaces
1.1 - Interface Bidimensional

public interface Bidimensional {
	public void calcularPerimetro();
	public void calcularArea();
}

1.2 - Interface Tridimensional

public interface Tridimensional {
	public void calcularVolume();
	public void calcularArea();
}

2 - Classes
2.1 - Classe Quadrado

public class Quadrado implements Bidimensional {
	private float lado;
	private float perimetro;
	private float area;
	
	/*
	* Métodos de figuras bidimensionais
	*/
	public void calcularPerimetro(){
		
		perimetro = 4 * getLado();
	}
	
	public void calcularArea(){
		
		area = getLado() * getLado();
	}
	
	/*
	* Métodos acessores e modificadores
	*/
	public void setLado(float medidaLado){
		this.lado = medidaLado;
	}
	
	public float getLado(){
		return lado;
	}
	
	public float getPerimetro(){
		return perimetro;
	}
	
	public float getArea(){
		return area;
	}
	
	@Override
	public String toString(){
		return "-> " + this.getClass().getName() +  "\nLado: " + getLado() + "\nPerímetro: " 
			+ getPerimetro() + "\nÁrea: " + getArea() + "\n";
	}
}

2.2 - Classe Círculo

public class Circulo implements Bidimensional {
	private static final float PI = 3.1416f;
	private float raio;
	private float comprimento;
	private float area;
	
	/*
	* Métodos de figuras bidimensionais
	*/
	public void calcularPerimetro(){
		
		comprimento = Math.round(2 * PI * getRaio());
	}
	
	public void calcularArea(){
		
		area = Math.round(PI * getRaio() * getRaio());
	}
	
	/*
	* Métodos acessore e modificadores
	*/
	public void setRaio(float raio){
		this.raio = raio;
	}
	
	public float getRaio(){
		return raio;
	}
	
	public float getComprimento(){
		return comprimento;
	}
	
	public float getArea(){
		return area;
	}
	
	@Override
	public String toString(){
		return "-> " + this.getClass().getName() + "\nRaio: " + getRaio() + "\nComprimento: " 
			+ getComprimento() + "\nÁrea: " + getArea() + "\n";
	}
}

2.3 - Classe Cilindro

public class Cilindro implements Tridimensional{
	private float altura;
	private Circulo base;
	private float area;
	private float volume;
	
	/*
	* Métodos tridimensionais
	*/
	public void calcularVolume(){
		volume = getBase().getArea() * getAltura();
	}
	
	public void calcularArea(){
		area = (getBase().getComprimento() * getAltura()) + getBase().getArea();
	}
	
	/*
	* Métodos acessores e modificadores
	*/
	public void setAltura(float altura){
		this.altura = altura;
	}
	
	public float getAltura(){
		return altura;
	}
	
	public void setBase(Circulo base){
		this.base = base;
	}
	
	public Circulo getBase(){
		return base;
	}
	
	public float getArea(){
		return area;
	}
	
	public float getVolume(){
		return volume;
	}
	
	@Override
	public String toString(){
		return "-> " + this.getClass().getName() + "\nAltura: " + getAltura() + "\nBase: " 
			+ getBase().getArea() + "\nÁrea: " + getArea() + "\nVolume: " + getVolume() + "\n";
	}
}

2.4 - Classe Geometria (Principal)

public class Geometria {
	public static void main(String[] args){
		Quadrado quadrado1 = new Quadrado();
		quadrado1.setLado(2.5f);
		quadrado1.calcularPerimetro();
		quadrado1.calcularArea();
		
		Circulo circulo1 = new Circulo();
		circulo1.setRaio(3.75f);
		circulo1.calcularPerimetro();
		circulo1.calcularArea();
		
		Circulo circulo2 = new Circulo();
		circulo2.setRaio(4.21f);
		circulo2.calcularPerimetro();
		circulo2.calcularArea();
		
		Cilindro cilindro1 = new Cilindro();
		cilindro1.setAltura(3.57f);
		cilindro1.setBase(circulo2);
		cilindro1.calcularArea();
		cilindro1.calcularVolume();
		
		System.out.println("\nFiguras bidimensionais\n");
		System.out.println(quadrado1.toString());
		System.out.println(circulo1.toString());
		System.out.println(circulo2.toString());
		
		System.out.println("\nFiguras tridimensionais\n");
		System.out.println(cilindro1.toString());
	}
}

Rodando…

1 curtida

Muito obrigado mesmo, agora eu consegui compreender como proceder neste tipo de situação.

1 curtida