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

Pregunta sobre Objetos en la practica (sin codigo)

Estas en el tema de Pregunta sobre Objetos en la practica (sin codigo) en el foro de Programación General en Foros del Web. Aloha tengo una duda existencial sobre como trabajan otros programadores.... entiendo objetos y se programar (supuestamente, ya que trabajo de eso :P) pero siempre me ...
  #1 (permalink)  
Antiguo 30/09/2008, 08:30
 
Fecha de Ingreso: septiembre-2008
Mensajes: 2
Antigüedad: 16 años, 2 meses
Puntos: 0
Pregunta sobre Objetos en la practica (sin codigo)

Aloha
tengo una duda existencial sobre como trabajan otros programadores....
entiendo objetos y se programar (supuestamente, ya que trabajo de eso :P)
pero siempre me surje el mismo problema con el tema de objetos...
se supone que yo tengo que definir todas las entidades (clientes, productos, etc) en el proyecto, o sea las clases
y al momento de utilizarlas casi siempre son 2 situaciones: formularios y listas (por lo menos en mi caso)
por ejemplo, al hacer alta de un cliente/producto nuevo... hago una funcion que cree un nuevo objeto del tipo Cliente o Producto y lo rellene con los datos obtenidos de un formulario presentado al usuario y luego lo inserto en la base de datos... hasta ahi todo bien...
mi duda surje en el momento de hacer listas, por ejemplo tengo un formulario para el ingreso de una cotización en el cual hay (como ejemplo) un ComboBox (una caja con lista que se utiliza en VisualBasic, que tiene para hacer busqueda, etc), dentro del cual yo cargo la lista de los productos y ahi el usuario seleccionará el que necesite.... pero.... para rellenar esa lista yo pido la lista de los productos desde la base de datos.... y creo que seria poco práctico crear un objeto por cada producto que agrego a la lista....
ok, en algunas listas puedo utilizar alguna clase tipo "Nombre / Valor", y asi pongo la descripcion del producto en el nombre y su código en el Valor, pero en otros casos necesito un par de datos mas acerca del producto... por ejemplo: a parte de la descripcion en el caso de Tango utiliza un campo llamado Sinónimo el cual desearia mostrarselo al usuario o bien algun otro campo como precio, disponibilidad, stock, etc.... pero solo un par ponele, cosa que no justifica pedir TODOS los datos acerca del producto....
entonces.... cual seria la solución mas correcta a esto???

1- pedir TODOS los datos de TODOs los productos y crear un objeto para cada uno y asi tener disponible toda la informacion?
2- guardar el codigo nada mas, y cuando se seleccione pedir el producto completo y crear el objeto?
3- utilizar la misma clase de producto y crear el objeto por cada uno de los productos en la lista pero rellenar solo los campos que voy a necesitar?
4- hacer una clase "reducida" para la entidad producto que tenga solamente los campos que necesito y tambien crear una por cada item de la lista?

Como para que se entienda mejor , en caso de no entenderse, pongo otro ejemplo donde tengo el mismo problema....
en la pantalla principal del soft hay una seccion donde se puede ver la lista de los usuarios del sistema (o podria ser de los clientes por ejemplo, da igual).... entonces el operador al hacer click derecho sobre algun item (cliente o usuario) le sale un menú contextual donde una opcion es "Habilitar" o "Deshabilitar" a ese usuario o cliente... yo quisiera que si usuario o cliente ya se encuentra habilitado que la opcion "Habilitar" desaparezca por ejemplo.... entonces... para eso yo deberia saber de cada item: descripcion, codigo, estado
ya son 3 campos por lo tanto no puedo utilizar el tipico "nombre/valor" y estoy con la duda de mas arriba

Bueno, perdon si se me hizo un poco largo, pero quiero que se entienda bien cual es el problema que tengo.
Y espero recibir respuestas tanto de "como se deberia hacer" y como lo hacen ustedes....
gracias de antemano
  #2 (permalink)  
Antiguo 30/09/2008, 10:14
 
Fecha de Ingreso: noviembre-2003
Ubicación: Mexico
Mensajes: 1.081
Antigüedad: 21 años
Puntos: 7
Respuesta: Pregunta sobre Objetos en la practica (sin codigo)

no estoy muy familiarizado con ese tipo de problemas, pero si con el uso de POO.

Si tu aplicacion no va a ser muy larga (miles y miles de lineas de codigo), y no le va a estar metiendo mano mucha gente, y ademas no piensas reutilizar la base de tu aplicacion para otros, creo que la mejor solucion, es crear una lista con todos los campos posibles, y los que no se ocupen, los dejas vacios (sin causar una referencia nula). Es decir, la solucion mas simple.


Ahora, que si es de esos proyectos grandes y a largo plazo, vale la pena hacer un buen diseño de objetos.
Puedes utilizar el polimorfismo e implementar interfaces. Asi, dependieno del tipo de objeto que le pases al programa, es lo que va a realizar.

Recuerda que lo importante, es tener productivdad al momento de hacer tu aplicacion, y poder mantenerla "facilmente" (y logicamente, que tu aplicacion haga bien lo que tiene que hacer). Si una lista con varios campos es la mejor solucion para alcanzar eso que dije, hazla! No importa que otros se burlen de tu "pobre" codificacion.
  #3 (permalink)  
Antiguo 02/10/2008, 20:27
 
Fecha de Ingreso: abril-2008
Mensajes: 264
Antigüedad: 16 años, 7 meses
Puntos: 2
Respuesta: Pregunta sobre Objetos en la practica (sin codigo)

Quizás mi postura sea un poco rígida, pero a mi me gusta tener el objeto entero.

Lo que no se es si lo que tu llamas objeto es lo que yo llamo objeto... Mucha gente habla como tu de objetos como entidades con datos. Los objetos tienen la gracia de encapsular datos + comportamiento en una sola unidad.

Bueno, sabiendo como lo interpreto yo, paso a decir.

Tener el objeto en un combo da la posibilidad de hacer cosas como la siguiente:

- Hiciste una sola consulta a la base de datos para traerte los objetos. (si solo te traias nombre + ID tenias que volver a consultar).
- puedes "bindear" los campos donde mostrarás los datos del objeto con el selected del combo.
- tercero y lo más importante: puedes mandarle mensajes (o invocar sus métodos, como más te guste decirlo)!

Otra cosa que te da es que puedes mostrar datos calculados (por ejemplo el estado de un objeto a partir de la fecha, con la fecha alcanza y sobra).
Puedes tener validaciones en el objeto para casos especiales...

Y por ahora no se me ocurren más.
__________________
Saludoss
Guille
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 23:30.