Pessoalmente eu criaria uma interface quadrilateros que tanto o quadrado quanto o retangulo implementam.
Ai vc poderia comparar se um quadrilatero é igual ao outro em um equals que receba um outro quadrilatero. Nesse caso vc compararia os tamanhos A e B ( que no caso do quadrado são iguais) ou poderia pensar em algo mais elaborado, afinal um trapezio é um quadrilatero tb (ai vc poderia comparar/calcular as diagonais).
É só uma ideia…
JonasZzZz
peczenyj:
Pessoalmente eu criaria uma interface quadrilateros que tanto o quadrado quanto o retangulo implementam.
Ai vc poderia comparar se um quadrilatero é igual ao outro em um equals que receba um outro quadrilatero. Nesse caso vc compararia os tamanhos A e B ( que no caso do quadrado são iguais) ou poderia pensar em algo mais elaborado, afinal um trapezio é um quadrilatero tb (ai vc poderia comparar/calcular as diagonais).
É só uma ideia… ;-)
hum… entendi… eu pensei em fazer desse jeito também
mas o problema mesmo nao é como funcionaria…
o que eu não consigo fazer é sobrescrever o equals() de modo que ele compare 1 quadrado com 1 retângulo( por exemplo comparar um método calculaArea())… é mais no código que eu tô perdido.
[]'s
claudneto
então vc queria implementar o métodos equals() pra ser usado do seu jeito?
JonasZzZz
Exatamente… me expliquei mal…
Eu queria fazer algo assim:
classQuadrado{//calculaArea(){...}// construtor Quadrado(lado1,lado2)...//equals() sobrescrito que comparasse a area com a de outro objeto...}classRetangulo{//calculaArea(){...}// construtor Retangulo(lado1,lado2)...//equals() sobrescrito que comparasse a area com a de outro objeto...}classExemplo{publicstaticvoidmain(Stringargs[]){Retangulor=newRetangulo(2,8);Quadradoq=newQuadrado(4,4);System.out.println(r.equals(q));System.out.println(q.equals(r));}}
obrigado…
joca_java
Jonas, nada impede de você fazer com que o equals compare objetos diferentes.
Mas pessoalmente, eu faria o que o peczenyj indicou… criaria uma interface quadriláteros e no seu equals, calcularia a área…
no caso você quer que eles sejam iguais se possuirem a mesma área né isso? Então fica aí a sugestão.
[]´s
JonasZzZz
joca_java:
Jonas, nada impede de você fazer com que o equals compare objetos diferentes.
Mas pessoalmente, eu faria o que o peczenyj indicou… criaria uma interface quadriláteros e no seu equals, calcularia a área…
no caso você quer que eles sejam iguais se possuirem a mesma área né isso? Então fica aí a sugestão.
[]´s
acho que entendi… vou tentar aqui…
obrigado.
[]'s
pedrovds
Cria uma classe Quadrilatero com o método equals() implementado nela, e nas classes Quadrado e Retangulo voce herda de Quadrilatero..
É o meu primeiro post, espero ter ajudado..
:wink:
publicclassQuadrilatero{privateintbase;privateintaltura;publicQuadrilatero(intbase,intaltura){this.base=base;this.altura=altura;}publicbooleanequals(Quadrilateroquadrilatero){if(this.base==quadrilatero.getBase()&&this.altura==quadrilatero.getAltura()){// Ou já chama o método calculaArea() aqui dentro.returntrue;}else{returnfalse;}}publicintgetBase(){returnthis.base;}publicintgetAltura(){returnthis.altura;}}
pedrovds
Completando,
Coloca essa classe Quadrilatero como abstrata e o metodo abstract calculaArea() dentro dela e o implementa nas classes filhas (Quadrado e Retangulo). Assim voce vai poder chamar o método de dentro do equals() e comparar os objetos direto pela área…
[]'s
JonasZzZz
pedrovds:
Cria uma classe Quadrilatero com o método equals() implementado nela, e nas classes Quadrado e Retangulo voce herda de Quadrilatero..
É o meu primeiro post, espero ter ajudado..
:wink:
publicclassQuadrilatero{privateintbase;privateintaltura;publicQuadrilatero(intbase,intaltura){this.base=base;this.altura=altura;}publicbooleanequals(Quadrilateroquadrilatero){if(this.base==quadrilatero.getBase()&&this.altura==quadrilatero.getAltura()){// Ou já chama o método calculaArea() aqui dentro.returntrue;}else{returnfalse;}}publicintgetBase(){returnthis.base;}publicintgetAltura(){returnthis.altura;}}
Brigadão cara...
mas o problema é que aí você está usando uma sobrecarga do equals(), e não reescrevendo o equals()...
tem que ser tipo:
public boolean equals(Object obj){...}
[]'s
Jaba
O problema, Jonas, é que um Quadrado nunca vai ser um Retãngulo. Eu não vejo uma maneira de comparar dois objetos distintos, se o Equals compara objetos.
Eu faria com uma Classe Abstrata, usando um método abstrato que Comparasse suas SubClasses.
Ai o Equals compararia as Variaveis de Instancia de Dois Objetos que Pertencem a Mesma Hierarquia, entendeu?
O problema, Jonas, é que um Quadrado nunca vai ser um Retãngulo. Eu não vejo uma maneira de comparar dois objetos distintos, se o Equals compara objetos.
Você pode sobrescrever o Equals, e comparar as Variaveis de Instancia de Dois Objetos, entendeu?
Acho que é isso o que eu quero… hehe
O que eu quero é sobrescrever o equals() para comparar a area de um objeto com a de outro… não importando o seu tipo…
Algo do tipo “se o quadrado tem area 5 e o retangulo tem area 5 -> retorne true, se nao -> false”…
o que eu não to conseguindo é sobrescrever o equals(Object obj)… eu tô perdido no codigo…
se alguém puder só fazer um esboço do equals()… seria bom