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

Arreglo de INTERFACES; Podrian ayudarme, no entiendo

Estas en el tema de Arreglo de INTERFACES; Podrian ayudarme, no entiendo en el foro de Java en Foros del Web. Bueno vengo nuevamente a ustedes ahora con este detalle, veran, estoy aprendiendo por mi propia cuenta a programar en Java, no llevo mucho y recientemente ...
  #1 (permalink)  
Antiguo 26/10/2012, 16:56
 
Fecha de Ingreso: febrero-2012
Mensajes: 56
Antigüedad: 12 años, 2 meses
Puntos: 1
Arreglo de INTERFACES; Podrian ayudarme, no entiendo

Bueno vengo nuevamente a ustedes ahora con este detalle, veran, estoy aprendiendo por mi propia cuenta a programar en Java, no llevo mucho y recientemente empecé con las interfaces, pero hay una declaración que no entiendo muy bien, podria alguien decirme que significa? y explicarme detalladamente que es y para que sirve?

Según yo se de las clases abstract e Interface, no se pueden instanciar (crear objetos) pero la verdad no entiendo con que fin hacen esto, es obligatorio su uso?

Bueno, este ejemplo viene en mi libro y aca les dejo parte del codigo

Código Javascript:
Ver original
  1. public interface PorPagar
  2.  {
  3.  double obtenerMontoPago(); // calcula el pago; no hay implementación
  4.  } // fin de la interfaz PorPagar


Código Javascript:
Ver original
  1. public class Factura implements PorPagar
  2. {
  3. //... Declaración de variables
  4. //... Constructor y métodos
  5.  
  6. public double obtenerMontoPago()
  7.  {
  8.  return obtenerCantidad() * obtenerPrecioPorArticulo(); // calcula el costo total
  9.  }
  10.  
  11. }


Código Javascript:
Ver original
  1. public abstract class Empleado implements PorPagar
  2. {
  3. //... Declaración de variables
  4. //... Constructor y métodos
  5.  
  6. // Nota: Aquí no implementamos el método obtenerMontoPago de PorPagar, así
  7. // que esta clase debe declararse como abstract para evitar un error de
  8. // compilación.
  9. }


Código Javascript:
Ver original
  1. public class EmpleadoAsalariado extends Empleado
  2. {
  3. //... Declaración de variables
  4. //... Constructor y métodos
  5.  
  6. public double obtenerMontoPago()
  7.  {
  8.  return obtenerSalarioSemanal();
  9.  }



Cita:
public class PruebaInterfazPorPagar
{
public static void main( String args[] )
{
// crea arreglo PorPagar con cuatro elementos
PorPagar objetosPorPagar[] = new PorPagar[ 4 ];

// llena el arreglo con objetos que implementan la interfaz PorPagar
objetosPorPagar[ 0 ] = new Factura( "01234", "asiento", 2, 375.00 );
objetosPorPagar[ 1 ] = new Factura( "56789", "llanta", 4, 79.95 );
objetosPorPagar[ 2 ] =
new EmpleadoAsalariado( "John", "Smith", "111-11-1111", 800.00 );
objetosPorPagar[ 3 ] =
new EmpleadoAsalariado( "Lisa", "Barnes", "888-88-8888", 1200.00 );


System.out.println(
"Facturas y Empleados procesados en forma polimorfica:\n" );

// procesa en forma genérica cada elemento en el arreglo objetosPorPagar
for ( PorPagar porPagarActual : objetosPorPagar )
{
// imprime porPagarActual y su monto de pago apropiado
System.out.printf( "%s \n%s: $%,.2f\n\n",
porPagarActual.toString(),
"pago vencido", porPagarActual.obtenerMontoPago() );
} // fin de for
} // fin de main
}



¿¿¿Por que???

¿Que fin tiene un arreglo de Interfaces?

Necesito que me expliquen!!!

Estoy desesperado!!!
  #2 (permalink)  
Antiguo 26/10/2012, 22:28
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: Arreglo de INTERFACES; Podrian ayudarme, no entiendo

Pues es un ejemplo muy claro.

En el array estás metiendo Facturas y EmpleadoAsalariado. Si el array fuera de Facturas, no podrías meter EmpleadoAsalariado. Si el array fuera de EmpleadoAsalariado no podrías meter Facturas. Al ser un array de PorPagar, puedes meter Factura y EmpleadoAsalariado ya que ambas implementan la interfaz.

No, el uso de interfaces o clases abstractas no es obligatorio. Es simplemente una facilidad que te ofrece java para hacer cosas como esta, poder meter clases hijas donde se espera una padre, pudiendo mezclar así objetos de distinto tipo en un único array, o pasarlos a un método, o guardarlos en una variable, o lo que sea.

Que el método obtenerMontoPago() esté en la interfaz te permite en el bucle que tienes al final ir llamando a ese método dentro del array, en el que porPagarActual es del tipo interfaz y tiene el método. Si la interfaz no tuviera ese método, no podrías llamarlo así, aunque las clases hijas lo tengan.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 27/10/2012, 07:39
 
Fecha de Ingreso: febrero-2012
Mensajes: 56
Antigüedad: 12 años, 2 meses
Puntos: 1
Respuesta: Arreglo de INTERFACES; Podrian ayudarme, no entiendo

Bueno creo que me has ayudado mucho, y me queda un poco mas claro, pero tengo una lijera duda:

En la instruccion PorPagar objetosPorPagar[] = new PorPagar[ 4 ]; no se si se esta llamando al constructor de PorPagar o si solamente se define un arreglo de tamaño 4

supongo que ese fragmento no puede ser un "new Factura" o un "new EmpleadoAsalariado" porque en ese caso ya no podría meter del otro, cierto?
  #4 (permalink)  
Antiguo 27/10/2012, 07:51
 
Fecha de Ingreso: febrero-2012
Mensajes: 136
Antigüedad: 12 años, 2 meses
Puntos: 8
Respuesta: Arreglo de INTERFACES; Podrian ayudarme, no entiendo

SOlo estar delimitando el tamaño
  #5 (permalink)  
Antiguo 27/10/2012, 09:47
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: Arreglo de INTERFACES; Podrian ayudarme, no entiendo

Lo que comenta advKael, solo estas fijando el tamaño. Despues de esa llamada las cuatro posiciones del array son null.

Se bueno
__________________
Apuntes Java
Wiki de Programación

Etiquetas: interface, programa, structs, aplicaciones
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 06:20.