Ver Mensaje Individual
  #2 (permalink)  
Antiguo 15/01/2012, 14:40
Avatar de CapacProg
CapacProg
 
Fecha de Ingreso: marzo-2010
Ubicación: Lima - Perú
Mensajes: 324
Antigüedad: 14 años, 8 meses
Puntos: 71
Respuesta: Aclaracion concepto Interfaz

Cita:
Iniciado por AAlejandroR Ver Mensaje
Hola, he estado leyendo sobre la interfaz de JAva, y veo que no sirve para nada, creas una nueva clase con unos parametros y metodos, y luego en el main tienes que volver a copiar los metodos... entonces para que srive?

edito: otra duda, que no tiene que ver con esto, si creo 2 clases mas la del main, y en uno X tienede metodo Xx y en Y tiene de metodo Yy. En la clase X puedo utilizar el metodo Yy? y viceversa??
Para su primera pregunta, personalmente creo que no ha estado revisando la bibliografía correcta. Le pondré un ejemplo muy clásico, para tratar de explicar su aplicación.

Suponga que tiene una clase FiguraGeometrica, esta en la realidad no existe sino que es una abstracción ya que por figura geometrica podemos nombrar a un Cuadrado o a un Circulo por ejemplo; sin embargo esta clase nos sirve para agrupar a todas las figuras geométricas. Ahora si deseamos calcular el Perimetro de una figura geometrica notaremos que su implementación depende de la figura en cuestión ya que del Cuadrado es dado por cuatro veces la longitud de su lado, mientras que del Circulo es el doble de PI por el rádio. Ahora no hay problema cada Clase Cuadro y Circulo podría implementar su propio método para calcular el perímetro, pero al ser este un método común para toda figura geométrica, debería estar presente en la clase FiguraGeometrica. Desde ese punto de vista es necesario que FiguraGeometrica sea una Interfaz, o como otros le dicen una clase abstracta pura ya que no implementa ningún método. La codificacíon se realiza en las clases que implementan la interfaz. Lo mismo sería si desea calcular el Area u otras cosas más propias de las figuras geométricas.

Para que quede claro le pongo los códigos descritos.

Código Java:
Ver original
  1. public interface FiguraGeometrica {
  2.     public double Perimetro();
  3. }
  4.  
  5.  
  6. public class Cuadrado implements FiguraGeometrica{
  7.  
  8.     private double lado;
  9.  
  10.     public double getLado() {
  11.         return lado;
  12.     }
  13.  
  14.     public void setLado(double lado) {
  15.         this.lado = lado;
  16.     }
  17.    
  18.     @Override
  19.     public double Perimetro() {
  20.         return 4*this.lado;
  21.     }
  22.    
  23. }
  24.  
  25. public class Circulo implements FiguraGeometrica{
  26.     private double radio;
  27.  
  28.     public double getRadio() {
  29.         return radio;
  30.     }
  31.  
  32.     public void setRadio(double radio) {
  33.         this.radio = radio;
  34.     }
  35.  
  36.     @Override
  37.     public double Perimetro() {
  38.         return 2*Math.PI*this.radio;
  39.     }  
  40.    
  41. }


Para su segunda pregunta, una clase puede usar un método de una clase al tener una instanciarla de esta a menos que el método sea estático.

Espero que le sirva sino pregunte y revise la documentación, abundante en la red.
__________________
%
El mejor guerrero no es el que triunfa siempre sino el que vuelve sin miedo a la batalla.
%

Última edición por CapacProg; 15/01/2012 a las 14:47