Foros del Web » Programación para mayores de 30 ;) » Java »

Implements java

Estas en el tema de Implements java en el foro de Java en Foros del Web. Tenemos esta interfaz que devuelve el área de una figura geométrica: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Java: Ver original public interface FiguraGeometrica {     public double ...
  #1 (permalink)  
Antiguo 08/07/2013, 09:07
 
Fecha de Ingreso: diciembre-2010
Mensajes: 459
Antigüedad: 13 años, 4 meses
Puntos: 21
Implements java

Tenemos esta interfaz que devuelve el área de una figura geométrica:

Código Java:
Ver original
  1. public interface FiguraGeometrica {
  2.     public double calculaArea();
  3. }
  4.  
  5. Y ahora supongamos que tenemos una clase Cuadrado y una Circulo y queremos que implementen esa interfaz:
  6.  
  7. public class Cuadrado implements FiguraGeometrica {
  8.     public double calculaArea() {
  9.         return getLadoA()*getLadoB();
  10.     }
  11. }
  12.  
  13. public class Circulo implements FiguraGeometrica {
  14.     public double calculaArea() {
  15.         return getRadio()*getRadio()*Math.PI;
  16.     }
  17. }

A la hora de trabajar con las figuras geométricas, como sabe que método tiene que usar, si el del cuadrado o círculo

Código Java:
Ver original
  1. public double calculaPrecio (FiguraGeometrica geom) {
  2.     return getPrecioM2()*geom.calculaArea();
  3. }
__________________
Oye los consejos de todo el mundo, y sigue el tuyo.
Si te han ayudado deja un karma y si no te han ayudado pero vez util la información tb deja un karma xD
Sirdaiz
  #2 (permalink)  
Antiguo 08/07/2013, 09:30
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Implements java

Porque al llamar a la funcion "calculaPrecio" como parámetro le pasas una clase Cuadrado o Circulo y es a su función de calculaArea a la que llama. A ti te ha de ser transparente a cual llame.
__________________
Aviso: No se resuelven dudas por MP!
  #3 (permalink)  
Antiguo 08/07/2013, 10:20
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Implements java

La JVM decide en runtime qué método usar en función del tipo de clase de la instancia, no de la referencia.

Aunque hicieses esto

FiguraGeometrica f = new Cuadrado();
f.calculaArea()

utilizaría el correspondiente a Cuadrado, porque el objeto es de tipo Cuadrado.

El tema da para mucho (overriden, overload), son del tipo de cosas que preguntan en el SCJP.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #4 (permalink)  
Antiguo 08/07/2013, 11:15
 
Fecha de Ingreso: diciembre-2010
Mensajes: 459
Antigüedad: 13 años, 4 meses
Puntos: 21
Respuesta: Implements java

Pero por lo q tengo entendido se usa interfaz para no declarar una instancia de un objeto, asi q supongamos que me dice el cliente calcula el área del cuadrado

FiguraGeometrica f = new Cuadrado();
f.calculaArea()

y después me dice no mejor la del circulo
FiguraGeometrica f = new Circulo();
f.calculaArea()

Lo suyo como dice malenko seria:
public double calculaPrecio (FiguraGeometrica geom) {

return getPrecioM2()*geom.calculaArea();

}

donde geom seria un objeto cuadrado o circulo, para esto es el uso de la interfaz, no se si me he explicado bien
__________________
Oye los consejos de todo el mundo, y sigue el tuyo.
Si te han ayudado deja un karma y si no te han ayudado pero vez util la información tb deja un karma xD
Sirdaiz
  #5 (permalink)  
Antiguo 08/07/2013, 12:47
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Implements java

Cita:
Pero por lo q tengo entendido se usa interfaz para no declarar una instancia de un objeto
Creo que no tienes los conceptos claros.

Una interfaz te sirve para acceder a una instancia/objeto de una forma concreta, como una referencia que apunta a un objeto/instancia de una clase que implementa la interfaz. Pero ese objeto ha sido creado en algún momento y con la clase que le corresponde, ya que una interfaz no se puede instanciar.


Cita:
FiguraGeometrica f = new Cuadrado();
f.calculaArea()

y después me dice no mejor la del circulo
FiguraGeometrica f = new Circulo();
f.calculaArea()
No entiendo qué significa "me dice no mejor la del círculo".

Cita:
Lo suyo como dice malenko seria:
public double calculaPrecio (FiguraGeometrica geom) {

return getPrecioM2()*geom.calculaArea();

}
¿Y qué tiene de distinto? A calculaPrecio le estás pasando una instancia de Círculo o Cuadrado, y la JVM decide si calculaArea() es la de Círculo o Cuadrado.

calculaPrecio en este caso es irrelevante.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.

Etiquetas: clase
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:51.