Titulo.jpg (10742 bytes)
FlechaI.jpg (2886 bytes) casa.jpg (31539 bytes) FlechaD.jpg (2791 bytes)

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.

arriba.jpg (2978 bytes) casa.jpg (31539 bytes)

 

Hosted by www.Geocities.ws

1