Programacion Orientada A Objetos POO
yaki3130 de Noviembre de 2014
14.819 Palabras (60 Páginas)222 Visitas
Universidad de Los Andes
Facultad de Ingeniería
Escuela de Ingeniería de Sistemas
Departamento de Computación
Asignatura: Programación Digital II y Estructura de Datos
Profesor: Domingo Hernández H.
Introducción a los Principios Básicos de la Programación Orientada por Objetos
Objetivos
Este cuaderno tiene la finalidad de introducir al lector o al estudiante que poseen conocimientos en el área de la computación a una nueva forma de pensar en el arte de programar, como es el caso de la Programación Orientada por Objeto.
A lo largo del texto el lector estudiará los conceptos fundamentales que se requiere para diseñar problemas de la vida real con este nuevo enfoque.
Al final del curso los estudiantes deberán ser capaces de diseñar e implantar un pequeño programa donde apliquen todos los conceptos aprendidos.
Contenido
1.- Introducción al diseño orientado por objeto.
- ¿Qué es la orientación por objeto?
- ¿Qué es el desarrollo orientado por objetos?
2.- Historia y evolución de la orientación por objetos.
3.- Tipos abstractos de datos (separar el que del como)
- Ventajas de la abstracción de datos.
- Característica que debe satisfacer un lenguaje que soporte tipos abstractos de datos.
4.- Conceptos de la orientación por objetos
- ¿Qué es un objeto?
- ¿Qué se puede considerar como objeto?
- Identidad de un objeto.
- Componentes para la construcción de software de un objeto.
- Tipos de objetos.
- Abstracción
.- Tipos de abstracción.
.- Mecanismos de abstracción.
- Operaciones y métodos.
- Generalización (métaclase o superclase).
- Agregación vs generalización.
- Encapsulamiento.
- Polimorfismo .- clasificación de polimorfismos.
- Herencia.
.- Tipos de herencia.
- Encadenamiento dinámico.
5.- Estilo de programación para la orientación por objetos
- Reusabilidad.
- Extensibilidad.
- Robustez.
- Validación de argumentos.
- Programación a gran escala.
6.- Metodologías para el diseño orientado por objetos.
Metodología de Abbolt, R y Booch, G.
Metodología de Loresen y otros.
1.- INTRODUCCIÓN: DISEÑO ORIENTADO POR OBJETOS
El diseño orientado por objetos (DOO), como otras metodología de diseños orientados a la información crean una representación del dominio del problema en el mundo real y lo transforma en un dominio de soluciones que es el software. A diferencia de otros métodos, el DOO da como resultado un diseño el cual interconexiona los objetos de datos (elementos de datos) y las operaciones de procesamiento, de forma tal que encapsula la información y el procesamiento. Este encapsulamiento es el paradigma fundamental de la orientación por objetos.
Modelo de una tarea típica de programación
Espacio del mundo real
Espacio del programa
En la figura anterior se puede observar que los problemas de la vida real se pueden representar por medio de la abstracción en un programa de computación. En la vida real existen actividades y objetos que son manejados por procesos de la vida cotidiana del hombre, estos procesos producen nuevos objetos o cambios de estado en los objetos ya existente, que son interpretados por el usuario final. Cada uno de estos componentes de un problema de la vida real tiene su representación el espacio del programa, los objetos reales y actividades son representado en el espacio del programa por medio de objetos abstractos y operaciones en un lenguaje de programación, los procesos cotidianos son representados por los algoritmos que al ser ejecutados generan datos e información que serán interpretados por el usuario final.
La naturaleza única del diseño orientado por objetos se debe a su habilidad para construir basándose en tres conceptos importantes del diseño del software: Abstracción, ocultamiento de la información y modularidad Todos los métodos de diseño buscan la creación de software que exhiban estas características fundamentales, pero solo el DOO da un mecanismo que facilita al diseñador adquirir los tres conceptos anteriores sin complejidad o compromiso.
Wiener y Sincovec resumen el diseño orientado por objeto de la siguiente manera: "Ya no es necesario para el diseñador de sistemas convertir el dominio del problema en estructura de datos y control predefinidas, presentes en un lenguaje de implantación. En vez de ello, el diseñador puede crear sus propios tipos abstracto de dato que pueden ser inventados por el diseñador. Además el diseño del software separa los detalles de representación de los objetos de los datos usados en el sistema.
¿Qué es la orientación por objetos?
Superficialmente el término "orientación por objeto" significa que organizaremos el software como una colección de objetos discretos que incorporan tanto estructuras de datos como procedimientos. Esto contrasta con la programación convencional, en la cual la estructura de datos y el comportamiento están solo aproximadamente conectados. Existen algunas disputas acerca de qué características exactamente se requieren para una aproximación orientada por objetos; ellas generalmente incluyen cinco aspectos fundamentales: tipos abstractos de datos (encapsulamiento), polimorfismo, encadenamiento dinámico, herencia e identidad del objeto. Estos serán explicados en las secciones siguientes.
¿Qué es el desarrollo orientado por objetos?
El desarrollo orientado por objetos es una nueva forma de pensar acerca del software basado sobre abstracciones que existen en el mundo real. En este contexto, el desarrollo es referido a la primera parte del ciclo de vida del software: análisis, diseño e implantación.
La esencia del desarrollo orientado por objetos es la identificación y organización de conceptos del dominio de aplicación y del problema complejo de la herencia más que la traducción del diseño a un lenguaje particular.
El desarrollo orientado por objetos es un proceso conceptual independiente de un lenguaje de programación hasta su etapa final.
El desarrollo orientado por objeto es una nueva forma de pensar y no una técnica de programación.
Los grandes beneficios del diseño orientado por objetos es la ayuda a la especificación del sistemas de los desarrolladores y a la comunicación clara de los conceptos abstractos del sistema con los usuarios.
2.- HISTORIA Y EVOLUCIÓN DE LA ORIENTACIÓN POR OBJETOS
Desde la introducción del computador digital, los programadores han estado a la búsqueda de lenguajes de alto nivel. La raíz de la programación orientada por objetos puede ser vistas como un intento gradual de los diseñadores de lenguajes de programación de ayudar a construir software de manera más rápida por programadores individuales o equipos de programadores y ayudar al mantenimiento del software después que este se ha escrito.
A finales de los 50 uno de los problemas que existía en grandes desarrollos de programas en FORTRAN era que los nombres de las variables presentaban conflictos en diferentes partes del programa. A consecuencia de esto los diseñadores del lenguaje Algol deciden proveer "barreras" para separar nombres de variables dentro de segmentos de programas. Esto da nacimiento al Begin ... End en el bloque del Algol 60. Desde entonces los nombres de variables aparecen dentro de un bloque de área local; el uso de ellas no dará conflicto con el uso del mismo nombre de la variable en otro sitio del mismo programa. Por lo tanto este fue el primer intento de proveer protección o encapsulamiento dentro de un lenguaje de programación. Las estructuras de bloque son ahora muy usadas en una variedad de lenguajes tales como: C, Pascal y ADA.
A final de los años 60, los diseñadores del lenguaje SIMULA 67 ( Dahí y Nygaard) toman el concepto de "bloque" del Algol 60 para dar el primer paso hacia el concepto futuro de "objeto". Aunque las raíces del SIMULA fue el Algol, este fue principalmente ideado como un lenguaje de simulación. Este fue el comienzo del uso de la encapsulación de datos dentro de un lenguaje de programación.
A principio de los 70 el concepto de abstracción de datos fue propuesto por un número de diseñadores de lenguaje con una orientación para manejar grandes programas. Los lenguajes tales como Alphard (Wulf y Shaw.1976) comienzan el uso de objetos , clases y propiedades de herencia. Al mismo tiempo, una buena parte de los fundamentos y teorías matemáticas para tipos abstracto de datos comienzan a desarrollarse. Esto ayudó a establecer el concepto de tipo abstracto de datos, suministrando así una rigurosidad matemática para ser utilizada en la orientación por objeto.
Similarmente al concepto de abstracción de datos y herencia, en los lenguajes tales como TAXIS (Mylopoulos y Wong 1980) quién también provee un puente para el surgimiento del concepto de herencia, el cual ha sido muy popular en inteligencia artificial basadas en redes semánticas.
A principio de los 80 estos conceptos comienzan a emerger juntos hacia un concepto uniforme para encapsulamiento de datos, propiedades de herencia y elementos de datos activos.
En 1986, la OOPSLA (Object-oriented Programing Systems
...