POO: Fundamentos de la Programación Orientada a Objetos

  • Por
Conceptos fundamentales de la Programación Orientada a Objetos, desde un punto de vista académico, que nos hacen entender la importancia de este paradigma de la programación.

En este artículo te ofrecemos un vídeo excelente para comenzar con la Programación Orientada a Objetos, desde un punto de vista muy académico, que te ofrecerá una serie de conocimientos importantes y necesarios para orientar tu formación y saber el por qué de la importancia de este paradigma de la programación.

En el texto que leerás a continuación encontrarás un resumen de la clase, emitida en directo y al final encontrarás el vídeo de la grabación de esta sesión. Te la ofrecimos de manera gratuita en DesarrolloWeb.com, el pasado 6 de mayo, junto al profesor de la UCM Luis Fernández. En esta pequeña charla introductoria podrás conocer a Luis y entender por qué es el mejor profesor para conocer los detalles de la Programación Orientada a Objetos. Durante ésta y las próximas dos semanas estará además con nosotros en el Curso de Programación Orientada a Objetos que estamos impartiendo actualmente en EscuelaIT.

Luis nos habló entre otras cosas de la definición de software, de la denominada Crisis del Software, y de las bases de la Programación Orientada a Objetos. Por aquí te dejamos un resumen de la charla.

Qué es el software

Las personas que nos dedicamos a la programación no deberíamos tener dudas a la hora de definir un concepto tan importante como el "software". La mayoría de nosotros, si tratamos de definirlo, lo haremos de mala manera. Una buena definición de lo que es el software sería “La información, de todo tipo, que das al ordenador para manipular la entrada de datos de un usuario”. Es decir, el software es información.

Cuando estamos escribiendo un código estamos dando una información al ordenador. Si la manera en la que ponemos la información no es la adecuada, nos encontraremos con un código desordenado, que hará que el trabajo sea poco eficiente a corto y largo plazo. El código tiene que estar bien escrito, para que a la hora de realizar algún cambio no tengamos que perder nuestro tiempo... y alterar nuestros nervios.

La Crisis del Software

El grupo Standish realizó un estudio en el año 1994 en el que se analizaban 50.000 proyectos. De esos 50.000 proyectos sólo el 16% fueron exitosos, y de ese 16% tan sólo el 61% cumplió toda la funcionalidad prometida. Los proyectos que fueron problemáticos sufrieron retrasos, costaron más de lo previsto y algunos fueron incluso cancelados al cabo de un tiempo.

Esta situación se detectó en los años 70, y fue denominada la Crisis del Software. Actualmente seguimos en ella.

De este estudio podemos llegar a la conclusión de que el software es información voluminosa y compleja que no podemos tratar de manera desordenada, pues esto marcará la diferencia entre que un proyecto salga adelante o fracase.

La historia del software

Al principio se empezaron a hacer lenguajes de alto nivel, orientados a procesos. Esa forma de trabajar daba más importancia a los procesos que a los datos.

Entonces muchas personas se dieron cuenta de que los datos merecían mayor atención y así aparecieron los lenguajes orientados a datos. Estos lenguajes tenían mucho cuidado con los datos, pero los procesos eran muy sencillos o casi inexistentes. El problema era que cuando había que cambiar la forma de los datos era necesario revisar todas las estructuras anteriores.

De la síntesis entre la programación orientada a procesos y de la programación orientada a datos nace la Programación Orientada a Objetos, un equilibrio entre las dos anteriores, que cuida tanto datos como procesos y evita los problemas de acoplamiento de los otros paradigmas.

Bases de la Programación Orientada a Objetos

Existen cuatro conceptos fundamentales dentro de la Programación Orientada a Objetos que se relacionan entre sí y que nos permitirán tener las riendas de nuestro código:

Abstracción: proceso mental de extracción de las características esenciales de algo, ignorando los detalles superfluos.

Encapsulación: proceso por el que se ocultan los detalles del soporte de las características esenciales de una abstracción.

Modularización: proceso de descomposición de un sistema en un conjunto de módulos o piezas independientes y cohesivos (con significado propio). Lo adecuado es conseguir los mínimos acoplamientos.

Jerarquización: proceso de estructuración por el que se produce una organización (jerarquía) de un conjunto de elementos en grados o niveles de responsabilidad, incumbencia o composición entre otros.

Si entiendes esos cuatro conceptos entenderás el por qué de la programación orientada a objetos y, consecuentemente, serás un mejor programador. Obviamente, en el vídeo Luis los explica mucho mejor, con ejemplos interesantes para ser capaces de entenderlo perfectamente. Además lo hace de una manera muy divertida, como comprobarás y nos anima a todos a tomarnos en serio nuestra profesión.

Nota: Para ahondar en los 4 conceptos anteriores queremos recomendarte la lectura del artículo Beneficios de la Programación Orientada a Objetos.

A continuación el vídeo de la clase, que os recomendamos mucho que veáis, pues además de resultaros interesante podréis entender mucho mejor los conceptos de los que hemos apuntado en este texto.