¿Qué es una cosmovisión platónica y cómo se usa en la programación orientada a objetos?

De hecho, las clases son un aspecto importante de la orientación a objetos. Pero no se llama orientación a objetos por nada. Se trata de objetos más que de clases. Los objetos son entidades vivientes pequeñas, autosuficientes, que colaboran para realizar tareas complejas, exhiben un comportamiento complejo como una entidad colectiva. El poder de un sistema compuesto por innumerables entidades pequeñas, simples (por lo tanto, comprensibles y mantenibles en sí mismas) y encapsuladas (el funcionamiento interno de esas cosas está oculta) es muy subestimado y, a menudo, no es comprendido por los programadores.
Otro aspecto es la forma en que colaboran. Los objetos hacen eso solicitando educadamente un servicio, y lo hacen enviando un mensaje. Este aspecto de la orientación a objetos también es a menudo descuidado. Se sabe que el inventor de la orientación a objetos, Alan Kay, dijo que a menudo pensaba que debería haberlo llamado “orientado a mensajes” porque mucho más poder provenía de los mensajes que de los objetos mismos.
Estos atributos de orientación a objetos contribuyen a un atributo de calidad crítica de cualquier sistema, la escalabilidad. Si se aplica de forma correcta y coherente (tenga en cuenta que esto se debe principalmente a los sistemas que he llamado “orientados a objetos”), se dice que los sistemas orientados a objetos son muy escalables.
Todo se reduce a un acoplamiento suelto y una alta cohesión.
Como Platón realmente habló sobre los objetos, y enfatizó el aspecto de la abstracción, es importante darse cuenta de que habló de “abstracciones realistas”, es decir, abstracciones (universales) que realmente “funcionaron”, lo que él llamó Particulars. Esto es lo que se ve en la orientación a objetos: puede haber miles de millones de “objetos”, pero mucho menos Universales (las abstracciones platónicas), correspondientes a las clases en OO.

Platón creía que el universo real eran todas las ideas y abstracciones que tenemos sobre diferentes cosas que observamos y que nuestro mundo observable estaba simplemente hecho de sombras imperfectas o instancias de estas ideas.

Por ejemplo, el universo real tiene las ideas del Hombre perfecto, las ideas de la montaña perfecta y todas las demás cosas que vemos. Y tenemos muchos hombres que son imágenes del hombre perfecto original, muchas montañas que son ejemplos de la montaña perfecta y así sucesivamente.

Debido a la naturaleza finita de los objetos mundanos, él no creía que fueran reales. Su argumento fue en ese sentido: “Si se va después de unos años, ¿cómo puede ser real?”. Así que creía que solo las ideas eran el universo real y lo que vemos, una copia.

En una sola frase, consideró que la esencia precede a la existencia.

Esta es la base de la programación orientada a objetos: clases y objetos. El universo real es como un conjunto de clases y lo que vemos a nuestro alrededor son los objetos, es decir, múltiples instancias de esas clases.

Por ejemplo, existe la clase llamada Human. Tiene variables como el sexo, el color de la piel, la altura, el peso, la estructura, etc. Esto es solo una idea de un humano. Ahora, crea una instancia dando valores para los parámetros: masculino, marrón claro, 1.75 m, 65 kg, flaco, etc. y me entiendes. Soy un objeto, una instancia de la clase humana.

La mayoría de las actividades que van bajo la etiqueta “abstracción” en informática tienen que ver con tratar de resolver el problema de los universales. Para agregar a la excelente respuesta de Hemant, la programación orientada a objetos es un intento de resolver el problema al afirmar que todo puede organizarse como un conjunto de propiedades cambiantes que pertenecen a una Clase invariable. La diferencia en las propiedades entre dos objetos es lo que les da identidad, y el carácter común de su conjunto de propiedades es lo que los hace parte de una Clase. La herencia es un mecanismo para establecer relaciones entre diferentes Clases / Formas.