Вы находитесь на странице: 1из 6

LENGUAJE DE PROGRAMACION ORIENTADO A OBJETOS

POO

POO
Introduccin a la Programacin Orientada a Objetos

La programacin orientada a objetos o POO (OOP segn sus siglas en ingls) es un paradigma de programacin que usa objetos y sus interacciones, para representar el mundo real y disear aplicaciones y programas para el computador. Est basado en varias caractersticas tpicas, incluyendo herencia, modularidad, polimorfismo y encapsulamiento. Las tcnicas orientadas a objetos se popularizaron a inicios de la dcada de los 90. Hoy en da, existe amplia variedad de lenguajes de programacin que soportan la orientacin a objetos. Un objeto es en realidad un conjunto atributos y funciones, donde estas ltimas afectan el contenido de los atributos. Un objeto representa un determinado concepto del mundo real. De este modo, los objetos son entidades que combinan : estado (atributo), comportamiento (mtodos) e identidad

El estado de un objeto es determinado por los valores almacenados en sus atributos en un momento dado. La modificacin de los valores de estos atributos definen un cambio de estado en el objeto. El comportamiento de un objeto est definido por sus operaciones o mtodos, de este modo si un objeto salta(), corre(), ladra(), muerde(), etc podramos llegar a la conclusin que este objeto se comporta como un perro. Se dice tambin que la variacin del comportamiento afecta el estado de un objeto. Por ejemplo, para el objeto avin Fokker 1210, si su altura es 0 metros, podemos decir que est en reposo, pero si ejecutamos el mtodo ascender(5000), entonces el estado del avin a cambiado a esta en vuelo y a una altura de 5000 pies. La identidad es una propiedad que nos indica que no existen dos objetos iguales. Pueden existir dos Carlos Arrieta, pero son dos personas distintas.

La programacin orientada a objetos, define un programa que administra un conjunto de estos objetos, los cuales colaboran entre s para realizar tareas. Esto permite hacer los programas de naturaleza modular, ms fciles de escribir, mantener, y reutilizar. Un objeto contiene en sus atributos toda la informacin que permite definirlo e identificarlo frente a otros objetos pertenecientes a otras clases e incluso frente a objetos de una misma clase, en realidad son valores contenidos en los atributos, quienes marcan la diferencia. A su vez, los objetos disponen de mecanismos de interaccin entre ellos llamados mtodos, que favorecen su comunicacin. Esta comunicacin favorece a su vez el cambio de estado en los propios objetos.

Ing. Juan Vera Castillo (juanfvera@gmail.com)

Pgina 1

LENGUAJE DE PROGRAMACION ORIENTADO A OBJETOS

POO

Esta caracterstica lleva a tratarlos como unidades indivisibles, en las que no se pueden separar el estado y el comportamiento (encapsulamiento). Los mtodos (comportamiento) y atributos (estado) estn estrechamente relacionados por la propiedad de encapsulamiento. Esta propiedad destaca que una clase requiere de mtodos para poder manipular sus atributos. El programador debe pensar indistintamente en ambos conceptos (atributos y comportamiento), sin separar ni darle mayor importancia a alguno de ellos. Hacerlo, es decir separarlos, podra producir el hbito errneo de crear clases contenedoras de informacin por un lado y clases con mtodos que manejen a las primeras por el otro. De esta manera se estara realizando una programacin estructurada camuflada en un lenguaje de programacin orientado a objetos. La POO difiere de la programacin estructurada tradicional, en la que los datos y las funciones estn separados y sin relacin, ya que lo nico que se busca es el procesamiento de unos datos de entrada para obtener otros de salida. La programacin estructurada anima al programador a pensar sobre todo en trminos de funciones, y en segundo lugar en las estructuras de datos que estas funciones manejan. En la programacin estructurada slo se escriben funciones que procesan datos. Los programadores que emplean POO, en cambio, primero definen objetos para luego enviarles mensajes (llamada de funciones) solicitndoles que realicen una determinado trabajo.

UN POCO DE HISTORIA
Los conceptos de la programacin orientada a objetos tienen origen en Simula 67, un lenguaje diseado para hacer simulaciones, creado por Ole-Johan Dahl y Kristen Nygaard del Centro de Cmputo Noruego en Oslo. En este centro, se trabajaba en simulaciones de naves, en sus combinaciones y cmo las diversas cualidades de diversas naves podan afectar unas a las otras. La idea era agrupar los diversos tipos de naves en diversas clases de objetos, siendo responsable cada clase de objetos de definir sus propios datos y comportamientos. Fueron refinados ms tarde en Smalltalk, que fue desarrollado en Simula en Xerox PARC (cuya primera versin fue escrita sobre Basic) pero diseado para ser un sistema completamente dinmico en el cual los objetos se podran crear y modificar "en marcha" (en tiempo de ejecucin) en lugar de tener un sistema basado en programas estticos. La programacin orientada a objetos tom posicin como el estilo de programacin dominante a mediados de los aos ochenta, en gran parte debido a la influencia de C++, una extensin del lenguaje de programacin C. Su dominacin fue consolidada gracias al auge de las Interfaces grficas de usuario, para las cuales la programacin orientada a objetos est particularmente
Ing. Juan Vera Castillo (juanfvera@gmail.com) Pgina 2

LENGUAJE DE PROGRAMACION ORIENTADO A OBJETOS

POO

bien adaptada. En este caso, se habla tambin de programacin dirigida por eventos. Las caractersticas de orientacin a objetos fueron agregadas a muchos lenguajes existentes durante ese tiempo, incluyendo Ada, BASIC, Lisp, Pascal, entre otros. La adicin de estas caractersticas a los lenguajes que no fueron diseados inicialmente para ser orientados a objetos, condujo a menudo a problemas de compatibilidad y en la capacidad de mantenimiento del cdigo. Los lenguajes orientados a objetos "puros", por su parte, carecan de las caractersticas de las cuales muchos programadores se haban acostumbrado a depender. Para saltar este obstculo, se hicieron muchas tentativas para crear nuevos lenguajes basados en mtodos orientados a objetos, pero permitiendo algunas caractersticas imperativas de maneras "seguras". El Eiffel de Bertrand Meyer fue un temprano y moderadamente acertado lenguaje con esos objetivos pero ahora ha sido esencialmente reemplazado por Java, en gran parte debido a la aparicin de Internet, y a la implementacin de la mquina virtual de Java en la mayora de navegadores. PHP en su versin 5 se ha modificado y soporta una orientacin completa a objetos, cumpliendo todas las caractersticas propias de la orientacin a objetos.

Conceptos
Clase : Es una abstraccin que representa a un conjunto de objetos que poseen atributos y comportamiento comunes. Por ejemplo los jvenes Luis, Nancy, Carlos, Mery, Ruth pertenecen a la clase Alumno. De este modo todos estos objetos poseen como atributos cdigo, nombre, apellido, direccin y sus mtodos que definen su comportamiento podran ser : estudia(curso), rindeParcial(curso), seMatricula(curso), etc. Las clases son tiles para instanciar (crear) objetos. Objeto : entidad provista de un conjunto de propiedades o atributos que pueden albergar datos y de un comportamiento definido por sus mtodos, los mismos que consecuentemente reaccionan a eventos. Los objetos representan entes del mundo real que nos rodea, o a objetos internos del sistema (del programa). Un objeto siempre ser la instancia de alguna clase. Herencia : La idea de la herencia es permitir la creacin de nuevas clases basadas en clases existentes. Cuando una nueva clase hereda una clase existente, reusamos (o heredamos) mtodos y atributos. La nueva clase puede agregar sus propios atributos y mtodos, de este modo la nueva clase posee sus propios atributos y mtodos y adems los ya heredados.
Ing. Juan Vera Castillo (juanfvera@gmail.com) Pgina 3

LENGUAJE DE PROGRAMACION ORIENTADO A OBJETOS

POO

La clase ya existente es conocida como superclase, clase base, o clase padre. La nueva clase se conoce como subclase, clase derivada, o clase hija. Para identificar si existe una relacin de herencia entre dos clases, debemos comprobar si aplica entre ellas la expresin "es un" o "es una". Por ejemplo las clases Persona y Empleado, existir entre ellas una relacin de herencia ? Para saberlo simplemente preguntamos : Un Empleado ES UNA Persona ? Evidentemente es cierto, entonces hay relacin de herencia y se dibuja as : (notacin UML) Otro ejemplo, nos preguntamos : Un auto ES UN vehculo ? Evidentemente es cierto, entonces hay Relacin de herencia :

Mtodo : Es una funcin que contiene un Algoritmo, cuya ejecucin se desencadena tras la recepcin de un "mensaje". Para ejecutar un mtodo, debemos instanciar la clase que contiene ese mtodo, usando para ello un puntero, conocido en Java como referencia. Por ejemplo, se tiene la clase cuentaBancaria y se desea depositar 1200 soles en esta cuenta:

Declaro un puntero o referencia de esta clase, por ejemplo pCuenta : cuentaBancaria pCuenta; Con esta referencia, instancio un objeto a partir de la clase cuentaBancaria : pCuenta = new cuentaBancaria(); como se interpreta esta instruccin Java ?
Ing. Juan Vera Castillo (juanfvera@gmail.com) Pgina 4

LENGUAJE DE PROGRAMACION ORIENTADO A OBJETOS

POO

Bueno, empezando por el lado derecho del signo igual (=) : = new cuentaBancaria(); Significa que se ha creado (instanciado) un objeto en la memoria RAM, y grficamente esto lo podramos imaginar como :

El lado izquierdo del signo igual (=) : pCuenta = Es el puntero o referencia que apunta al objeto instanciado :

As ya puedo ejecutar el mtodo depositar() para guardar 1200 soles, as : pCuenta depositar(1200); Despus de esto, de hecho el saldo cambi y se aument en 1200 soles Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un mtodo est diseado para producir un cambio en las propiedades del objeto, o puede emitir un nuevo mensaje para otro objeto del sistema. Evento: Es un suceso en el sistema (tal como una interaccin del usuario con la mquina, o un mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje al objeto pertinente. Tambin se puede definir como evento, a la reaccin que puede desencadenar un objeto, es decir la accin que genera. Mensaje: una comunicacin dirigida a un objeto, que le ordena que ejecute uno de sus mtodos con ciertos parmetros o no asociados al evento que lo gener. En trminos sencillos un mensaje es la llamada a un mtodo

Ing. Juan Vera Castillo (juanfvera@gmail.com)

Pgina 5

LENGUAJE DE PROGRAMACION ORIENTADO A OBJETOS

POO

Propiedades o atributos : Son las variables de la clase, asociados a un objeto, y son accesibles desde fuera del objeto mediante los mtodos del objeto. Se definen como las caractersticas del objeto, y cuyos valores pueden ser alterados por la ejecucin de algn mtodo. Entre los lenguajes orientados a objetos se destacan los siguientes: ABAP ABL Lenguaje de programacin de OpenEdge de Progress Software Ada C++ C# Clarion Clipper (lenguaje de programacin) (Versin 5.x con librera de objetos Class(y)) D Object Pascal (Delphi) Gambas Harbour Eiffel Java Objective-C Ocaml Oz R Perl (soporta herencia mltiple. La resolucin se realiza en preorden, pero puede modificarse al algoritmo linearization C3 por medio del mdulo Class::C3 en CPAN) PHP (a partir de su versin 5) PowerBuilder (Todas la Versiones) Python Ruby Smalltalk (Proyecto investigativo. Influenci a Java.) Magik (SmallWorld) Vala VB.NET Visual Objects XBase++ Lenguaje DRP

Ing. Juan Vera Castillo (juanfvera@gmail.com)

Pgina 6