2. La Programación Orientada a Objetos (POO u OOP según sus siglas en inglés) es
un paradigma de programación que usa objetos y sus interacciones para diseñar
aplicaciones y programas de computadora. Está basado en varias técnicas,
incluyendo herencia, modularidad, polimorfismo, y encapsulamiento. Su uso se
popularizó a principios de la década de 1990. Actualmente son muchos los
lenguajes de programación que soportan la orientación a objetos. Actualmente
una de las áreas más candentes en la industria y en el ámbito académico es la
orientación a objetos. La orientación a objetos promete mejoras de amplio alcance
en la forma de diseño, desarrollo y mantenimiento del software ofreciendo una
solución a largo plazo a los problemas y preocupaciones que han existido desde el
comienzo en el desarrollo de software: la falta de portabilidad del código y
reusabilidad, código que es difícil de modificar, ciclos de desarrollo largos y
técnicas de codificación no intuitivas .
3. • suele ser común a la mayoría de los lenguajes OOP, aunque introduce un
problema al existir la posibilidad de que el objeto sucesor herede el
mismo atributo, aunque con distinto tipo y valor, de mas de un
HERENCIA predecesor.
MULTIPLE
• Los lenguajes OOP arrastraron en un principio la reputación de ser
ineficaces. Esto se debía en gran medida a que los primeros lenguajes
(como Smalltalk) eran interpretados y no compilados. La existencia
EFICIENCIA de compiladores permite a los desarrolladores ganar rapidez.
• Los lenguajes orientados a objetos varían de forma sustancial la forma
por la que se aproximan a la asignación de tipos.
• Por asignación de tipos entendemos que cada variable sea identificada
ASIGNACION como perteneciente a una clase (asignación fuerte) o sea simplemente un
DE TIPOS objeto indeterminado (asignación débil).
4. • Los OOP son lenguajes que utilizan de manera intensiva la memoria de
la computadora.
• Hay dos tipos de aproximación a la gestión de memoria.
Manejo de • El sistema en tiempo de ejecución libera la memoria automáticamente a
memoria medida que los objetos dejan de utilizarse.
• Consiste en separar aquellos atributos del objeto que deben ser
conocidos por el resto, de aquellos necesario para su funcionamiento
Encapsulación propio.
• comportamientos diferentes, asociados a objetos distintos, pueden
compartir el mismo nombre, al llamarlos por ese nombre se utilizará el
comportamiento correspondiente al objeto que se esté usando.
Polimorfismo:
5. La parte más importante de todo diseño es
el punto de entrada de la definición de
requerimientos. En la observación atenta
de los requerimientos se pueden hallar la
mayoría de los objetos pertenecientes a
nuestra aplicación. En este ejemplo nos
centraremos en la identificación de objetos
a partir de los requerimientos básicos de la
aplicación. Este análisis es el primero que
debe hacerse dentro de OOP y es también
útil para cualquier otra técnica de
programación.
Analicemos la siguiente definición de
requerimientos: El <<sistema de
tratamiento de información documental>>
es un gestor de <<documentos>>, de tal
manera que puedan clasificar en uno o
varios <<índices>>, recuperar para su
modificación, visualizar, para su consulta,
reclasificar, archivar y destruir. El
<<sistema>> procesa la petición del
<<usuario>>, devolviendo un mensaje e
indicando el éxito o el fracaso de la
petición.
De una manera general hemos indicado
entre comillas los sustantivos y en cursiva
los verbos. De esta forma hemos
identificado los objetos principales de la
aplicación y las operaciones asociadas a
cada uno de los objetos.
Observe el siguiente diagrama.
6. Hemos traducido los requerimientos a un conjunto de Como podemos observar, algunas asociaciones cíclicas
objetos. como Índice <-> Documento. Estas asociaciones pueden
Estos están inconexos entre sí, pero aplicando la simplificarse. También existen otras implícitas que
<<lógica>> podemos ver las relaciones que existen entre examinaremos más adelante, como Usuario->Documento-
ellos. Sin salirnos de las especificaciones de la aplicación, >Índice.
vemos que existen las asociaciones que aparecen en la Observemos gráficamente las asociaciones que mantienen
siguiente figura: los objetos entre sí en la siguiente figura
Como puede verse hay dos asociaciones sospechosas, ya que no son verbos sino los sustantivos <<petición>> y <<mensaje>>. Estas dos
asociaciones se pueden <<objetivar>> de tal manera que reúnan las condiciones de un objeto. Para ello debemos volver a las especificaciones
iniciales. Cuando se archiva un documento se debe indicar el nombre del documento así como los índices a los que se va a asociar. Las peticiones
de recuperación deben incluir un índice y el nombre del archivo. Las consultas a los índices deben incluir el nombre del indice y una condición.
A partir de este análisis se puede depurar con HERENCIA y posteriormente realizar un <<ajuste fino>>
7. Los conceptos de la programación orientada a objetos tienen origen en Simula 67, un
lenguaje diseñado para hacer simulaciones, creado por Ole-Johan Dahl y Kristen Nygaard del
Centro de Cómputo Noruego en Oslo. Según se informa, la historia es que trabajaban en
simulaciones de naves, y fueron confundidos por la explosión combinatoria de cómo las
diversas cualidades de diversas naves podían afectar unas a las otras. La idea ocurrió para
agrupar los diversos tipos de naves en diversas clases de objetos, siendo responsable cada
clase de objetos de definir sus propios datos y comportamiento. Fueron refinados más tarde
en Smalltalk, que fue desarrollado en Simula en Xerox PARC pero diseñado para ser un
sistema completamente dinámico en el cual los objetos se podrían crear y modificar "en
marcha" en lugar de tener un sistema basado en programas estáticos
.
La programación orientada a objetos tomó posición como la metodología de programación
dominante a mediados de los años ochenta, en gran parte debido a la influencia de C++ , una
extensión del lenguaje de programación C. Su dominación fue consolidada gracias al auge de
las Interfaces gráficas de usuario, para los cuales la programación orientada a objetos está
particularmente bien adaptada.
8. VENTAJAS: La OOP proporciona las siguientes ventajas sobre otros lenguajes
de programación
• Ya que la representación de los objetos lleva implica tanto el análisis como el
diseño y la codificación de los mismos.
Uniformidad
• Tanto los datos que componen los objetos, como los procedimientos que los
manipulan, están agrupados en clases, que se corresponden con las
Comprensión estructuras de información que el programa trata.
• Al tener relacionados los procedimientos que manipulan los datos con los
datos a tratar, cualquier cambio que se realice sobre ellos quedará reflejado
Flexibilidad automáticamente en cualquier lugar donde estos datos aparezcan.
• Dado que permite un tratamiento diferenciado de aquellos objetos
quepermanecen constantes en el tiempo sobre aquellos que cambian con
frecuenciapermite aislar las partes del programa que permanecen
Estabilidad inalterables en el tiempo.
9. DESVENTAJAS: A pesar de que las ventajas de la programación orientada
a objetos superan a las limitaciones de la misma, podemos encontrar algunas
características no deseables en ésta. Limitaciones para el programador. No
obstante que la tecnología orientada a objetos no es nueva, un gran porcentaje
de programadores no están familiarizados con los conceptos de dicha
tecnología. En otras palabras, la lógica de la programación estructurada sigue
siendo predominante en la mayoría de los desarrolladores de software,
después de haber revisado de forma breve los principios de la programación
orientada a objetos, nos es claro que en ésta se requiere una lógica de
pensamiento totalmente diferente a la lógica comúnmente utilizada para la
programación estructurada. Tamaño excesivo en las aplicaciones resultantes.
La gran mayoría de los equipos de cómputo cuentan con capacidades tanto de
almacenamiento como de memoria lo suficientemente buena como para
ejecutar la mayoría de las aplicaciones que puedan desarrollarse con la
tecnología orientada a objetos, sin embargo existen casos en los que lo
anterior no se cumple.