Anda di halaman 1dari 5

ANTECEDENTES DE LA PROGRAMACIN ORIENTADA A OBJETOS

A partir de la dcada de los 70 se origin la llamada Crisis del Software debido


a una serie de problemas encontrados en el desarrollo de sistemas para
computadoras. La crisis tambin se deriv de la contradiccin entre el
desarrollo del hardware y su aprovechamiento a travs del software, esto es,
que se dedic poco esfuerzo al desarrollo de metodologas para la creacin del
software, creando un atraso de entre una y dos generaciones entre los
microprocesadores y el software que los manipula.
Las respuestas a estos problemas fueron entre otras:

Programacin estructurada en los lenguajes de programacin.

Modularidad y organizacin de bibliotecas.

Estas mejoras no fueron suficientes para resolver el problema ya que no se


consider:

Recursos humanos para el mantenimiento consistente en adaptar el


software a nuevos requerimientos imposibles de haber sido planificados
inicialmente.

Errores del software, esto es, resultados errneos.

Altos costos y tiempo de desarrollo muy largos.

El anlisis era deficiente, lo cual derivaba cambios y adaptaciones.

Problemas de comunicacin entre los diferentes mdulos al momento de


la unin.

Sistemas poco flexibles y confiables. Esto ocurre cuando el sistema no


cubre las necesidades del usuario final, es decir
o

No proporciona la informacin que el usuario requiere.

Informacin no confiable.

Sistemas difcil de manipu

Los especialistas en software llegaron a la conclusin de que en cualquier


tcnica que trate de resolver los problemas antes mencionados, el desarrollo
de sistemas deber contemplar las siguientes caractersticas:

Entender el problema y dominarlo

Comunicacin entre personas

Prever cambios continuos

Reutilizar el cdigo

Entonces surge como una alternativa el enfoque orientado a objetos. Es


importante sealar que la programacin orientada a objetos no es una
revolucin, sino que surge como resultado de la evolucin de los lenguajes de
programacin de tercera generacin y de la necesidad de idear nuevos
mtodos y metodologas para enfrentar el anlisis, diseo y codificacin de
sistemas complejos de software

En 1967 se desarroll SIMULA, que es un lenguaje para aplicaciones de


simulacin y se le considera como el precursor en la introduccin del
concepto de objeto.

En los 70's el modelo de objeto se amplia y surge el primer lenguaje de


Programacin Orientada a Objetos (POO) llamado Smalltalk. A fines de
los aos 80's surge Eiffell, Actor, C++, Objetive C, que son lenguajes con
potencialidad para el desarrollo de aplicaciones complejas.

En 1995 surge Java para la programacin del Web-Internet.

ENFOQUE ORIENTADO A OBJETOS


El concepto de la tecnologa de POO es la conexin de procedimientos de
programas y de datos. Los datos y procedimientos (o mtodos) se amalgaman
dentro de una clase, al ocultamiento de esa informacin se le llama
encapsulamiento y slo se deja una interfaz para que exista interacccin con el
exterior. A partir de ella se pueden generar objetos de software que tendrn las
mismas caractersticas y funcionalidades de la clase de la que provienen.
En la programacin orientada a objetos lo principal es la relacin entre los
datos y las funciones, esto es, un programa contiene objetos que responden a
los mensajes que se les envan.
En la programacin, un mensaje (o un llamado a una funcin) es simplemente
una peticin a un objeto para que haga algo. Un objeto contiene datos y
acciones o las tarea que el objeto es capaz de realizar. Las acciones llamadas
funciones miembro o mtodos son parte de los objetos y se implementan
mediante la realizacin de las funciones.

VENTAJAS DE LA PROGRAMACIN Y MTODOS ORIENTADOS A


OBJETOS

Existen aspectos que hacen que la POO mejore la calidad de los sistemas.
Estos aspectos son principalmente la abstraccin, modularidad, extensibilidad
y reutilizacin.
ABSTRACCIN: consiste en elevar el nivel de las representaciones necesarias
para un sistema de software, de manera que se reduzcan los detalles. Por
ejemplo, aunque sera posible representar un programa en cdigo binario,
ninguna persona es capaz de comprender una aplicacin partiendo de 0 y 1.
Esto requerira de programas ms extensos, a diferencia de los sistemas de
software construidos con lenguajes de programacin de ms alto nivel, los
cuales reducen el nmero total de lneas del cdigo. Con la POO se definen dos
niveles de abstraccin: el de los objetos y se utiliza para describir la aplicacin;
y el de los datos y funciones que se usa para describir sus detalles.
MODULARIDAD: permite dividir un sistema en componentes separados, lo que
facilita su operacin y mantenimiento. El nmero final de mdulos u objetos es
menor que el nmero de datos y funciones. Esto reduce la complejidad de la
aplicacin, ya que el programador piensa en menos componentes a la vez,
descartando detalles innecesarios.
EXTENSIBILIDAD: se refiere a la facilidad de modificar un sistema durante la
vida del mismo y dada una aplicacin general poder crear, a partir de ella,
otras ms especializadas. Los sistemas compuestos por mltiples mdulos
facilitan la extensibilidad dado que los cambios en el sistema se pueden reducir
a cambios en mdulos particulares y no en todo el sistema a la vez.
REUTILIZACIN: se refiere al reso de componentes. La reutilizacin reduce el
tiempo de diseo, codificacin y costo del sistema. Mediante la reutilizacin se
aprovechan componentes o bibliotecas ya desarrolladas, logrando una mejor
estandarizacin y simplificacin en las aplicaciones. En general el mayor
problema de la reutilizacin radica en construir componentes genricos,
sencillos con interfaces bien definidas y que pueden utilizarse en varias reas
de aplicacin.

LENGUAJES DE PROGRAMACIN ORIENTADOS A OBJETOS


En este caso las unidades de datos se consideran objetos activos. La
caracterstica principal de los lenguajes orientados a objetos es la capacidad de
representar definiciones de objetos a modo de esqueletos que pueden usarse
una y otra vez para construir mltiples objetos con las mismas propiedades o
modificarse para construir nuevos objetos con propiedades similares. Algunos
ejemplos de lenguajes de programacin orientada a objetos son
SIMULA (1962): El primer sistema con objetos fue B1000 en 1961, seguido
por Sketchpad en 1962, el cual contena clones o copias de objetos o

instancias. Sin embargo, SIMULA I fue el primer lenguaje completamente


orientado a objetos, estructurado mediante objetos y clases. Fue creado por
Ole Dahl y Kristen Nygaard del Centro de Cmputo de Noruega, Oslo, en 1962.
Smalltalk (1972) : Creado por Alan Kay en Xerox Park, tambin diseador de
la primera computadora personal basada en POO, FLEX DE 1967 a 1968. La
primera versin fue conocida como Smalltalk 72, cuyas races fueron SIMULA
67, siguiendo Smalltalk 76, versin totalmente orientada a objetos. El lenguaje
Smalltalk ha influido en muchos lenguajes como C++, Java, etc. y an es muy
utilizado.
Modula (1980) : La versin original de este lenguaje se llam MODULA-2 y fue
desarrollada por Nicklaus Wirth a mediados de los 70s como descendiente
directo de PASCAL. Este lenguaje inclua concurrencia y ciertos aspectos de la
orientacin a objetos.
Ada (1983) : fue diseado por Jean Ichibah del Departamento de la Defensa
de Estados Unidos en 1977, para apoyar la programacin a gran escala y
promover la robustez del software. Se denomin como Ada en honor de Lady
Ada Lovelace (1815-1852), considerada la primer programadora en la historia.
Aunque la versin original de este lenguaje no era orientada a objetos, la
ltima versin, Ada 95, si lo es.
Objetive C (1983) : fue diseado por Brad Cox como una extensin a C pero
con orientacin a objetos. Tiene influencia de Smalltalk 80. Se hizo popular
debido a su utilizacin en la computadora NeXT, incluyendo una interfaz bajo el
ambiente NEXTSTEP, conocido luego como OpenStep, y actualmente adquirido
por Apple como base de un nuevo sistema operativo MacOS X.
BETA (1983) : fue desarrollado por Ole Lehrmann Madsen en la Universidad
de Aarhus en Dinamarca. Beta es un lenguaje orientado a objetos inspirado en
SIMULA con sintaxis similar a PASCAL y a C.
C++ (1985) : fue diseado por Bjarne Stoustrup de AT&T Bell Labs entre 1984
y 1985. C++ agrega mecanismos de orientacin a objetos al lenguaje C, lo que
lo hace un lenguaje hibrido.
Eiffel (1986) : Se llama as en honor a la torre de Paris. Lo diseo Bertrand
Meyer como un lenguaje orientado a objetos con una sintaxis similar a C. El
diseo del lenguaje basado en Eiffel apoya un enfoque de ingeniera de
software conocido como diseo por contrato.
Self (1986) : Fue diseado por David Ungar y Randall Smith en Sun
Microsystem, su sintaxis es similar a Smalltalk aunque sin incluir la nocin de
clases en el lenguaje. En lugar de instaciar clases, los objetos se obtienen de
otros objetos (sus prototipos) por medio de copiado y refinado.

Haskell (1986) : Fue desarrollado por un comit (Hughes, Wadler, Peterson y


otros) que lo bautiz as en honor a Haskell Brooks Curry, cuyo trabajo en
lgica matemtica sirve como fundamento en los lenguajes funcionales.
Haskell esta muy influido po LISP, aunque fue extendido con algunos
mecanismos de la orientacin a objetos para ser ms moderno.
Java (1995) : Fue diseado por Gosling de Sun Microsystems entre 1994 y
1995, es el lenguaje orientado a objetos ms utilizado en la actualidad. Es
sencillo y porttil, muy similar a C++, aunque tomando ideas de Modula-3,
Smalltalk y Objetive C.
C # (2000) : Este lenguaje es conocido con Sharp, fue diseado por Microsoft.
Es una extensin a C con orientacin a objetos, inspirado en C++ y Java. El
lenguaje evita muchos de los problemas de diseo de C++.

Anda mungkin juga menyukai