Entrar
¿Usuario nuevo? Regístrate
imasd
? ¿Ya estás suscrito? Entrar en Yahoo!

Consejos de Yahoo! Grupos

¿Sabías que...?
Puedes determinar el orden de los mensajes. Pulsa el enlace en la columna correspondiente a la fecha. Tus preferencias serán guardadas y no tendrás que introducirlas de nuevo.

Mensajes

  Mensajes Ayuda
Avanzado
Una duda de análisis-diseño OO sobre Java   Lista de mensajes  
Responder | Reenviar Mensaje #2865 de 3174 |
Re: [imasd] Una duda de análisis-diseño OO sobre Java

Para que te hagas una idea, tengo una especie de tienda virtual que puede
vender productos de cualquier tipo. Para vender un producto solo se
necesitan dos cosas:

1. Crear un codigo de producto nuevo en la base de datos
2. Asociar dicho producto a una clase que se encarga de "tratarlo". Una
misma clase puede gestionar multiples productos. Añadir nuevas clases es
tan sencillo como compilarlas y dejarlas en un directorio.

¿Como se cargan? Asi:

ProductosBase pbase = ProductosBase.GetProduct("1234");
pbase.generarformulario();
....
....
pbase.procesarformulario();
pbase.insertar();

El método GetProducto(codproducto) busca en una tabla de la base de datos
la clase que hay que crear (que debe descender de ProductosBase), y
devuelve un objeto del tipo adecuado. El codigo seria mas o menos este (lo
siento, es "cuasi" c#, no uso java):

function ProductosBase GetProducto(string codproducto){
string clase = ObtenerClaseDeBBDD(codproducto);
return (ProductosBase)Activator.CreateInstance(clase);
}



> Hola gente,
>
> Pues aunque no me prodigo mucho escribiendo al foro
> ultimamente, pero ahí sigo leyendo (casi) todo lo que
> escribís...
>
> Bueno, ando con una duda de análisis-diseño OO sobre
> J2SE 1.4.2 (si ya se que anda la 1.5.0 desde hace
> algún tiempo, y que la 1.6.0 está ya a la vuelta de la
> esquina..pero eso no viene al cuento) a ver de las
> mentes pensantes que sepan más que yo quien me puede
> echar una mano. La situación es como sigue:
>
> Tengo una unidad de algo que declaro como abstracto y
> que encapsula todo lo común a los diferentes tipos de
> unidades concretas que puedo encontrar. A día de hoy
> conozco en torno a unas 20-25 tipos de unidad
> concretas, pero no estoy seguro que en el futuro
> puedan aparecer otras, así que quiero dejar la puerta
> abierta. Hasta aquí sin problemas ya que para crear
> nuevas, simplemente heredo una nueva subclase concreta
> de mi superclase Unidad.
>
> El punto es que para averiguar el subtipo concreto no
> me quedaría de otra que usar el getClass(). No soy muy
> amigo de usar ese método por ciertas razones, así que
> empiezo a pensar y se me ocurre que podría tener un
> campo tipoUnidad, de tipo int y tener una serie de
> constantes (final) que identificasen de forma concreta
> a las subclases:
>
> Ej:
> public static final int UNIDAD_CONCRETA_A=1;
> public static final int UNIDAD_CONCRETA_B=2;
> ...
>
> Y aquí viene el problema; Si estas constantes las
> pongo en la superclase no me quedará de otra que
> violar el encapsulamiento si eventualmente aparecen
> nuevas clases concretas. Pero si decido bajarlo a las
> subclases y que cada subclase defina su constante
> resulta que no puedo asegurar que cada subclase elija
> un valor distinto a las otras ya que las subclases no
> necesariamente se conocen entre si...amén de que no
> tendría todas las constantes en la misma clase y eso
> supone un problema a la hora de usarlas...
>
> A alguien se le ocurre algo más, que no sea el ya
> mencionado uso de getClass()? Algún patrón de diseño
> por ahí que haga esto?
>
> En fin, cualquier sugerencia será bienvenida...sino,
> me temo que tenré que usar el getClass() "manque" me
> pese...
>
> Saludos,
>
> Felipe
>
>
>
>
________________________________________________________________________________\
____
> Any questions? Get answers on any topic at www.Answers.yahoo.com. Try it
> now.
>




Mié, 13 de Dic, 2006 10:04 pm

pirrimanson2000
Sin conexión Sin conexión
Enviar mensaje Enviar mensaje

Reenviar Mensaje #2865 de 3174 |
Desplegar mensajes Autor Ordenar por fecha

Hola gente, Pues aunque no me prodigo mucho escribiendo al foro ultimamente, pero ahí sigo leyendo (casi) todo lo que escribís... Bueno, ando con una duda de...
Felipe
felipeoe
Sin conexión Enviar mensaje
9 de Dic, 2006
9:30 pm

Pues ni idea, pero a mí también me gustaría conocer la respuesta, pues éste es un problema que me ha surgido en alguna ocasión. Un saludo....
Carlos Grima
carlisgrima
Sin conexión Enviar mensaje
11 de Dic, 2006
8:44 am

... pues éste ... Buenas. A lo mejor digo una tontería, o quizás no he comprendido bien el problema, pero a priori yo tendría un método en la clase base ...
Diego Freniche
dfreniche
Sin conexión Enviar mensaje
11 de Dic, 2006
9:25 am

Buenas. A lo mejor digo una tontería, o quizás no he comprendido bien el problema, pero a priori yo tendría un método en la clase base abstracta que se...
Diego Freniche
dfreniche
Sin conexión Enviar mensaje
11 de Dic, 2006
9:30 am

Hola Diego: Pero lo malo es que de este modo que propones creo que seguiríamos teniendo el problema que Felipe comentaba: "no puedo asegurar que cada subclase...
Carlos Grima
carlisgrima
Sin conexión Enviar mensaje
11 de Dic, 2006
11:27 am

Festivamente... Hmmm esto se pone interesante... Carlos, Cuando dices que a ti también te ha surgido algo similar, ¿Cúal fue tu decisión? Incluso aun ...
Felipe
felipeoe
Sin conexión Enviar mensaje
11 de Dic, 2006
5:29 pm

Hola Felipe: Para este problema yo siempre he usado la solución de Freniche: crear un método abstracto en la padre que devuelva de algún modo el tipo de...
Carlos Grima
carlisgrima
Sin conexión Enviar mensaje
14 de Dic, 2006
3:29 pm

Para que te hagas una idea, tengo una especie de tienda virtual que puede vender productos de cualquier tipo. Para vender un producto solo se necesitan dos...
pkdor
pirrimanson2000
Sin conexión Enviar mensaje
13 de Dic, 2006
10:07 pm

Buenas! No he contestado antes porque el mensaje estaba en la carpeta de spam. Si las clases hijas (concreatas) se limitan a implementar los métodos ...
pkdor
pirrimanson2000
Sin conexión Enviar mensaje
14 de Dic, 2006
12:16 am

Desafortunadamente, la premisa de que las clases hijas no añadan nuevos no se cumple para todas las subclases... ... ...
Felipe
felipeoe
Sin conexión Enviar mensaje
14 de Dic, 2006
4:47 am

Bueno, las clases hijas pueden tener nuevos metodos si lo deseas, sólo que no vas a poder usarlos sin saber previamente el tipo concreto :D. Esos nuevos...
pkdor
pirrimanson2000
Sin conexión Enviar mensaje
14 de Dic, 2006
10:24 am

Eso de combinar la Fabrica Abstracta con el uso de interfaces suena mas que razonable. Como bien dices aun tendre que usar el getClass() previo al uso de los...
Felipe
felipeoe
Sin conexión Enviar mensaje
14 de Dic, 2006
5:36 pm

siendo puristas, se trata de un fabrica simplificado. Mas info, con ejemplos y dibujitos en: ...
pkdor
pirrimanson2000
Sin conexión Enviar mensaje
15 de Dic, 2006
5:06 pm
Avanzado

Copyright © 2009 Yahoo! Todos los derechos reservados.
Política de Privacidad Actualizada - Condiciones del servicio - Directrices - Ayuda