Programación OO.

Rafael Villar Burke pachi en mmn-arquitectos.com
Mar Nov 30 21:23:58 CET 2004


Victor Peinado wrote:

>Gracias por tu respuesta, muy ilustrativa. 
>
>Tengo clara las ventajas de la POO y ya te digo que entiendo cómo
>funciona. Lo que me cuesta es pensar en términos de OO cuando tengo
>que enfrentarme a un problema. Imagino que es cuestión de
>entrenamiento, así que me prongo como deberes personales para estas
>Navidades meterme caña con este tema.
>
>Saludos.
>  
>
Como lingüista a lo mejor te viene bien la analogía siguiente:
- Programación procedural -> pensamiento en término de predicados
- Programación orientada a objetos -> pensamiento en término de sujetos 
y sus relaciones

El cambio de paradigma es complicado, puesto que hasta que comiences a 
"ver" los problemas de esa manera resulta difícil. Es complicado 
explicar un paradigma, puesto que se trata de un cambio de ontología, 
una forma distinta de analizar una realidad. Me parece que esto se va 
aprendiendo a medida que tomas esa actitud viéndola en ejemplos, aunque 
comprender los conceptos centrales bien no está de más :). Al igual que 
seguro que ya estás acostumbrado a reconocer "funciones" o "subrutinas", 
que en realidad no existen más que en tu análisis, pero que has 
aprendido a abstraer como entidades independientes con significado y 
que, relacionándolas, llevan a cabo la tarea que buscas, también tendrás 
que ir aprendiendo a reconocer "objetos".

Algunos problemas parecen más claros a la vista del paradigma de la POO, 
por eso te recomendaron otras personas de la lista lo de la programación 
en entornos gráficos. En casi todos ellos aparecen: señales (que se 
conectan a métodos de objetos como retrollamadas y que son las 
relaciones entre los objetos), controles (objetos), controles hijos, 
herencia, etc...

Como referencias para ir empapándose de esa forma de pensar me parecen 
muy interesantes los libros de Bruce Eckel "Thinking in C++" y "Thinking 
in Patterns" que tratan muy bien todo el tema de las cualidades de los 
objetos y sus relaciones (herencia, encapsulación y polimorfismo frente 
a la relación de órden). El primero es muy muy bueno y explica 
extremadamente bien la cuestión del polimorfismo, que se suele dejar un 
poco de lado, y el segundo está sin acabar aunque creo que usa python... 
(este último solamente lo he ojeado).
También sobre el paradigma de la POO el libro de Stroustroup "El 
lenguaje de programación C++" (segunda edición) tiene algunos capítulos 
interesantísimos que son de puro análisis y se mete en temas de si una 
clase "es" o "contiene" otra clase, clases profundas frente a clases 
planas, etc, que, como lingüista, seguro que disfrutas.

La teoría de los patrones de diseño entra de lleno en el mundo de la 
POO, puesto que se trata de una teoría explicativa en la que los 
problemas se reducen a "objetos" tipo y las relaciones entre ellos y 
entre los mismos y un sistema general. En realidad, en mi opinión, los 
patrones de diseño "son" la manera de pensar "en objetos".

Suerte y ánimo,

Pachi




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