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

Consejos de Yahoo! Grupos

¿Sabías que...?
Puedes añadir enlaces en tu web relacionados con tu grupo.

Mensajes

  Mensajes Ayuda
Avanzado
Una duda de análisis-diseño OO sobre Java   Lista de mensajes  
Responder | Reenviar Mensaje #2859 de 3174 |
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.



Sáb, 9 de Dic, 2006 7:39 pm

felipeoe
Sin conexión Sin conexión
Enviar mensaje Enviar mensaje

Reenviar Mensaje #2859 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