Metodología de objetos

21/11/2004 - 02:06 por José Manuel Nieto | Informe spam
Hola! Soy nuevo en el grupo.

Me gustaría saber cuál sería la manera metodológicamente correcta de
encargar a una clase la creación objetos de otra clase.

Por ejemplo, imaginad una clase Dibujo y otra clase LectorDeDibujos.

La clase LectorDeDibujos tiene como misión crear Dibujos a partir de
ficheros de disco, por ejemplo.

Resulta que el creador de dibujos debe acceder al núcleo de la clase
Dibujo para otorgar todas sus características. Por tanto, requiero un
mecanismo que, respetando la encapsulación, sea correcto para que una
clase MODELE a otra.

Muchas gracias de antemano.

Simplemente JMN

Preguntas similare

Leer las respuestas

#1 Diego Jancic
21/11/2004 - 05:51 | Informe spam
Creo que deberias, en el caso que diste vos, crear un objeto aparte llamado
Dibujo o Imagen, el cual se lo podrias pasar en el contructor o mediante un
metodo, por ejemplo, llamado CrearDibujo(Dibujo miDibujo)
#2 José Manuel Nieto
21/11/2004 - 12:37 | Informe spam
Diego Jancic wrote:
Mostrar la cita
Sí, es así como pensaba hacerlo. Pero se me presenta el siguiente problema.

He puesto a mi clase de nombre "Dibujo" para que entendiérais el
ejemplo. Ya que lo he puesto, seguiré con ese nombre:

Dibujo tiene una serie de variables privadas que lo caracterizan. Si
una clase es quien se encarga de crear los Dibujos mediante un método
CrearDibujo, esta clase creadora debe poder acceder a todos esos datos
internos del Dibujo. Pero según la metodología, un objeto no debe
ofrecer acceso a sus datos internos, sino que todos deben usar su
interfaz pública.

¿Cómo podría hacerlo? Sabiendo que para la creación de un Dibujo se
necesitan como datos imprescidibles:

ArrayList
int[ , ] (matriz bidimensional de enteros)
Size (ancho y alto)


Mi duda entonces es:
Si un objeto A necesita ser guardado al disco, y un objeto B se encarga
de realizar esa tarea... ¿qué de mecanismo debería usar B para acceder a
las variables internas de A?
#3 Fernando Marin
21/11/2004 - 14:00 | Informe spam
No puedes acceder directamente a los datos, pero si que puedes acceder
mediante metodos a las variables.

El lector de dibujos puede ser una clase que heredar de dibujo, ser un
metodo de dibujo o tener una variable interna que fuera un dibujo, tambien
puedes hacer que dibujo herede de una clase que tenga funciones de
serialización.

Bueno para no liarte mas, lo principal es que aunque no debes acceder
directamente a una variable si puedes acceder a ella mediante metodos o
funciones ejemplo.

Dibujo tiene entre otras dos carácteristicas:
int iAlto;
int iAncho;

No puedes acceder directamente a ellas, pero si mediante metodos como:
GetAlto()
SetAlto()

Luego si quieres ver el alto de un objeto dibujo..

CDibujo dijujo;

x=dibujo.GetAlto(); BIEN
dibujo.SetAlto(200); BIEN

en cambio no podrias acceder directamente

x=dibujo.iAlto; MAL
dibujo.iAlto 0; MAL


Fernando Marin

http:\\www.arrendamientos.biz


"José Manuel Nieto" escribió en el mensaje
news:
Mostrar la cita
#4 José Manuel Nieto
21/11/2004 - 16:51 | Informe spam
Fernando, muchas gracias por tu ayuda. Pero mi requisito es mucho más
exigente.

Es buena solución de lo que me hablas, el problema surge de que quiero
crear un sistema de guardado muy flexible y que al guardar el Dibujo
haya una clase a modo de ENCODER, es decir una clase que se encargue de
tomar los datos del dibujo y escribirlos en un formato determinado.

Lo mismo sería para extraer los datos de un formato determinado. Habría
una clase Decoder, que se encargaría de leer de un stream y formar un
Dibujo basándose en los datos leídos.

Me gustaría que la manera de guardar el Dibujo pudiese ser algo parecido a:

- Dibujo.Save(Stream stream, IDidujoEncoder encoder)

o bien:

- AlmacenajeDibujos.Save(Dibujo dibujo, IEncoderDibujo, Stream stream);



¿De qué manera podría lograrlo haciéndolo de acuerdo a un buen diseño?
Sobre todo hay que tener en cuenta que el IEncodeDibujo deberá COGER
datos internos del dibujo, imaginemos, sus píxeles y su profundidad de
color.

Si alguien me puede ayudar, le estaré muy agradecido.



Fernando Marin wrote:
Mostrar la cita
#5 ArvPart
25/11/2004 - 09:46 | Informe spam
José Manuel Nieto wrote:
Mostrar la cita
Si es la primera opcion, no hay problema, porque dibujo es capaz de ver
sus propios miembros internos, además de saber qué información es
precisa. Si escoges la segunda, deberás saltarte las normas de
encapsulación para poder hacerlo.
Echale un ojo a técnicas como serialización (quizá pueda ser una
solución) o reflexion. Esta última opcion es la que te permite saltarte
las reglas. Además de peligrosa, es bastante lenta.
ArvPart
Ads by Google
Search Busqueda sugerida