digresiones (era: Python vs Java C C++)

Chema Cortes py en ch3m4.org
Lun Mar 22 10:50:50 CET 2004


Hernan Foffani escribió:

> mis preguntas eran algo retoricas.  no me refería tanto
> al problema técnico en sí (que ya es bastante complejo) si no mas
> bien al hecho de mantener toda la aplicación en un estado estable.
> 
> por ej, puede darse el caso que la nueva clase C cambie un
> determinado atributo "coleccion" de list a dict. todas las
> instancias de C deberían recrear el atributo "coleccion" como dict
> con el contenido de las list anteriores.
> o si la nueva clase Cuenta cambia el atributo "titular" de la
> clase Persona a la clase Cliente, todas las instancias de Persona
> que sean atributos de instancias de la clase Cuenta deben
> cambiar de clase a Cliente aún cuando tanto Cliente como Persona
> no se hayan modificado per se.

Me parece que no tienes enfocado correctamente el problema. Los 
atributos son referencias, sin importar el tipo de dato. Me da igual que 
titular sea una instancia de Cliente ó una instancia de Persona, puesto 
que ambas clases coinciden en estructura:

....
   def SetTitular(self,titular):
     self.titular=titular
   def GetNombre(self):
     return self.titular.nombre

Incluso daría igual el cambiar una lista por un diccionario:

   def __init__(self,coleccion):
     self.coleccion=coleccion
   def get(self,id_):
     return self.coleccion[id_]


Si está bien diseñado, bastaría con una actualización de los atributos. 
  Más problemáticos son los cambios en las reglas de negocio. Aún así se 
puede minimizar los problemas si se emplea un buen diseño multicapa 
("multi-tier"), de modo que los cambios en las reglas de negocio no 
influyan tanto en el resto de la aplicación.




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