Re: ¿Alguien tiene ejemplos de programas POO?

Mario Lacunza mlacunza en gmail.com
Jue Nov 30 05:09:03 CET 2006


Hola,

Solo para agregar un par de links q me parecen de sumo interes para todos:

http://pythonmexico.org/index_html/doc/PatronesDiseno
Con la traduccion del articulo donde se explica el Singleton basado en
Python.

http://www.mygnet.com/publicaciones/
Excelente libro gratuito sobre OOP.



2006/11/29, Chema Cortes <pych3m4 en gmail.com>:
>
> El 2006/11/30, Jesus Rodriguez <foxandxss en gmail.com> escribió:
>
> > Estoy aprendiendo la POO pero aún me cuesta diseñar los programas.
> >
> > Me gustaría que me explicaseis que debería de hacer desde que leo el
> > enunciado de un problema hasta que todo está bien.
> >
> > Soy autodidacta, así que me resulta todo un poco más complejo.
> >
> > Hoy hice un programa básico.
> >
> >....
>
> Por lo que comentas, parecería que estés aplicando algún tipo de
> "metodología ágil" (quédate con ese término).
>
> En principio, lo estabas llevando bastante bien. Tu aplicación iba
> adaptándose a los nuevos requerimientos e iba logrando soluciones
> intermedias que te ofrecían una mejor idea de cómo sería tu diseño.
> LLegado a este extremo tienes dos alternativas: 1) refactorizar tú
> código utilizando alguna utilidad apropiada ó 2) desechar todo lo que
> has codificado y empezar desde cero partiendo del nuevo diseño.
>
> Por "refactorización" se debe entender como el cambio del diseño sin
> cambio de funcionalidad. Son, por ejemplo, las típicas decisiones de
> si es mejor especializar o generalizar una clase. En tu caso has
> decidido empezar creando la clase Cliente. Puede que luego, puede que
> necesites crear la clase Cajero y pienses que sería mejor crear una
> superclase llamada Persona que sirviera de base tanto a Cliente como a
> Cajero. Con esta nueva jerarquía, quieres pasar varios métodos de
> Cliente a la clase Persona, lo que te obligaría a alterar buena parte
> del código. Para esta labor de refactorización hay algunas
> herramientas como "bycycle repair man" o las que lleva integradas
> eclipse+pydev.
>
> En cuanto a ejemplos, lo que estás buscando son "patrones de diseño"
> (quédate también con ese término). En el mensaje de Juan Carlos habrás
> visto que nombra el patrón "Facade", e incluso nombra el modelo de
> tres capas. Los patrones de diseño son éso, patrones que han surgido
> de la experiencia de los programadores más veteranos y que se han
> comprobado que funcionan bastante bien. No son la panacea de la
> programación, pero al menos permiten hacerte una muy buena idea de las
> técnicas que aplican otros programadores y que, además, se usan como
> nomenclatura a la hora de explicar diseños de aplicaciones.
>
> Sobre los patrones de diseño, la mayor parte de la documentación está
> para java y, muchas veces, no tienen tanta efectividad en python como
> sería de esperar. En python se prefiere hablar de "modismos"
> ("idioms") como la forma más "pythónica" de codificar, entre los que
> se encuentran conceptos tales como descriptores, metaclases,
> generadores, decoradores, ... que nos daría nuestra propia
> "nomenclatura". Para estos modismos, te recomiendo una visita a
> www.cafepy.com
>
>
> LLegado aquí, y volviendo a tu pregunta, es complicado indicarte algo
> para que sigas aprendiendo. Por el ejemplo que estás realizando, tal
> vez deberías revisar el patrón MVC (Modelo Vista Controlador) o, como
> algo más complejo, el modelo de tres capas
> (Presentation-Business-Data).
>
>
> > También agradecería si alguno puede no sé, decirme algun ejemplo para
> > practicar, no sé, algun programa de este estilo en el que tenga que
> diseñar
> > varias clases que se relacionen entre si y que penseis que no sea muy
> > dificil de diseñar (tampoco voy a diseñar un SO desde el principio :P)
>
> Los típicos programas de este tipo suelen ser implementaciones de un
> servicio de préstamos (videoclub, biblioteca, etc) en los que se tiene
> en cuenta tareas tales como la disponibilidad del producto, fechas de
> devolución, penalizaciones por no devolución, etc. Seguro que álguien
> puede darte un enunciado completo del problema.
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
>



-- 
Saludos / Best regards

Mario Lacunza
Desarrollador de Sistemas - Webmaster
Desarrollador 2 Estrellas  VS2005

Email: mlacunza [AT] gmail [DOT] com
Website: mlacunzav[DOT]cogia[DOT]net
Blog: http://mlacunza.blogspot.com/
Lima - Peru




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