Re: [Python-es] Re: [Python-es]Re: [Python-es]Evolución dinámica de los objetos a diferentes clases

Ernesto Revilla aerd en retemail.es
Vie Ago 23 19:46:25 CEST 2002


> El Jue 22 Ago 2002 23:28, Ernesto Revilla escrigué:
> > Eso está claro, pero ¿qué pasa si una persona se convierte en cliente?
> > ¿Tengo que borrarlo de personas y crear una nueva instancia de cliente?
> > ¿Qué pasa si una persona es a la vez cliente y proveedor?  Ya conozco la
> > solución antigua: crear dos instancias, una como cliente y otra como
> > proveedor, pero la verdad es que no me gusta nada.
>

From: "Antoni Aloy López" <aloy en ctv.es>
> Se me ocurre que podríamos utilizar el concepto der rol, es decir, no
> considerar cliente o proveedor como una clase sino únicamente considerar
la
> clase persona con una propiedad llamada role que puede contener una lista
de
> los posibles casos de uso en los que puede encontrarse. Esto podría
> implementarse como un diccionario de objetos para poder interrogar mejor a
la
> clase persona.
> Tendría que desarrollarlo un poco más, pero tiene toda la pinta de poder
> funcionar...

Me gusta en general, ya que una persona es eso, una persona (una empresa tb
puede ser considerada una persona jurídica...). Lo que no queda muy claro,
cuándo usamos clases y cuándo usamos roles. Supon que 'aparece como cliente'
forma una asociación entre 'Persona' y 'Factura'. En general es correcto. El
problemas es que a un rol pueden asignarse datos adicionales, en caso del
'Cliente', las condiciones, por ejemplo, si tiene un descuento especial o si
se le aplica una determinada tarifa. Esto se llamaría 'CondicionesCliente'
que supongo habrá que modelarlo como una clase. Nuestro diseño también iba
en esta dirección, de hecho, en nuestro modelo actual (base de datos
relaciona con MS-Access) lo tenemos igual, con la excepción que reservamos
un 'slot' para cada uno de los roles que puede tener, por los datos
adicionales asociados al rol.

La segunda solución que comenté unos días antes tenía justamente la ventaja
que no hab´ñia que modificar las tablas al crear nuevas asociaciones, sino a
lo mejotr sólo crear tablas nuevas, un aspecto muy interesante.

Muchas gracias, pensaré sobre el tema de roles con sus datos adicionales y
sus posibles implementaciones.

Erny







Más información sobre la lista de distribución Python-es