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

Herencia, y duda de intancia.

Estas en el tema de Herencia, y duda de intancia. en el foro de Java en Foros del Web. Hola!, me estoy trayendo datos de la Base de Datos, y antes de guardarlos en un ArrayList tengo que instanciarlos, tengo el caso de las ...
  #1 (permalink)  
Antiguo 15/08/2008, 16:53
 
Fecha de Ingreso: octubre-2006
Mensajes: 96
Antigüedad: 17 años, 6 meses
Puntos: 0
Sonrisa Herencia, y duda de intancia.

Hola!, me estoy trayendo datos de la Base de Datos, y antes de guardarlos en un ArrayList tengo que instanciarlos, tengo el caso de las tarifas que tienen un tipo,
Tarifa tiene un atributo 'TipoTarifa' (q es una clase abstracta) y de alli heredan todas las clases "tipo de tarifas" que tienen diferentes caclulos de costos.

como hago de manera genérica la instancia de cada tipo de tarifas antes de agregarlas a un ArrayList? si no sé de que tipo es cada una a la hora de traerlas de la base?


O capaz que deberia implementar el modelo de diferente manera?
Es muy importante cualquier ayuda que puedan darme.

Gracias
  #2 (permalink)  
Antiguo 16/08/2008, 01:04
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Herencia, y duda de intancia.

Hola:

En base de datos debería estar guardado en algún campo el tipo de tarifa y en función de eso podrías hacer la instancia adecuada. Si no guardas el tipo de tarifa en algún sitio ¿cómo decides qué tipo de tarifa instanciar?

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 16/08/2008, 03:55
 
Fecha de Ingreso: junio-2008
Mensajes: 168
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Herencia, y duda de intancia.

cierto chudiang!
Es como los usuarios, ejemplo: alumno, profesor tendras la tabla usuario en la BD donde estarán todos los usuarios y habra un atributo tipo(donde sera o profesor o alumno), y aparte tendrás las tablas profesor y alumno!
  #4 (permalink)  
Antiguo 16/08/2008, 07:52
 
Fecha de Ingreso: octubre-2006
Mensajes: 96
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: Herencia, y duda de intancia.

Hola!, eso ya lo sé, tengo en la base una tabla de Tarifas, la pregunta es, ¿como de manera generica cargo los datos y los instancio si no se de antemano cual son y no puedo instanciarlos como Tarifa porqeu es abtracto?

O sea tengo un ResultSet con las tarifas, los quiero guardar en un ArrayList de tarifas,

int porcentaje = rs.getInt("porcentaje"); // aqui tengo porcentaje
--
--

pero cuando quiero tener el tipo de Tarifa tendria que hacer algo asi

TipoTarifa tt = new TipoTarifa(); esto no lo puedo hacer porque TipoTarifa es abstracta (ya que los distintos tipos de tarifas heredan de ella), como se con que clases intanciarla de manera generica si depende de que tipo de tarifa traiga de la base?
tt.setNombre(rs.getString("nombretarifa")); esto no me deja hacerlo porque TipoTarifa (tt) no esta instanciado
  #5 (permalink)  
Antiguo 16/08/2008, 10:18
Avatar de diegoy2k  
Fecha de Ingreso: julio-2006
Ubicación: Algun Lugar
Mensajes: 68
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: Herencia, y duda de intancia.

Hola andrea55, como va?

A ver vamos por parte, espero poder aclararte algo.

El ArrayList contiene objetos del tipo Object, ahi podes meter lo que quieras, la cuestion es estoy trayendo datos desde la base y es ahi donde yo se que tipo son, por ejemplo tarifaTaxi o tarifaTren, (si bien no es buena politica usar sentencias condicionales " if", en Objetos a veces no queda otra alternativa que usarlas).
Entonces lo que podes hacer es, a medida que vas recuparando datos desde la base:
Código:
if(elDatoDeLaBase==tarifaTaxi){
  TipoTarifa tT=new TipoTarifaTaxi();
  tT.setValoruno...;
  tT.setValordos...;
  .
  .
  .
  ArrayList.add(tT) //aca va el nombre del ArrayList!!!
}
if(elDatoDeLaBase==tarifaTren){
  TipoTarifa tT=new TipoTarifaTaxi();
  tT.setValoruno...;
  tT.setValordos...;
  .
  .
  .
  ArrayList.add(tT) //aca va el nombre del ArrayList!!!
}
y asi con cada tipo, fijate que podrias hacer que ciartas cosas sean mas genericas
y no repetir tanto codigo.

Esto de poder guardar cualquier tipo de objeto dentro del ArrayList, es gracias a lo que se denomina "Polimorfismo".
Por otro lado el hecho de sacar objetos de un contenedor de object como ArrayList es posible debido a la caracteristica denominada "BindingDinamico", el cual vincula objetos en tiempo de ejecucion.

Lo que si te recominedo, en que tus clases inplementen la interface "Comparable", la cual te exige que implementes el metodo compareTo(Object), ya que de esta es una manera correcta de comparar objetos en una logica de negocios orientada a objetos.

Bueno espero ayudarte!!! Saludos!
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 19:19.