![]() |
|---|
![]() |
![]() |
![]() |
Introducción
En 1967 fue desarrollado SIMULA, que podría considerarse como el primer lenguaje que introduce el concepto de programación orientada a objeto (POO). De esta manera podemos decir que la POO tiene 33 años.
Inicialmente la programación se hacía totalmente en línea, esto es, una instrucción detrás de otra como resultado de las posibilidades del hardware inicial que recibia la información através de tarjetas perforadas que eran introducidas una a una.
Un paso importante en la programación fue la aparición de los sistemas estructurados, no obstante cuando los programas se hacían un poco grandes resultaba bastante engorroso realizar modificaciones y perfeccionamientos en ellos. Se debía reprogramar una y otra vez las mismas secciones del programa y era dificil aprovechar las soluciones encontradas de un programa a otro.
El software y el hardware siempre han estado, y estarán, muy vínculados, de manera que cuando se desarrollaron máquinas con más potencia y más económicas la computación se extendio a muchas áreas antes vedadas y se convirtio en una herramienta verdaderamente general.
Se hizo necesario llevar las soluciones de un lugar a otro, los programas se hicieron insoportablemente grandes y no era posible reprogramar una y otra vez los enormes sistemas.
La POO permitio resolver estas situaciones, incorporando a la programación la forma en que la naturaleza se ha desarrollado, heredando de una especia a otra lo mejor de ellas y desarrollando aquellos elementos que lo necesitan y modificando o eliminando aquellos que ya no son necesarios para el ambiente donde va a operar la nueva especie.
Por supuesto que no es, y no puede ser, el nivel más alto de la programación que existirá pero sin lugar a dudas resuelve en un alto grado los problemas existentes antes de su surgimiento y muchos de los que han ido apareciendo posteriormente.
Hasta ahora hemos tenido por un lado los datos y por otro la funcionalidad del sistema. Las funciones son independientes entre si y no conforman una unidad lógica funcional.
En la POO nos acercamos a la realidad de la naturaleza donde datos y funciones viajan unidos conformando un objeto y si este objeto está vivo será capaz de reproducirse y hacer que sus descendientes hereden sus funciones sin tener cada vez que inventar todo aquello que durante mucho tiempo la naturaleza desarrollo y depositó en él.
En la POO desarrollaremos clases en una estructura que nos permita ir haciendo un gran edificio desde acciones muy elementales hasta grandes operaciones donde intervengan todos los elementos antes desarrollados.
El propio sistema se defenderá de la introducción de extraños que puedan destruirlo y nos permitie mantener reservados aquellos códigos que no queremos mostrar, al mismo tiempo que facilita su modificación y generalización para adaptarlo a nuevas situaciones.
En la Programación Orientada a Objeto (POO) tendremos como conceptos fundamentales los de Clase y Objeto.
Para hacer una equivalencia simplificada estaremos vinculando Clase al concepto de Tipo y el de Objeto al de variable.
Otros términos que nos acompañarán durante nuestra rápida
revisión de la POO serán los de private, public, constructores, destructores,
herencia, clases abstractas y funciones virtuales.
Las Clases van a agrupar no solo los datos (propiedades) sino también la funcionalidad del Objeto. Así en una Clase Circunferencia no sólo tendremos sus datos (propiedades): radio, posición del centro, color; sino también las funciones que nos permitan trabajar con ella como un Objeto activo: pintar, borrar, mover, crecer, reducir.
Para extraer el máximo de utilidad a la POO deberemos no solo pensar en el hoy sino también en el mañana de forma que si empezamos a hacer una aplicación que trabaje con circunferencias, sería muy útil pensar en la posibilidad de que mañana trabajemos con rectángulos, triángulos, elipses y por tanto no sería despreciable pensar en elementos más generales como puede ser figura.
Algo similar si vamos a trabajar con resistencias, nuestra Clase tendrá variables como: valor de la resistencia, y su funcionalidad vendrá dada por el voltaje en función de la corriente que por ella circula. En este caso podríamos pensar que mañana podemos necesitar trabajar con capacitores, inductancias o fuentes y que todos ellos tienen como elemento común el de ser componentes de dos nodos.
Es así que surge el concepto de herencia, clases abstractas y funciones virtuales.
Algo más que deberemos aprender es cuales de nuestros datos y funciones pueden ser variados por quienes usen nuestros objetos y cuales no. Un ejemplo simple es cuando hacemos una Clase: Finanzas, seguramente que no queremos que alguien pueda alterar el dato: DineroEnBanco. Es por ello que surgen los conceptos de private y public.
Hasta ahora cuando iniciamos nuestros programas lo primero que
hacemos es declarar las variables y darles un valor. Está será la labor de los constructores. Por su parte cuando vamos a dejar de
usar un Objeto debemos liberar la memoria que
hemos ocupado con él, esta será la función de los Destructores.
![]() |
![]() |