Você está na página 1de 7

Programacin orientada a objetos

Julia de Frutos Eduardo Fernndez

Programacin orientada a objetos


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.

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 .NET4 de Microsoft.

1.

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.

2. 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.

3.

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.
5

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.

4. 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. Java: fue desarrollado por James Gosling y sus compaeros de Sun Microsystems al inicio de la dcada de 1990. A diferencia de los

Programacin orientada a objetos

Julia de Frutos Eduardo Fernndez

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++.

5. 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.

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

Você também pode gostar