Método show

14 respostas
A

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.

package fg;

public interface FiguraSwing {
	
	public abstract void showArea();

}
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();
		

}
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;
	}
	
	

}
package fg;

public class QuadradoSwing extends Quadrado implements FiguraSwing {
	
	public void showArea(){
		
		
		
	}

}
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());
			
			
		}

	}

}

14 Respostas

R

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

A

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???

A

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.

A

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.

A

José Carlos

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

D

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.

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();
 
 }

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

A

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

A

Amigo,

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

I

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

I

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  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.

I
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.

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

public class Principal implements FiguraSwing {}

Em segundo momento implemente o metodo

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
         }
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.

I

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.

I

Estou saindo do serviço agora…

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

Att,

I

objeto.show()

???

Pergunta!!!

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

Criado 1 de agosto de 2006
Ultima resposta 2 de ago. de 2006
Respostas 14
Participantes 4