Está en la página 1de 11

Historia Lenguajes POO

Estos son algunos de los lenguajes que contribuyen a la evolucin de los lenguajes orientados a objetos:
LISP en la dcada de los 50. Simula en los 60-(desarrollado en Noruega) . Y mas tarde Pascal, C, Modula y Ada.

Estos lenguajes no incluyen mecanismos para la programacin orientada a objetos, pero sus caractersticas sirven de base para la construccin de estos mecanismos. El concepto de objeto aparece a finales de los aos 60 en el lenguaje Simula-67 Proyecto Dynabook del visionario Alan Kay, este lenguaje de programacin fue creado para simular procesos cientficos, gracias a los avances de sus creadores apareci Simula-67 el cual era orientado al diseo; toma el concepto de bloque de Algol e introduce el el concepto de objeto A finales de los 60 se acu el trmino crisis del Software:

Los proyectos no cumplan los plazos y presupuestos. Dificultades inherentes a la naturaleza del software. Complejidad: *Dificultad de enumerar todos los estados posibles del programa. *Dificultad de comunicacin entre los miembros del equipo. *Sujeto a continuos cambios. *El software es intangible, no tiene representacin grfica. *Especificacin de requisitos completa, precisa y correcta.
En la dcada de los 70, nace SmallTalk como un lenguaje orientado a objetos puro introduciendo as el tipo de programacin orientada a objetos, el concepto manejado por este lenguaje es:"todo es un objeto, las clases heredan de la clases Object", afirma el concepto de mtodos y paso de mensajes; Smalltalk, es un lenguaje de programacin orientada a objetos por excelencia, no goz de popularidad, pero su entorno influy notablemente en otros desarrollos (Macintosh). En los aos siguientes los avances experimentados en la programacin orientada a objetos fueron pocos. En la dcada de los 80 los avances son mayores, debido fundamentalmente a la disponibilidad de extensiones orientadas a objetos en dos de los lenguajes ms

populares, C y Pascal; esto da lugar a la aparicin de los lenguajes orientados a objetos hbridos, entre los que se destacan C++ y Pascalorientado a objetos. Estos lenguajes tienen una caracterstica muy importante y es que guardan la compatibilidad con sus antecesores. En los aos 80 renace el inters por la orientacin a objetos:

Conferencias internacionales especficas (OOPSLA). Extensin de las tcnicas a la Ingeniera del software. Desarrollo de lenguajes de programacin orientados a objetos (Eiffel) e incorporacin de estas tecnologas en lenguajes existentes (C++, Turbo Pascal).
En los aos 90 los objetos se hacen omnipresentes: Se necesitaba tener lenguajes que permitieran dar soluciones a:

Reutilizar componentes (Comprar y no construir). Lenguajes Prototipados.

A continuacin un resumen de la evolucin de los lenguajes de programacin orientada a objetos.

Sistemas operativos orientados a objetos. Entornos de desarrollo orientado a objetos con muchas facilidades para la programacin (mtodo visual). SUN desarrolla el lenguaje Java.

Manejo Complejidad

Existen muchos mecanismos que permiten controlar el manejo de la complejidad, entre ellos resalta la abstraccin la cual no es ms que: la capacidad para encapsular y aislar la informacin del diseo y ejecucin las personas en su mente siempre han manejado este concepto, ya que el ser humano es incapaz de dominar en su totalidad objetos complejos, por lo tanto ignora los detalles no esenciales, tratando entonces de centrarse en el estudio de los aspectos esenciales de las cosas. El nico mecanismo de abstraccin que exista en los 50's era el lenguaje ensamblador, que permita utilizar nombres simblicos para representar celdas de memoria, mas adelante los lenguajes de alto nivel fueron ofreciendo un nuevo nivel de abstraccin. La abstraccin es un proceso natural y mental del ser humano, ABSTRAER EL CONCEPTO DE ALGO, ES TRATAR de comprender el mundo que lo rodea por medio de modelos mentales para obtener una vista simple de las cosas, este mecanismo normal de abstraccin que tiene cada persona es una herramienta potente que permite manejar la complejidad del mundo real; para poder disear un buen software es fundamental manejar el concepto de abstraccin. En un principio, los programadores enviaban instrucciones binarias a una computadora, se diseaban mecanismos para evitar que los programadores tuvieran que recordar las secuencias de bits que componen las instrucciones de un programa. Luego se consigue un nivel de abstraccin mas alto agrupando instrucciones primitivas para formar macroinstrucciones. Despus, los lenguajes de alto nivel supusieron un nivel mas alto de abstraccin que permitieron a los programadores distanciarse del interior arquitectnico de una mquina. Cada instruccin en un lenguaje de alto nivel puede invocar varias instrucciones mquina, dependiendo de la mquina especfica donde se compila el programa. Esta abstraccin permita a los programadores escribir software para propsitos genricos, sin preocuparse sobre qu mquina ejecutara el programa. A lo largo del tiempo los mecanismos de abstraccin (tcnicas de programacin) han ido evolucionando de la siguiente manera:

* 1. Los procedimientos (Programacin procedimental). * 2. Los mdulos (Programacin modular). * 3. Los tipos abstractos de datos (TAD's) (Programacin basada en tipos). * 4. Las clases de objetos (Programacin orientada a objetos).

Procedimientos - Programacin procedimental


Es uno de los primeros mecanismos de abstraccin que utilizaron los lenguajes de programacin, permita ejecutar tareas repetidamente, evitaba tener que duplicar cdigo varias veces (reutilizacin)y permite la primera posibilidad de ocultar informacin. Los programadores podan utilizar procedimientos escritos por otros programadores sin necesidad de conocer con exactitud los detalles de la implementacin, solo era necesario la interfaz. Sin embargo haba problema cuando mltiples programadores necesitaban trabajar con nombres idnticos. Un programador puede escribir un procedimiento, o un conjunto de procedimientos, que pueden ser utilizados por muchos otros. Los dems programadores no necesitan conocer los detalles exactos de la implantacin, slo necesitan la interfaz necesaria para realizar su llamado. Inclusive pueden ser optimizados despus de que estn siendo usados y slo se necesita la recompilacin del ejecutable para que sean tenido en cuenta los cambios. Para entender mejor el problema, se tiene el caso en que un programador necesite escribir rutinas para implementar una pila. l establece las rutinas de meter, sacar, pila vaca y pila llena. Implementa las rutinas mediante arrays listas enlazadas, etc. Los datos contenidos en la pila no se pueden hacer locales a cualquier rutina ya que necesita ser compartida por todos, y al ser variables globales no se puede tener un control de accesibilidad o visibilidad de las variables (variables globales y locales con nombres idnticos), en otras palabras la estructura de los datos debe ser conocida por todos, adems las rutinas estn reservadas y no se pueden utilizar en otras partes. Este mecanismo es diseo conducido por el procesamiento (procedimientos que implementan algoritmos que realizan tareas concretas).

Mecanismos de la programacin procedimental:

Procedimientos (funciones, rutinas, ...). * * Paso de argumentos. * Lenguajes: Fortran, C, Pascal.

Desafortunadamente los procedimientos no resuelven todos los problemas, no son un mecanismo para el ocultamiento de informacin efectivo y resuelve parcialmente el problema del trabajo en equipo, ya que varios programadores pueden usar los mimos nombres para sus procedimientos. Programacin Modular (Mdulos)

Un mdulo es una tcnica que proporciona la posibilidad de dividir sus datos y procedimientos en una parte privada- solo accesible dentro del mdulo- y una parte pblica accesible fuera del mdulo- con definicin de estos en cualquier parte. Dependiendo del tipo de abstraccin que se realice del problema se obtiene la modularidad, se tiene la abstraccin de datos, de control (a nivel de sentencia), procedimental y de objetos; de la forma como se maneje la complejidad del software depende la abstraccin que se haga del problema y de su solucin. Abstraccin de control : Los microprocesadores y microcontroladores tienen su propio lenguaje, lenguaje ensamblador para su programacin, y dos mecanismos para programar y ejecutar las instrucciones: la secuencia y salto. Hoy en da los nuevos lenguajes de programacin introducen las estructuras de control y as evita confundir con las etiquetas goto (ir a etiqueta), o saltar etiqueta, etc. Y se utilizan estructuras ya conocidas : sentencias de bifurcacin (if/else), bucles (for, do/while). Abstraccin procedimental: Se afronta el problema y se descompone la solucin segn las funciones a realizar, las estructuras antes mencionadas permiten describir a la mquina los algoritmos a seguir, que comnmente se conocen como programas y subprogramas. Cuando se llama a un subprograma slo se necesita saber qu es lo que hace y no cmo lo hace.

Este tipo de abstraccin es esencial para desarrollar software modular y fiable

* Tcnica mejorada para crear y manejar espacios de nombres. * Permite dividir en una parte privada y en una parte publica. * Permite hacer un mejor manejo de la tcnica de ocultamiento de informacin. * El criterio utilizado es que si no se necesita algn tipo de informacin no se debe tener acceso a ella, de forma que los datos estn ocultos en los mdulos. * Diseo centrado en la organizacin de los datos. * Los mdulos como conjuntos de procedimientos relacionados junto con los datos que manipulan.
Esta tcnica resuelve algunos problemas pero no todos los del desarrollo software ya que permite el mtodo efectivo de la ocultacin de la informacin, pero no permite realizar instanciacin, que es la capacidad de hacer mltiples copias de las zonas de datos. El soporte ms elemental de la programacin Modular lleg con la aparicin de la subrutina. Una subrutina crea una secuencia de instrucciones a las que se les da un nombre independiente, una vez que se ha definido, la subrutina se puede ejecutar simplemente incluyendo el nombre del programa si empre que se requiera. Las subrutinas proporcionan una divisin natural de las tareas. Aunque las subrutinas proporcionan el mecanismo bsico de la programacin Modular, se necesita mucha disciplina para crear software bien estructurado. Sin esta disciplina, es fcil escribir programas compilados y tortuosos difciles de modificar y comprender, as como imposible de mantener. Esta ha sido la panormica durante muchos aos en el desarrollo del software. Los mdulos resuelven algunos problemas del desarrollo de software, pero no todos. Estos por s mismos ofrecen un mtodo efectivo para el ocultamiento de informacin, pero no permite realizar la creacin de ejemplares (instancias), que manejen diferentes reas de datos.

Mecanismos de la programacin Modular:

* * * * * *

Los de la programacin procedimental. Ocultamiento de los datos. Interfaz que determina la forma de utilizacin. Implementacin variable. Compilacin separada. Lenguajes: C, Modula-2.

Tipos Abstractos de Datos

El TAD surge como una salida hacia una abstraccin mejor, la agrupacin de las dos abstracciones anteriores en una sola, as un TAD tiene una representacin (datos) y un conjunto de funcionalidades (funciones y procedimientos) asociados, permite separar la interfaz(pblico) de la implementacin(privado). Con este tipo de abstraccin se logra modelar el sistema de manera muy natural, facilita la extensibilidad y se recoge mejor el concepto de tipo. Es un tipo abstracto de dato definido por el usuario que puede manipular de un modo similar a los tipos de datos definidos por el sistema, un TAD tiene una representacin (datos) y un conjunto de funcionalidades (funciones y procedimientos):

* Las variables (conjunto de valores de datos). * Las operaciones (que se realizan sobre esos valores).

El TAD permite separar la interfaz (pblico) de la implementacin (privado). Con este sistema, se puede lograr una modelacin del problema muy natural, facilita la extensibilidad y se recoge mejor el concepto de tipo. Al especificar un tipo abstracto de datos el programador decide cules procedimientos son fundamentales para manipular ese tipo de dato; estos procedimientos se llaman las operaciones del tipo de datos. En un solo mdulo se encapsula el nuevo tipo de datos junto con sus procedimientos. Para construir un tipo abstracto de dato se debe poder:

* Exponer una definicin del tipo. * Hacer disponible un conjunto de operaciones que se puedan utilizar para manipular instancias de ese tipo. * Proteger los datos asociados con el tipo de modo que slo se pueda actuar sobre ellos con las rutinas proporcionadas. * Permitir instancias mltiples del tipo.

Clases de Objetos

Despus de los TADS, nace el concepto de objeto como unidad que combina datos y funciones que operan sobre ellos. El objeto tiene una identidad, un estado y un comportamiento; la identidad le hace nico en el mundo de los objetos, el estado lo define el valor de sus datos llamados atributos y su comportamiento lo define las funciones, llamadas mtodos. Los atributos definen la parte privada del objeto(oculta), la cual solo se puede acceder a travs de la parte pblica de los objetos(los mtodos). Todo esto termina dando un concepto bsico que es el de construir programas modulares, lo cual significa subdividir un programa en mdulos y se pueden ensamblar fcilmente para construir la aplicacin completa. Un objeto es un tipo abstracto de dato al que se aaden importantes innovaciones en comparticin de cdigo y reutilizacin. Los mecanismos bsicos de la orientacin a objetos son: objetos, mensajes y mtodos, clases y herencia. La idea fundamental es la comunicacin de los objetos a travs de paso de mensajes, adems se aaden los mecanismos de herencia y polimorfismo. La herencia permite diferentes tipos de datos para compartir el mismo cdigo, permitiendo una reduccin en el tamao del cdigo y un incremento en la funcionalidad. El polimorfismo permite que un mismo mensaje pueda actuar sobre objetos diferentes y comportarse de modo distinto. La persistencia se refiere a la permanencia de un objeto, esto es, la cantidad de tiempo para el cual se asigna espacio y permanece accesible en la memoria del computador. Se aaden innovaciones como:

* Comparicin de cdigo. * Reutilizacin.


El problema del ejemplo visto en programacin basada en tipos radica en que no se hace distincin entre las propiedades de cualquier forma (comunes) y las propiedades particulares de cada tipo de forma. Esa distincin es en la que se basa el enfoque orientado a objetos.

* Decidir qu clases se quieren. * Proporcionar un conjunto completo de operaciones en cada clase. * Hacer explcitas las semejanzas mediante la herencia. * Diseo centrado en las clases de objetos.
Mecanismos de la programacin basada en objetos:

* Los de la abstraccin de datos. * Herencia. * Vinculacin dinmica y polimorfismo. * Lenguajes: Smalltalk, C++, Eiffel.

Todos los ejemplares tienen el mismo comportamiento. Cada ejemplar tiene su propio estado (datos propios). Se puede cambiar la implementacin sin que vare la interfaz.

Programacin con TAD Definicin Estado Comportamiento Ejemplares TAD Datos Operaciones Variables

POO Clase Atributos Mtodos Objetos

En POO, la definicin de los ejemplares (estado y comportamiento) se encuentra en la clase.

* La clase encapsula el cdigo y los datos. * Los ejemplares de las clases son los objetos. * La clase define atributos (datos) y mtodos (operaciones).

* La vista externa de la clase (su interfaz) viene dada por su nombre y la forma de uso de los mtodos. * Los atributos han de ocultarse (ocultamiento de la informacin). * Cada objeto (ejemplar) contiene su propio conjunto de atributos. * Cada mtodo declarado en la clase constituye un servicio que proporcionan todos los objetos de esa clase. * Todos los objetos de una misma clase proporcionan los mismos servicios.