Algúem pode me ajudar nesse Exercício?

7 respostas
B

Tõ achando que está faltando alguma coisa…

Crie uma classe abstrata Forma, seguindo as seguintes especificações:

Que possui métodos abstratos area() e perimetro() e variáveis coordenadaX e coordenadaY;

Com subclasses Circulo e Retangulo;

Circulo possui variável raio, bem como um construtor de assinatura Circulo(double raio);

Retangulo possui variável base e altura, bem como construtor de assinatura Retangulo(double altura, double base);

Implemente a classe Quadrado como subclasse de Retangulo, que possui o método getLado(), bem como o construtor Quadrado(double lado). Utilize a palavra-chave super para efetuar a chamada ao construtor da classe pai.

Implemente uma interface chamada Desenhavel, que possui método desenhar();

Crie classes CirculoDesenhavel, RetanguloDesenhavel e QuadradoDesenhavel; que são subclasses de Circulo, Retangulo e Quadrado respectivamente e todas implementam a interface Desenhavel.

Cria uma classe TestaFormas, que possui uma array do tipo de classe Forma e que possui 4 instâncias de formas diferentes. Percorra o array através de um loop for e informe a área e o perímetro total das formas armazenadas no array.
abstract class Forma {
	double coordenadaX;
	double coordenadaY;

	abstract void area();

	abstract void perimetro();
}

class Circulo extends Forma {
	private double raio;

	Circulo(double raio) {
		this.raio = raio;
	}

	@Override
	void area() {
	}

	@Override
	void perimetro() {
	}

}

class Retangulo extends Forma {
	protected double base;
	protected double altura;

	Retangulo(double base, double altura) {
		this.base = base;
		this.altura = altura;
	}

	@Override
	public void area() {
		// return base * altura;
	}

	@Override
	void perimetro() {
	}
}

class Quadrado extends Retangulo {
	Quadrado(double lado) {
		super(lado, lado);
	}

	public void getLado() {

	}
}

interface Desenhavel {
	public abstract void desenhar();
}

public class TestaFormas {

}

7 Respostas

CyberX

Sim, estão faltando esses casos:

B

ok, mas o que queria dizer que estava faltando alguma coisa antes de implementar essas classes, mas vou mandar fazer e mandar…

B

e agora?? o que está faltando ???

package lista4;

abstract class Forma {
	private double coordenadaX;
	private double coordenadaY;

	abstract double area();

	abstract double perimetro();
}

class Circulo extends Forma {
	private double raio;

	Circulo(double raio) {
		this.raio = raio;
	}

	public double getRaio() {
		return raio;
	}

	public void setRaio(double raio) {
		this.raio = raio;
	}

	@Override
	double area() {
		return Math.PI * Math.pow(raio, 2);
	}

	@Override
	double perimetro() {
		return 2 * Math.PI * raio;
	}

}

class Retangulo extends Forma {
	private double altura;
	private double base;

	public double getAltura() {
		return altura;
	}

	public void setAltura(double altura) {
		this.altura = altura;
	}

	public double getBase() {
		return base;
	}

	public void setBase(double base) {
		this.base = base;
	}

	Retangulo(double altura, double base) {
		this.altura = altura;
		this.base = base;

	}

	@Override
	public double area() {
		return getBase() * getAltura();
	}

	@Override
	double perimetro() {
		return getAltura() + getAltura() + getBase() + getBase();
	}
}

class Quadrado extends Retangulo {
	Quadrado(double lado) {
		super(lado, lado);
	}

	public void getLado() {
		
	}
}

interface Desenhavel {
	public abstract void desenhar();
}

class CirculoDesenhavel extends Circulo implements Desenhavel {

	CirculoDesenhavel(double raio) {
		super(raio);
	}

	@Override
	public void desenhar() {
	}
}

class RetanguloDesenhavel extends Retangulo implements Desenhavel {

	RetanguloDesenhavel(double base, double altura) {
		super(base, altura);
	}

	@Override
	public void desenhar() {
	}
}

class QuadradoDesenhavel extends Quadrado implements Desenhavel {

	QuadradoDesenhavel(double lado) {
		super(lado);
	}

	@Override
	public void desenhar() {
	}

}

public class TestaFormas {

	public static void main(String[] args) {
		Forma[] formas = new Forma[4];
		formas[0] = new Circulo(10);
		formas[1] = new Retangulo(20, 30);
		formas[2] = new Quadrado(10);
		formas[3] = new Quadrado(10);

		for (int i = 0; i < formas.length; i++) {
			System.out.println("Area " + formas[i].area() + " Perimetro: " + formas[i].perimetro());;
		}
	}
}
E

Você está sem fôlego mesmo, não terminou o método main da classe TestaFormas :slight_smile:
Por enquanto, vi só 2 instâncias, não 4.
Você ainda não pôs o for
Você ainda não imprimiu a área e perímetro

B

Editei o código acima dá uma olhada se está chegando próximo do que é para chegar…

E

E então, está imprimindo os valores desejados? Se estiver, o programa deve estar certo.

B

Agredeço a ajuda de todos, segue o exercício pronto!!!

package lista4;

abstract class Forma {
	private double coordenadaX, coordenadaY;

	abstract void area();
	abstract void perimetro();
}

class Circulo extends Forma {
	private double raio;

	Circulo(double raio) {
		this.raio = raio;
	}

	@Override
	public void area() {
		double valorArea = Math.PI * Math.pow(raio, 2);
		System.out.printf( "Área do Círculo: %.2f ", valorArea);
	}

	@Override
	public void perimetro() {
		double valorPerimetro = 2* Math.PI * raio;
		System.out.printf( "\nPerímetro do Círculo: %.2f ", valorPerimetro);
		System.out.println();
	}

}

class Retangulo extends Forma {
	private double altura;
	protected double base;

	Retangulo(double altura, double base) {
		this.altura = altura;
		this.base = base;

	}

	@Override
	public void area() {
		double valorArea = altura * base;
		System.out.println("Área Retângulo: " + valorArea);
	}

	@Override
	public void perimetro() {
		double valorPerimetro = 2 * (altura + base);
		System.out.println("Perímetro Retângulo: " + valorPerimetro);
	}
}

class Quadrado extends Retangulo {
	Quadrado(double lado) {
		super(lado, lado);
	}

	public double getLado() {
		return base;
	}
}

interface Desenhavel {
	void desenhar();
}

class CirculoDesenhavel extends Circulo implements Desenhavel {

	CirculoDesenhavel(double raio) {
		super(raio);
	}

	@Override
	public void desenhar() {
		System.out.println("Desenhando Círculo: O");
	}
}

class RetanguloDesenhavel extends Retangulo implements Desenhavel {

	RetanguloDesenhavel(double base, double altura) {
		super(base, altura);
	}

	@Override
	public void desenhar() {
		System.out.println("Desenhando o Retângulo: [  ]");
	}
}

class QuadradoDesenhavel extends Quadrado implements Desenhavel {

	QuadradoDesenhavel(double lado) {
		super(lado);
	}

	@Override
	public void desenhar() {
		System.out.println("Desenhando o Retângulo: [ ]");
	}

}

public class TestaFormas {

	public static void main(String[] args) {
		Forma[] formas = new Forma[4];
		formas[0] = new Circulo(10);
		formas[1] = new Retangulo(10, 20);
		formas[2] = new Quadrado(10);
		formas[3] = new RetanguloDesenhavel(10,20);
	
		for (int i = 0; i < formas.length; i++) {
			formas[i].area();
			formas[i].perimetro();
		}
	}
}
Criado 6 de junho de 2012
Ultima resposta 7 de jun. de 2012
Respostas 7
Participantes 3