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

ayuda con interface

Estas en el tema de ayuda con interface en el foro de Java en Foros del Web. alguien sabe para q se rea interface,no hablo de interfaz de usuario,sino interface lei varios tutoriales y todavia no le entiendo ,no encuentro su importancia ...
  #1 (permalink)  
Antiguo 26/02/2007, 10:33
Avatar de Farookh_Bulsara  
Fecha de Ingreso: mayo-2004
Mensajes: 1.185
Antigüedad: 20 años
Puntos: 2
ayuda con interface

alguien sabe para q se rea interface,no hablo de interfaz de usuario,sino interface
lei varios tutoriales y todavia no le entiendo ,no encuentro su importancia o su motivo de crear,porfavor
__________________
"Todas las cosas deben mostrarse primero con mascaras tetricas y terrorificas para que puedan inscribirse a si mismas en el corazon de la humanidad"
  #2 (permalink)  
Antiguo 26/02/2007, 10:55
 
Fecha de Ingreso: febrero-2007
Mensajes: 4
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: ayuda con interface

Mira ese enlace ahi esta definido lo que es interface y tiene unos ejemplos bastantes sencillos para que comprendas su utilidad

sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/herencia/interfaces.htm
  #3 (permalink)  
Antiguo 26/02/2007, 12:40
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Re: ayuda con interface

Hola:

Una interface básicamente te sirver para aislar unas clases de otras. Por ejemplo, si la clase A ve a la clase B y la clase B ve a la clase C, de alguna manera A necesita a C para funcionar.

Sin embargo, si la clase A ve a una interface b, la clase B implementa b y B necesita a C, la clase A no necesita ni a B ni a C, sólo la interface. Es más fácil llevarse a otro proyecto sólo la clase A y la interface b que llevarse las tres clases A,B y C.

Las interfaces tienen mucho sentido cuando haces librerías o cuando estás haciendo programas que se parecen mucho unos a otros y quieres reaprovechar clases sin tener que traerte el programa anterior completo.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #4 (permalink)  
Antiguo 26/02/2007, 15:34
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: ayuda con interface

Ummm, la idea básica de una interfaz no suele explicarse así directamente, aunque esa característica venga como "extra", al menos por la gente que hizo el lenguaje.

En principio, una interfaz sirve para definir un "contrato", una serie de reglas a cumplir, de forma que el resto de clases que acceden a la que implementa una interfaz, tengan la garantía de que cumple ese contrato (en forma de metodos a implementar).

Eso nos permite realizar programas que tratan con clases a través de la interfaz sin saber exactamente cual es la implementacion que hay debajo, pudiendose decidir incluso en tiempo de ejecución.

Se usan, por ejemplo, para independizar el API de una clase de su implementacion; para manipular varias clases que tienen una serie de métodos en común sin tener que tratarlas una a una, etc.

http://java.sun.com/docs/books/tutor...interface.html
http://java.sun.com/docs/books/tutor...interface.html
  #5 (permalink)  
Antiguo 26/02/2007, 17:39
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 18 años, 3 meses
Puntos: 3
Re: ayuda con interface

Asi como dice GreenEyed, una inteface es una serie de reglas que las clases deben de implementar o ya por lo menos definirlas aunque no hagan algo..
Por ejemplo, tu tienes tu clase de Transporte y por logica debe tener los siguientes metodos basicos:
-arrancar
-avanzar
-frenar
etc.
Transporte:
Código PHP:
interface Transporte {
    public 
void arranca();
    public 
void frenar();
    public 
void avanzar();

(en las interfaces solo declaras los metodos, no llevan implementacion)
Entonces si tu tienes clases de transportes, y particularmente ahora tienes que programar la de "motocicleta", pues implementas la clase Transporte para que tengas los metodos basicos de arrancar,avanzar,frenar,etc.
Código PHP:
public class  Motocicleta implements  Transporte{
public 
void arrancar(){
 ....
}

public 
void avanzar(){
 ....
}
public 
void frenar(){
 ....
}




Las interfaces se usan para un mejor diseño.
Un saludo.
__________________
-URL= Go PHP5.
-Age=22.
-Learning=PHP,J2EE,Struts,MAMBO,C++,JSON,AJAX,XHTML ,CSS.

Última edición por B**; 26/02/2007 a las 17:48
  #6 (permalink)  
Antiguo 26/02/2007, 18:14
Avatar de Farookh_Bulsara  
Fecha de Ingreso: mayo-2004
Mensajes: 1.185
Antigüedad: 20 años
Puntos: 2
Re: ayuda con interface

pero no le encuentro el sentido, sin mucho lio la clase motocicleta tiene los metodos arrancar,frenar,avanzar ,pero q tiene q ver la interface transporte? no hace nada,no afecta en nada,la verdad no le encuentro el sentido
__________________
"Todas las cosas deben mostrarse primero con mascaras tetricas y terrorificas para que puedan inscribirse a si mismas en el corazon de la humanidad"
  #7 (permalink)  
Antiguo 26/02/2007, 18:22
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 18 años, 3 meses
Puntos: 3
Re: ayuda con interface

Todo es para un mejor disenio y que no haya errores en tu codigo, ya que no puedes hacer una motocicleta sin frenar, no?,entonces si tu no pusieras el metodo frenar, te marcaria error por que no estas implementando el metodo de la interface Transporte.
Espero haberme explicado.
__________________
-URL= Go PHP5.
-Age=22.
-Learning=PHP,J2EE,Struts,MAMBO,C++,JSON,AJAX,XHTML ,CSS.
  #8 (permalink)  
Antiguo 26/02/2007, 22:23
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Re: ayuda con interface

Hola:

La teoría está muy bien, pero al final la interface sirve para lo que comenté, para aislar unas clases de otras, haciendo que se vean a través de interfaces y no directamente y evitar además dependencias indirectas.

Lo del contrato es cierto, lo de diseño más elegante es cierto, pero no explican la utilidad práctica.

Un ejemplo práctico. Al JButton se le pasa un Action que es una interface. Esto permite que el JButton pueda hacer cualquier cosa que nosotros queramos siendo el JButton totalmente independiente de nuestro código. Por ello, el JButton puede existir ya compilado en una librería estándar de java y no necesitamos modificarlo y recompilarlo cada vez que queramos que haga algo distinto.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #9 (permalink)  
Antiguo 26/02/2007, 22:51
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 9 meses
Puntos: 24
Re: ayuda con interface

Es simple, la interfaz sirve para definir que es lo que puede hacer una clase.
La cual luego la clase implementa ese comportamiento, o dicho de manera mas coloquial "dice como se hace lo que la interfaz anuncia que puede hacer".

Es medio enroscado, pero es verdad
  #10 (permalink)  
Antiguo 27/02/2007, 01:12
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: ayuda con interface

Cita:
Iniciado por chuidiang Ver Mensaje
La teoría está muy bien, pero al final la interface sirve para lo que comenté, para aislar unas clases de otras, haciendo que se vean a través de interfaces y no directamente y evitar además dependencias indirectas.

Lo del contrato es cierto, lo de diseño más elegante es cierto, pero no explican la utilidad práctica.
No es lo mismo una definición que el uso que se le da a algo, aunque esté bien saber las dos cosas. Una interfaz te define una serie de métodos que una clase no-abstracta debe implementar obligatoriamente. A partir de eso, tu puedes usar los objetos de esa clase a través de la interfaz, llamando esos metodos que estás seguro de que existen, sin necesitar saber que clase hay por debajo.

Siguiendo el ejemplo, tu puedes hacer un programa que controle el tráfico trabajando con los metodos de la interfaz Transporte, y luego aplicar ese programa a Moto, Automovil, Camion... por que todos implementan esa interfaz. Si no usas la interfaz, tienes que tratar cada caso en particular haciendo if y cast.

Para ejemplo "diario" de interfaces que todo el mundo usa en sus programas, toda la libreria de Collection (Map, List, Tree, Iterator...) esta basada en el uso de interfaces (y clases abstractas en algun caso).
  #11 (permalink)  
Antiguo 27/02/2007, 11:54
Avatar de Farookh_Bulsara  
Fecha de Ingreso: mayo-2004
Mensajes: 1.185
Antigüedad: 20 años
Puntos: 2
Re: ayuda con interface

oisea crear una interfaz sirve para nombrar metodos (no implementados) y una clase puede implementar esa interfaz con el unico fin de que no se olvide implementar los metodos q se encuentran en la interfaz,es correcto lo q digo?

pero hay algunas interfaz en la documentacion de java q tienen metodos ya implementados, osea al implementar esa interfaz en una clase ,ya no es necesario implementar esos metodos q ya estan implementados en la interfaz y los q no estan implementados en la interfaz hay q implementarlos, vi varias interfaz q son asi,porque?se puede hacer una interfaz con algunos metodos implementados y otros ,no ,con que fin?
__________________
"Todas las cosas deben mostrarse primero con mascaras tetricas y terrorificas para que puedan inscribirse a si mismas en el corazon de la humanidad"
  #12 (permalink)  
Antiguo 27/02/2007, 13:19
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 9 meses
Puntos: 24
Re: ayuda con interface

Cita:
Iniciado por Farookh_Bulsara Ver Mensaje
oisea crear una interfaz sirve para nombrar metodos (no implementados) y una clase puede implementar esa interfaz con el unico fin de que no se olvide implementar los metodos q se encuentran en la interfaz,es correcto lo q digo?

pero hay algunas interfaz en la documentacion de java q tienen metodos ya implementados, osea al implementar esa interfaz en una clase ,ya no es necesario implementar esos metodos q ya estan implementados en la interfaz y los q no estan implementados en la interfaz hay q implementarlos, vi varias interfaz q son asi,porque?se puede hacer una interfaz con algunos metodos implementados y otros ,no ,con que fin?
Si encuentras una interfaz con métodos ya implementados, entonces no es una interfaz, es una clase abstracta.

Por definición una clase abstracta puede tener métodos sin implementación (también llamados métodos abstractos).

Por definición, una interface en Java, tiene todos métodos abstractos y atributos constantes.

Saludos
  #13 (permalink)  
Antiguo 27/02/2007, 15:01
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: ayuda con interface

Cita:
Iniciado por Farookh_Bulsara Ver Mensaje
oisea crear una interfaz sirve para nombrar metodos (no implementados) y una clase puede implementar esa interfaz con el unico fin de que no se olvide implementar los metodos q se encuentran en la interfaz,es correcto lo q digo?
No es "sólo" que no se olvide de implementarlos, es que así el compilador puede tratarlo como si tuviera esos métodos y te permite hacer programas sin saber exactamente con que clase tratas. La unica informacion que tienes es que cumplen una serie de reglas (implementan una interfaz) y eso te permite hacer lo que comentaba chuidiang, entre otras cosas.

Cita:
Iniciado por Farookh_Bulsara Ver Mensaje
pero hay algunas interfaz en la documentacion de java q tienen metodos ya implementados, osea al implementar esa interfaz en una clase ,ya no es necesario implementar esos metodos q ya estan implementados en la interfaz y los q no estan implementados en la interfaz hay q implementarlos, vi varias interfaz q son asi,porque?se puede hacer una interfaz con algunos metodos implementados y otros ,no ,con que fin?
Como bien dice Tolaware, eso no son interfaces sino clases abstractas y son clases que no se pueden instanciar por que pueden tener algun metodo abstracto (solo declarado pero sin implementacion). La diferencia tambien es que una interfaz se implementa, y puedes implementar multiples interfaces, pero una clase abstracta se extiende, por lo que solo puedes extender una.

Se usan, por ejemplo, cuando quieres que te pasen una clase que cumpla una serie de reglas y que además tenga unas rutinas implementadas que tu ya sabes cuales son. A veces tambien se usan cuando no quieres que una clase sea instanciable, y solo lo sean sus hijas.
No se usan tan habitualmente como las interfaces puesto que el problema de tener que heredar de ellas limita un poco lo que se puede hacer, pero a veces se usan.
  #14 (permalink)  
Antiguo 27/02/2007, 15:43
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Re: ayuda con interface

Hola:

Uno de los motivos que yo creo es más habitual para las clases abstractas es el implementar los métodos más engorrosos de una interface, dejando unos pocos pendientes de implementación.

Por ejemplo, TableModel es una interface que tiene métodos para obtener datos para un JTable y también métodos para implementar un mecanismo de suscripción. Como implementar todos los métodos es algo engorroso y posiblemente los métodos de suscripción en un 99% de las clases hijas se implementarían igual, la clase AbstractTableModel implementa ya todo ese mecanismo de suscripción, pero deja sin rellenar los métodos de obtención de datos, que posiblemente son los que el programador realmente tiene interés en definir.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
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:49.