UNA NUEVA FORMA DE PENSAR EN PROGRAMACIÓN: OBJETOS
- Para entender La Programación Orientada a objeto primero tenemos que hacernos la siguiente pregunta:
- ¿Qué es un objeto?
- Para entenderlo intentaremos a través de una técnica llamada el símil antropomórfico. Relacionaremos, así, objetos reales con el concepto en estudio.
- No obstante, debemos olvidar cualquier asociación de objetos en el mundo real con posibles técnicas de programación conocidas. Es decir, no debemos pensar como programador, ni siquiera en el más elemental de los niveles.
Dicho esto, detallaremos algunos objetos del mundo real:
- factura,
- sala de cine,
- libro,
- programa,
- estrella,
- avión, etc.
Se podría decir: “SI, esto son objetos, pero ¿qué tiene esto que ver con la programación?».
Por ejemplo: si usamos, un objeto «lupa» con un objeto «sol» obtendremos el resultado de un rayo calórico que podría incidir sobre un objeto «papel» quemándolo.
Aquí vemos distintos objetos interactuando entre sí, con la siguiente interpretación formalista: el «sol» envía un mensaje luminoso a la «lupa«, y ésta envía un mensaje calórico al «papel«, que contesta a sí mismo diciendo «quémate«.
En este ejemplo, no se quiere «quemar» una abstracción o un «objeto general»: se desea «quemar» un «papel“.
otro ejemplo: un objeto bien familiar:
una ventana de Ms. Windows. Uno de tales objetos poseería unas determinadas características internas (barra de título, menú, color, barra de desplazamiento, etc.), a la vez que de servicios, métodos o funciones específicas (redimensionamiento, movimiento, etc.).
En este contexto aparece más clara la comunicación entre objetos: un click del ratón puede originar un mensaje dirigido a la ventana que, a su vez, origine un mensaje de la ventana a ella misma forzando su maximización.
QUE ES LA POO : La POO es, un sistema de programación que utiliza objetos para la resolución de problemas, interrelacionándolos mediante mensajes. Por ejemplo, si se quiere desarrollar una aplicación para la gestión organizativa de una oficina de un profesional.En la vida real nos encontraríamos con directores, secretarias, máquinas de escribir, impresoras, etc.:
El objeto teléfono, al sonar, entregaría un mensaje primero al centro de control y luego a una determinada secretaria mecanizada, la cual, en calidad de objeto, podría responder reteniendo brevemente la llamada y enviando un mensaje de aviso a la operadora correcta.
De nuevo vemos que no nos movemos con esquemas funcionales lógicos: no existe una función general de llamada telefónica (pueden existir teléfonos digitales, satelitales, etc.). En definitiva se pretende que las interrelaciones entre distintos objetos (o entidades) sean transparentes para el observador exterior.
¿ESO SIGNIFICA QUE YA NO MAS DE PROGRAMACIÓN ESTRUCTURADA?
NO. En realidad la POO podría considerarse como una extensión natural de la programación estructurada, dado que, en definitiva, aquélla surgió debido a las carencias y debilidades de ésta.
Con un breve repaso histórico, con los inicios de los años 70 una nueva metodología denominada «desarrollo estructurado«, basada en la independencia de datos y funciones o métodos, permitió superar la en aquel entonces fue la llamada «crisis del software.
los problema se asimilaban a una función o procedimiento, que se descompone en problemas más pequeños, que a su vez se descomponen en otras funciones más pequeñas, hasta llegar a problemas descomponibles.
El problema es que los sistemas software fueron poco a poco creciendo en tamaño y complejidad, de forma que al final los problemas solucionados por el desarrollo estructurado generaron nuevos problemas de más difícil solución.
A principios de los años 80 las empresas recabaron en buena parte de su presupuesto para La solución de este problema, sin embargo, todavía insatisfactoria, la lógica evolución de los conceptos de modularidad y reutilización del código a un nuevo paradigma que se llamará POO.
Hay que pensar, pues, que la POO es un escalón muy avanzado en el desarrollo de la programación estructurada, pero no tan avanzado que le permita prescindir de ésta.
¿POR QUÉ USAR EL LENGUAJE C++?
¿Es C++ el mejor Lenguaje de POO?
¿Qué tiene C++ que no tenga C?
Hemos visto que la POO intenta solucionar los problemas originados por el «enfoque estructurado«. pero estas nuevas técnicas necesitan de lenguajes de programación adecuados.
Surgieron, así, lenguajes de nueva creación como Smalltalk, Eiffel, Actor, etc. Por otro lado se intentó dotar de extensiones Orientadas-a-Objetos a los lenguajes clásicos más importantes, como C, Pascal, Fortran, Ada, Cobol, Lisp, etc.,
Naturalmente hay que escoger: ventajas y desventajas.
C++, en contra de lo expuesto, es un lenguaje híbrido: ha adoptado cuantas características de POO.
Un sistema es considerado como Orientado-a-Objetos cuando reúne las características de:
Abstracción,
Encapsulamiento,
Herencia
Y polimorfismo
Un objeto es una encapsulación abstracto de información, métodos o procedimientos para manipularla.
«un objeto contiene operaciones que definen su comportamiento y variables que definen su estado entre las llamadas a las operaciones».
Por ejemplo un objeto del tipo «sala de cine» donde los datos, variables o información estarían constituidos por los espectadores; figuremos que los espectadores no pudieran moverse por sí solos dentro de la sala.
¿Quiénes serían los manipuladores, métodos, procedimientos u operaciones encargados de manipular a los espectadores?
Indudablemente los acomodadores de la sala.
Un mensaje representa una acción a tomar por un determinado objeto.
De acuerdo al ejemplo anterior, la orden «que comience la proyección de la película» podría ser un mensaje dirigido a un objeto del tipo «sala de cine».
Otro mensaje podría ser la orden de «desalojo de la sala» en funciones no-continuas.
El mensaje aquí se refiere únicamente a la orden, y no tiene que ver con la forma como ésta es respondida.
En C++ un mensaje equivale al PROTOTIPO de una función miembro en la descripción de una clase.
Una clase equivale a la generalización o abstracción de un tipo específico de objetos.
Los polígonos con tres lados iguales podrían ser generalizados, por ejemplo, en una clase que llamaremos «trianguloEquilatero». Hablar de clase es, hablar de una determinada clase de objetos.
Una instancia es la concrección de una clase. Una instancia de la clase «SalaDeCine» sería, por ejemplo, el objeto “cineRex».
El concepto de instancia, en realidad, une la noción de objeto con la de clase. Esto quiere decir que en el esquema de POO, a semejanza de lo que ocurre en el mundo real, debemos identificar en primer lugar una abstracción general, delimitar las características comunes de un grupo de objetos, y luego poner nombre a uno o más de ellos.
Un método consiste en la implementación en una clase de un protocolo de respuesta a los mensajes dirigidos a los objetos de la misma.
La respuesta a tales mensajes puede incluir el envío por el método de mensajes al propio objeto y aun a otros, también como el cambio del estado interno del objeto.
En C++ los métodos están implementados como DEFINICIONES de funciones miembro de una clase, representando el conjunto de mensajes al que los objetos de tal clase pueden responder.
Revisando el ejemplo que examinábamos al hablar de «mensajes», podemos decir que la respuesta al mensaje «empezar la Proyección»
Tema muy bueno y fácil entender