Cómo cambiar mi mentalidad de procedimiento a orientado a objetos

Cada programación es un modelo de algo, una parte de nuestra visión del mundo. Nuestra visión del mundo es un modelo que corremos todo el tiempo para predecir algo. Corregimos nuestro punto de vista según los resultados de nuestras predicciones (o no, si preferimos estar en lo cierto todo el tiempo y, si tenemos suerte, es posible que nunca aprendamos sobre nuestra arrogancia de una manera difícil).

Cada programa es una parte de nuestro modelo mundial expresado en un lenguaje de forma que puede traducirse en comandos de máquina de bajo nivel y, por lo tanto, ejecutarse en una computadora.

El pensamiento procedimental consiste en expresar los procedimientos (operaciones, pasos, algoritmos) que existen en nuestra visión del mundo. Los objetos, algunas entidades de nuestra visión del mundo que participan en el procedimiento, no se expresan en el lenguaje procesal formal. Sólo están implícitos. Solo existen en la memoria de la computadora como un conjunto de las propiedades que calculamos. Presento que uno puede organizar la memoria como un conjunto de construcciones que se verán como objetos, e incluso puede expresar estas construcciones utilizando lenguaje de procedimiento (como matriz, por ejemplo).

El pensamiento orientado a objetos se trata de expresar entidades de nuestra visión del mundo y sus relaciones. Tienen propiedades y procedimientos que describen su comportamiento en respuesta a ciertas entradas. Algunos objetos pueden no tener comportamiento, solo propiedades, en caso de que, para el problema en cuestión, no estemos interesados ​​en su comportamiento. Otros objetos pueden tener solo comportamiento, en caso de que no estemos interesados ​​en sus propiedades y utilicemos solo su comportamiento. Pero la mayoría de los objetos tienen ambas: propiedades (típicamente, estado) y procedimientos (comportamiento). Bueno, los objetos sin estado son solo procedimientos, mientras que los objetos sin comportamiento son solo las construcciones de datos. Pero los llamamos objetos, porque es una vista orientada a objetos, ¿no es así?

Como ya puede adivinar, la diferencia no es grande, en mi opinión, es solo una cuestión de conveniencia y convención. Antes de que se introdujera la programación orientada a objetos, modelamos con bastante éxito nuestra visión del mundo sin ella.

Los defensores y los fanáticos de cada campamento ahora pueden separarme, pero trabajé en ambos estilos y realmente no veo una diferencia, excepto la capacidad de tener el mismo idioma con mis muelles y el conjunto de herramientas necesario.

Entonces, para responder a su pregunta, piense en cómo organiza sus datos y procedimientos, eso es todo.

En realidad no es tan difícil.
Tienes un problema al que tienes que codificar una solución.

Un programador orientado a los procedimientos piensa: “¿Qué debo hacer para resolver este problema?”
Se da cuenta de cómo fluirá el programa, en términos de operaciones.
Luego ve algunas partes del programa que son repetitivas, o parecen realizar una tarea definida que podría usar en el futuro. Los pone en funciones.
Repite este proceso y crea un programa bien escrito que hace lo que quiere.

Un programador orientado a objetos, por otro lado, piensa: “¿Con qué estoy trabajando * con * en este problema?”
Piensa más en sintonía con el mundo real: si su problema es automatizar los procedimientos de trabajo de un hospital, por ejemplo, primero piensa en médicos, pacientes y medicamentos. Estos se convierten en sus clases.
Luego piensa en las propiedades de estas entidades que las identifican de manera única, en el contexto de su problema: un médico debe tener un nombre, una voz y una especialización, y algunos años de experiencia. Estos se convierten en atributos de las clases. Sin embargo, la cantidad de hijas que tenga el médico es irrelevante para el problema y nuestro programador lo ignorará.
Solo después de estar seguro de haber identificado todas las clases en su programa, el individuo orientado a objetos comienza a preocuparse por el comportamiento que deben mostrar los objetos de estas clases. Él escribe este comportamiento como métodos que modifican los atributos de clase, ¡y está listo! 🙂

Sin embargo, recuerde que no es necesario “pasar” por completo del pensamiento procedimental al pensamiento orientado a objetos: muchas aplicaciones tienen mucho sentido como un conjunto simple de funciones, y hacerlas orientadas a objetos puede llevar a complicaciones innecesarias. Averiguar dónde usar qué enfoque es un poco más complicado y supongo que vendría a través de una larga práctica.

Procedimiento es la manera en que alguien llega a un objetivo. Que también puede ser un destino. Este “destino” es el objeto, la ubicación o el objetivo que deseamos alcanzar. Uno no puede tener un objetivo sin el procedimiento para alcanzarlo. Sin embargo, el procedimiento no siempre nos permite llegar al objetivo deseado. el procedimiento es imperfecto o está incompleto, o el objetivo puede que nunca sea alcanzable.
Saber tanto sobre el objetivo ayuda a refinar cualquier procedimiento. Pero luego, como en cualquier esfuerzo por avanzar hacia cualquier destino, un mapa siempre ayuda. Y tal “mapa” puede ser adquirido de alguien que ya ha adquirido experiencia en moverse hacia el mismo destino que está eligiendo. Sin embargo, nunca olvide que todos somos exploradores y todos los que vinieron antes de nosotros nos han llevado a donde estamos. Sobre una base colectiva y personal.
Elige tu destino (objetivo). Conozca todo lo que pueda sobre él y muévase hacia él con entusiasmo, precaución e inteligencia. Una vez que hayas alcanzado tu objetivo, salta hacia otro.

El pensamiento crítico es esencial. Esta es la única manera de complementar lo que yo llamo ser un comportamiento “orientado a la tarea” versus un comportamiento “orientado a resultados” Ambos se complementan, pero el objetivo solo se puede lograr con el resultado final en mente.

Si está obsesionado con la aplicación de un script sin tener en cuenta el progreso hacia el resultado deseado, solo está ocupado y el trabajo ocupado es costoso si no resulta en el logro de la meta prevista dentro de un período de tiempo determinado.

Sin embargo, para algunos que no ejercitan el pensamiento crítico en su esfuerzo de trabajo, se les alienta a no pensar y simplemente seguir el guión, comenzar a escuchar erróneamente su ‘autodominación’ que dice ‘si sigo el guión, estoy haciendo una Buen trabajo y no me meteré en problemas ni perderé mi trabajo ‘. Pero la verdadera realidad es que cualquier esfuerzo sin resultado no tiene valor. El valor está en el resultado final.

Desarrolla tu músculo del pensamiento crítico teniendo en mente el objetivo.

Es difícil lograr un resultado previsto cuando un miembro vital del equipo no está orientado hacia los resultados.

Lee la Ética a Nicómaco de Aristóteles si aún no lo has hecho.