Está en la página 1de 7

Programacin orientada a objetos

Julia de Frutos
Eduardo Fernndez

Programacin orientada a objetos


1. Introduccin.
La programacin orientada a objetos (Poo) es un paradigma de
programacin ms orientado a como vemos las cosas en la vida real que
otros tipos de programacin (programacin lgica, funcional, imperativa,...)
Este tipo de programacin permite solventar algunos de los problemas
que ha tenido el desarrollo del software desde sus comienzos, como por
ejemplo la falta de portabilidad y baja reusabilidad del cdigo, junto con la
dificultad en la modificacin y desarrollo del mismo. Adems es una tcnica
de codificacin bastante mas intuitiva que el resto.
La programacin orientada a objetos tiene tres propiedades bsicas:
Debe estar basado en objetos, estar basado en clases y debe de ser capaz
de mantener una herencia entre clases. La mayora de los lenguajes
cumplen una o dos de estas propiedades pero pocos logran cumplir las tres.
En particular, la herencia.
Posteriormente veremos los conceptos objeto, clase y herencia junto
con el resto de conceptos asociadazos a la Poo.
Aprender esta tcnica no es complicado, pero es una manera subjetiva
de programar que depende del desarrollador. Aunque podemos dar
diferentes soluciones a un mismo problema, no todas ellas son vlidas. La
dificultad no radica en aprender esta tcnica, si no en ejecutarla bien. Solo
programando bien podemos aprovechar todas las ventajas que nos ofrece la
programacin orientada a objetos.

2. Origen.
Los orgenes de la programacin orientada a objetos se encuentran en
Simula67. Este era un lenguaje creado para realizar simulaciones en el
Centro de Cmputo Noruego en Oslo. Sus desarrolladores fueron Ole-Johan
Dahl y Kristen Nygaard.
Se dieron cuenta de que las cualidades de las naves con las que estaban
simulando poda afectar unas a otras. Su idea fue la de agrupar diversos
tipos de naves en diversas clases de objetos. Los objetos se agrupan en
clases y estas definen sus propios datos y operaciones. Esta idea fue pulida
posteriormente en Smalltak1, desarrollado en Simula2 en Xerox PARC3.
1

Smalltalk: es un sistema informtico que permite realizar tareas de computacin mediante la


interaccin con un entorno de objetos virtuales.
2
Simula: primer lenguaje de programacin orientada a objetos (OOP).
3
Xerox PARC: una divisin de investigacin de Xerox Corporation, con sede en Palo Alto.

Programacin orientada a objetos

Julia de Frutos
Eduardo Fernndez

Fue diseado para ser un sistema completamente dinmico en el cual los


objetos se podran crear y modificar "en marcha" en lugar de tener un
sistema basado en programas estticos.
En los aos ochenta la programacin orientada a objetos adquiere un
papel dominante debido a la aparicin de C++, una extensin de C que
soporta este tipo de programacin. Termina consolidndose finalmente con
el auge de las Interfaces grficas de usuario. Estas facilitan la comunicacin
del usuario con el ordenador mediante un sistema de iconos, ventanas y
textos para los cuales la programacin orientada a objetos est muy bien
adaptada.
Las caractersticas de esta tcnica de programacin fueron aadidas a
muchos lenguajes existentes tales como Ada, Basic, Fortran, Pascal y otros.
Pero estos lenguajes no se crearon para soportarlas lo que condujo a
problemas de compatibilidad y mantenimiento del cdigo, mientras que los
lenguajes diseados especficamente para ello carecan de las herramientas
indispensables para muchos programadores que no podan trabajar sin
ellas.
El problema era conseguir un lenguaje basado en los mtodos de la
programacin orientada a objetos, pero que incluyese algunas de las
caractersticas del resto de paradigmas de manera segura. El Eiffel de
Bertrand Meyer fue uno de los primeros leguajes que solventaron este
problema; aunque se encuentra en desuso debido a la gran aceptacin de
Java y su maquina virtual que se encuentra implantada en la mayora de
navegadores web.
Mas recientemente, nuevos lenguajes han apareciendo orientados a
objetos pero con un procedimiento mas metodolgico, como Pitn y Ruby.
Probablemente, despus de Java los lenguajes orientados a objetos mas
importantes sean Visual Basic y C# diseados para la plataforma .NET 4 de
Microsoft.

3. Conceptos bsicos de POO.


Objeto: Conjunto concreto de datos y operaciones (mtodos). Se

corresponden con los objetos que nos rodean. Un ejemplo de objeto puede
ser un libro. Tiene una serie de propiedades (nmero de hojas, autor, editor,
...) y unas operaciones (se puede abrir, leer, anotar, ...)
Clase: Conjunto de las propiedades y mtodos de un tipo de objeto
determinado. Podemos definir la clase libro, donde un objeto perteneciente
a esta clase sera El Camino de Miguel Delibes.
Mtodo: Algoritmo asociado a una clase de objetos o a uno de ellos.
Se ejecutan tras recibir un "mensaje". Un mtodo es lo que los objetos
4

.NET: proyecto de Microsoft para crear una nueva plataforma que permita un desarrollo de aplicaciones
rpido. Microsoft pretende desarrollar una estrategia que sume todos sus productos, desde el Sistema
Operativo hasta sus herramientas de mercado.

Programacin orientada a objetos

Julia de Frutos
Eduardo Fernndez

pueden hacer. No puedo escribir con un libro, por ejemplo. Un mtodo


puede producir un cambio en algunas de las propiedades del objeto, y/o la
generacin de un "evento" junto con un mensaje que se enva a otro objeto
o as mismo. De esta forma, en el ejemplo de los libros, el mtodo leer
generara un mensaje dirigido al propio libro para que fuese abierto.
Evento: Es un suceso en el sistema. El programa enva el mensaje
adecuado al objeto pertinente.
Mensaje: Informacin dirigida a un objeto, el cual le dice que ejecute
uno de sus mtodos con ciertos parmetros asociados al evento que lo
gener.
Propiedad o atributo: Caractersticas de un objeto o una clase de
objetos. Permiten ver los datos asociados a un objeto desde fuera. Su valor
puede ser alterado por el evento provocado por un mtodo
Estado interno: Propiedad invisible de los objetos que solo se ve
afectada por un mtodo del objeto. Se utiliza para indicar las distintas
situaciones del objeto o clases de objetos.

4. Caractersticas de la Poo.
Abstraccin:

Permite no preocuparse por los detalles de


implementacin de cada tipo de dato. Estos toman el nombre de tipos de
datos abstractos (TDA), incluidos en los lenguajes Pascal, Ada, Modula-2 y
C++ entre otros. La abstraccin est presente en casi todos los lenguajes
de programacin actuales. Algunos ejemplos de abstraccin son los ya
mencionados TDA, las estructuras de datos, los procedimientos y las
funciones.
Encapsulamiento: Consiste en separar la implementacin de los
objetos de los objetos en si. De este modo solo se puede cambiar el estado
del objeto mediante las operaciones asociadas al mismo, sin tener que
modificar su cdigo. As tambin se evita que el usuario altere su estado de
manera incontrolada.
Esta propiedad tambin recibe el nombre de ocultacin de la informacin.
El usuario del objeto desconoce la distribucin de la informacin dentro del
objeto y la informacin disponible en l. Pero gracias a los mtodos
asociados a cada uno puede usarlos y manejarlos. Un ejemplo de
encapsulamiento es el circuito elctrico de una casa. El usuario solo accede
a ciertas partes del circuito (enchufes e interruptores), aunque las partes
del circuito internas comparten informacin entre si.
Polimorfismo: Es la posibilidad que ofrece la Poo de asociar a objetos

diferentes distintos mtodos con el mismo nombre. Cada objeto actuar en


consecuencia segn como este implementado el mtodo. Por ejemplo, el
mensaje "+" a un objeto de tipo entero significa suma, mientras que para
un objeto de tipo cadena significara concatenacin.

Programacin orientada a objetos

Julia de Frutos
Eduardo Fernndez

Cuando esto sucede en tiempo de ejecucin, hablamos de asignacin tarda


o asignacin dinmica. C++ tiene la posibilidad de polimorfismo en tiempo
de compilacin mediante operadores.
Herencia: las clases de objetos no estn desligadas unas de otras,

sino que se relacionan entre s, formando una jerarqua. Los objetos


heredan las propiedades y el comportamiento de todas las clases a las que
pertenecen. La herencia organiza y facilita el polimorfismo y el
encapsulamiento permitiendo a los objetos ser definidos y creados como
tipos especializados de objetos preexistentes.
Esto suele hacerse agrupando los objetos en clases y las clases en rboles
que reflejan un comportamiento comn. Cuando un objeto pertenece a ms
de una clase se llama herencia mltiple, aunque esta caracterstica no est
soportada por algunos lenguajes como Java.

5. Diferencias con la programacin imperativa5.


La programacin imperativa condujo a mejoras de la tcnica de
programacin secuencial, tales como la programacin estructurada y
"refinamientos sucesivos", los mtodos modernos de diseo de software
orientado a objetos incluyen mejoras entre las que estn el uso de los
patrones de diseo, diseo por contrato, y lenguajes de modelado (ej:
UML).
Las principales diferencias son:
La POO es ms moderna, es una evolucin de la programacin
imperativa que plasma en el diseo de una familia de lenguajes conceptos
que existan previamente con algunos nuevos.
La POO se basa en lenguajes que soportan sintctica y
semnticamente la unin entre los tipos abstractos de datos y sus
operaciones (a esta unin se la suele llamar clase).
La POO incorpora en su entorno de ejecucin mecanismos tales como
el polimorfismo(capacidad del cdigo de un programa para ser utilizado con
diferentes tipos de datos) y el envo de mensajes entre objetos.
Con el tiempo se le fueron adjudicando problemas a la programacin
imperativa. Esos problemas fueron hacindose cada vez ms graves y antes
de la programacin orientada a objetos diversos autores encontraron
soluciones basadas en aplicar estrictas metodologas de trabajo. De esa
poca son los conceptos de cohesin y acoplamiento. De esos problemas se
destacan los siguientes:
Modelo mental anmalo. Nuestra imagen del mundo se apoya en los
seres, a los que asignamos nombres sustantivos, mientras la programacin
clsica se basa en el comportamiento, representado usualmente por verbos.

Apartado extrado de http://es.wikipedia.org/wiki/Orientado_a_objetos

Programacin orientada a objetos

Julia de Frutos
Eduardo Fernndez

Es difcil modificar y extender los programas, pues suele haber datos


compartidos por varios subprogramas, que introducen interacciones ocultas
entre ellos.
Es difcil mantener los programas. Casi todos los sistemas informticos
grandes tienen errores ocultos, que no surgen a la luz hasta despus de
muchas horas de funcionamiento.
Es difcil reutilizar los programas. Es prcticamente imposible
aprovechar en una aplicacin nueva las subrutinas que se disearon para
otra.
Es compleja la coordinacin y organizacin entre programadores para
la creacin de aplicaciones de media y gran envergadura.

En la programacin orientada a objetos pura no deben utilizarse llamadas


de subrutinas, nicamente mensajes.
Por ello, a veces recibe el nombre de programacin sin CALL, igual que la
programacin estructurada se llama tambin programacin sin GOTO.
Sin embargo, no todos los lenguajes orientados a objetos prohben la
instruccin CALL (o su equivalente), permitiendo realizar programacin
imperativa y orientada a objetos a la vez.

6. Lenguajes orientados a objetos

Ada: se usa en entornos en los que se necesita una gran seguridad y


fiabilidad, como en la defensa.
C++: est considerado como el lenguaje ms potente, debido a que
permite trabajar tanto a alto como a bajo nivel, aunque obliga a
hacer casi todo manualmente, al igual que C, lo que hace difcil
aprendizaje.
C#: combina el control a bajo nivel de lenguajes como C y la
velocidad de programacin de lenguajes como Visual Basic.
VB.NET: es una versin de Visual Basic destinada al desarrollo de
aplicaciones .NET. Visual Basic apareci en el ao 1991 como una
evolucin del QuickBasic que fabricaba Microsoft.
Clarion: est orientado a la programacin de aplicaciones de bases de
datos. Es compatible con una gran cantidad de ellas incluyendo
todas las de formato SQL, ADO, y XML, adems puede generar
salidas a HTML, XML, archivos de texto y PDF, entre otros.
Delphi: entorno de desarrollo de software diseado para
programacin general con especial nfasis en la programacin visual.
En Delphi se utiliza como lenguaje una versin moderna de Pascal
llamada Object Pascal. Es producido por Borland. Delphi da la
posibilidad de producir archivos ejecutables para Windows,
GNU/Linux y la plataforma .NET.
Eiffel: fue creado en 1985 por Bertrand Meyer. Se centra en la
construccin de software robusto. Su lenguaje es parecido al de
Pascal.

Programacin orientada a objetos

Julia de Frutos
Eduardo Fernndez

Java: fue desarrollado por James Gosling y sus compaeros de Sun


Microsystems al inicio de la dcada de 1990. A diferencia de los
lenguajes de programacin convencionales, Java es compilado en un
bytecode6 que es ejecutado por una mquina virtual Java. El lenguaje
toma mucha de su sintaxis de C y C++, pero tiene un modelo de
objetos mucho ms simple y elimina herramientas como los punteros.

Lexico: es un lenguaje en espaol que busca facilitar el aprendizaje y


la enseanza de la programacin orientada a objetos. Permite
experimentar con los algoritmos diseados sin tener que dedicar
meses a aprender un lenguaje de programacin.
Objective-C: Es el principal lenguaje de programacin en Mac OS X.
Mac OS X es el sistema operativo de la familia de ordenadores
Macintosh.
Ocaml: nace de la evolucin del lenguaje CAML, abreviacin de
Categorical Abstract Machine Language), al integrarsele la
programacin con objetos.
Oz: es un lenguaje multi-paradigma. Contiene la mayora de los
conceptos de los principales paradigmas de programacin, incluyendo
programacin lgica, funcional, imperativa, orientada a objetos, con
restricciones, distribuida y concurrente.
PHP: es un lenguaje de programacin usado generalmente para la
creacin de contenidos en webs. El nombre es el acrnimo recursivo
de "PHP: Hypertext Preprocessor", inicialmente PHP Tools, o,
Personal Home Page Tools. Se trata de un lenguaje interpretado.
PowerBuilder: herramienta de desarrollo de clase empresarial creada
por la empresa Sybase. PowerBuilder permite el desarrollo de
diferentes tipos de aplicaciones y componentes para arquitecturas
cliente/servidor, distribudas y Web. Las aplicaciones desarrolladas
con PowerBuilder solo pueden ser ejecutadas en el sistema operativo
Microsoft Windows, aunque cierto tipo de componenetes, llamados
componentes no visuales o NVOs, y que contienen slo lgica de
aplicacin, se pueden ejecutar en otros sistemas operativos como
Unix.
Python: es un lenguaje de programacin interpretado e interactivo,
capaz de ejecutarse en gran cantidad de plataformas. Creado por
Guido van Rossum en 1990, su nombre procede de la aficin de su
creador por los humoristas britnicos Monty Python. El principal
objetivo de este lenguaje es la facilidad, tanto de lectura, como de
diseo.
Ruby: es un lenguaje de programacin interpretado de muy alto
nivel. Fue creado en Japn en el ao 1993 por Yukihiro Matz
Matsumoto.
Smalltalk: es considerado como el primer de los lenguaje orientado a
objetos. Dentro de Smalltalk todo es un objeto, incluidos los nmeros
reales o el propio entorno Smalltalk.

Bytecode: cdigo intermedio, ms abstracto que el cdigo mquina. Habitualmente se lo trata como
a un fichero binario que contiene un programa ejecutable similar a un objeto, que es un fichero
binario que contiene cdigo mquina producido por el compilador.

Programacin orientada a objetos

Julia de Frutos
Eduardo Fernndez

No todos estos lenguajes son igualmente eficaces. Existen lenguajes


como OOCOBOL, OOLISP, OOPROLOG y Object REXX que han sido
desarrollados aadiendo a sus versiones anteriores las caractersticas de la
orientacin a objetos, como ya pasara con C++.

7. Conclusin.
Pese a los grandes ventajas que ofrece la programacin orientada a
objetos gracias a caractersticas propias como la herencia y la
encapsulacin, aun quedan problemas por solucionar. No hay un lenguaje
dominante que elimine la dependencia que existe entre unos y otros, y las
definiciones de las clases pueden resultar errneas despus de meses de
trabajo. Por otro lado, todos los elementos del programa deben de ser
vistos como objetos y la transicin a este tipo de programacin hace que
sea necesario el reciclaje de muchos de los programadores.
Aun as, las lneas de investigacin no se detienen y empieza a hablarse
de programacin orientada a aspectos (POA). Aunque es todava un
paradigma en estado embrionario, cada vez es mas gente la que se interesa
por ella.

8. Bibliografa.
http://es.wikipedia.org/wiki/Orientado_a_objetos
http://www.monografias.com/trabajos/objetos/objetos.shtml
http://www.desarrolloweb.com/articulos/499.php

También podría gustarte