Método show

Amigos, estou tendo dificuldade em solucionar um exercício, alguém poderia dar uma força?? O problema é: tenho uma classe chamada principal, ela deve ter um método chamado showArea que recebe como parâmetro um Objeto que extende da classe FiguraSwing, como o Objeto extende FiguraSwing ele implementa o método show(). Seguem as classes. Não estou sabendo como implementar isso.

[code]
package fg;

public interface FiguraSwing {

public abstract void showArea();

}[/code]

[code]
package fg;

public abstract class FiguraGeometrica {

private Double area;


public Double getArea() {
	return area;
}


public void setArea(Double area) {
	this.area = area;
}

	public abstract void calcularArea();

}[/code]

[code]
package fg;

public class Quadrado extends FiguraGeometrica {

private Double lado;

public void calcularArea(){
	
	setArea(Math.pow(lado, 2));

}

public Double getLado() {
	return lado;
}

public void setLado(Double lado) {
	this.lado = lado;
}

}[/code]

[code]
package fg;

public class QuadradoSwing extends Quadrado implements FiguraSwing {

public void showArea(){
	
	
	
}

}[/code]

package fg;
import javax.swing.JOptionPane;

public class Principal {

	public static void main(String[] args) {
		
		String opcao = JOptionPane.showInputDialog(null,"Escolha a Figura \n1 Quadrado \n2 Triângulo \n3 Círculo");
		
		int novaOpcao = Integer.parseInt(opcao);
		
		if (novaOpcao ==1){
			JOptionPane.showMessageDialog(null,"Você escolheu quadrado");
			String opcaoLado = JOptionPane.showInputDialog(null, "Informe o lado do Quadrado");
			Double lado = Double.parseDouble(opcaoLado);
			Quadrado areaQ = new Quadrado();
			areaQ.setLado(lado);
			areaQ.calcularArea();
									
			JOptionPane.showMessageDialog(null,"A área do quadrado é : " + areaQ.getArea());
			
			
		}

	}

}

Olá !

Supondo que o problema seja somente o citado acima, você deve criar um método na classe principal assim:


public static void showArea(FiguraSwing figuraSwing) {
   //aqui se chama o método do figuraSwing
}

Só duas coisas:

  • Tente deixar claro ao máximo sua dúvida no assunto de forma sucinta
  • Tente ser mais direta na dúvida pois muito código no tópico mais atrapalha do que ajuda, por exemplo:

Tenho uma classe abstrata assim assado, e uma interface com o método assim assado. Criei uma classe que extende da abstrata e implementa a inteface. Como faço pra blábláblá … ok ?

flw []s
Roger Leite

Caro José Carlos,

Primeiro: Na classe principal tenho que ter um método chamado showArea que mostre o cálculo da área que o usuário quer calcular. Tenho que calcular a área de cada figura e com resultado mostrar no método showArea. Esse método é feito em que parte do código??

Segundo: Tenho que criar um objeto que extenda da classe FiguraSwing que servirá de parâmetro para o método showArea. Onde crio este objeto e ele é de que tipo???

José Carlos,

Na realidade preciso implementar o método showArea da interface FiguraSwing na classe Principal, mostrando o valor de todas as áreas que o usuário escolher. Tb preciso criar um objeto que extenda de FiguraSwing que servirá de parâmetro para o método showArea. O que não estou entendendo é como vou mostrar o resultado das áreas calculadas no método showArea, de que tipo é esse objeto e onde vou criá-lo . Outra dúvida, esse método showArea é quem define qual área será mostrada???

Aguardo retorno do amigo.

Caro José Carlos,

Estou quase lá, ainda tenho alguns problemas.

Na implementação do método showArea, quando passo os parâmetros QuadradoSwing quadrado) na classe Principal ocorre o seguinte erro:
The type Principal must implement the inherited abstract method FiguraSwing.showArea().

Estou calculando a área onde o usuário escolhe a opção da figura e passa os dados para o cálculo, como fazer para levar isso ao método showArea?

Onde devo colocar o código que vai chamar o método showArea, será dentro da classe main.

José Carlos

Vc informou se~eu não soubesse o código para mostrar a área vc enviaria o exemplo, pode fazê-lo colega.

olá, deixe tentar te clareaar um pouco também…

Observe que a classe Principal não deve extender FiguraSwing, isso não é necessário, pode retirar isso do código pra começar… é só preciso colocar o método recebendo como argumento um FiguraSwing.

[quote]como o Objeto extende FiguraSwing ele implementa o método show(). Seguem as classes. Não estou sabendo como implementar isso.

 package fg;
 
 public interface FiguraSwing {
 	
 	public abstract void showArea();
 
 }

[/quote]

Aqui vc já fez uma coisa errada… olhe o nome do método que vc disse precisar implementar e o que vc colocou aqui. Comece por arrumar o nome…

Se o método que vc fala é o showArea, vc mesmo se respondeu nessa pergunta, é na classe Principal. E de brinde, vou passar uma implementação… já que o método só deve mostrar o resultado, deve ser só chamar o método show() da classe que implementa a interface:

public void showArea(FiguraSwing figura) {
   figura.show();
}

beleza? espero ter ajudado… flw

Caros,
Qual a sintaxe para chamar o método show() de um objeto???

Amigo,

Realmente estou começando no Java. Desculpe pelas perguntas bobas, mas acho que só assim podemos aprender.

Explica ae de novo, eu não entendi qual é sua duvida.

Bom,

     Vc precisa ter o metodo showArea na classe principal? Se sim somente cria um ou implemente a interface FiguraSwing, com isso vc sera obrigada a implemente o metodo. Mais creio que não seja isso que vc precisa, vc só precisa chamar o metodo showArea para mostrar a area ja calculada certo?

Vamos ao codigo então…

public class Principal implements FiguraSwing {
      public void showArea(Quadrado obj) {
           obj.setLado(seuValor);
           obj.calcularArea();
           System.out.println(obj.getArea());
      }
}

Foi isso q entendi Arviana.

[quote=arviana]José Carlos,

Na realidade preciso implementar o método showArea da interface FiguraSwing na classe Principal, mostrando o valor de todas as áreas que o usuário escolher. Tb preciso criar um objeto que extenda de FiguraSwing que servirá de parâmetro para o método showArea. O que não estou entendendo é como vou mostrar o resultado das áreas calculadas no método showArea, de que tipo é esse objeto e onde vou criá-lo . Outra dúvida, esse método showArea é quem define qual área será mostrada???

Aguardo retorno do amigo.[/quote]

Arviana,

     O que define o que cada metodo vai fazer é o programador =).. provavelmente pelo nome showArea() - show do ingles é mostrar Area algo do tipo. Por padrão utilizamos nomes de metodos que vão facilitar na manutenção do nosso codigo por outros programadores para facilitar assim a vida dos mesmos. 

Bom ja que vc precisa implementar o metodo na classe principal implemente a interface em primeiro momento assim

Em segundo momento implemente o metodo

 [code]   public void showArea(QuadradoSwing quadrado) {
         
          //Aqui vc implementa o codigo para mostrar a AREA
          // Se não souber avisa que faço  um exemplo pra vc
     }
 [/code]

Em terceiro: o codigo que vai chamar o metodo showArea()

QuadradoSwing quadrado = new QuadradoSwing(); this.showArea(quadrado);

Em quarto: Vc ja implementou o codigo para o usuario escolher o q ele quer e passar os dados ao “quadrado” como por exemplo.

Espero ter ajudado Arviana.

Arviana,

       Deu esse erro é pq implementei o metodo showArea com outra assinatura diferente da interface.. Muda a interface para  a mesma assinatura do metodo q implementei na classe Principal ok?  E quanto sua duvida, pode ser sim na class onde contem o metodo main..  Mais lembre q um contexto statico não pode chamar um contexto não statico viu..

Abraços.

Estou saindo do serviço agora…

Logo mais a noite quando chegar em casa posto um codigo exemplo para sua duvida…

Att,

objeto.show()

???

Pergunta!!!

Vc ja viu java na sua vida? ¿¿¿???¿¿¿