You are on page 1of 18

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 disear aplicaciones y programas informticos. Est basado en varias tcnicas, incluyendo herencia, abstraccin, polimorfismo y encapsulamiento. Su uso se populariz a principios de la dcada de los aos 1990. En la actualidad, existe variedad de lenguajes de programacin que soportan la orientacin a objetos.

Contenido
[ocultar]

1 Introduccin 2 Origen 3 Conceptos fundamentales 4 Caractersticas de la POO 5 Resumen 6 Lenguajes orientados a objetos 7 Enlaces externos

[editar] Introduccin
Los objetos son entidades que tienen un determinado comportamiento (mtodo) e identidad:

El estado est compuesto de datos, ser uno o varios atributos a los que se habrn asignado unos valores concretos (datos). El comportamiento est definido por los mtodos o mensajes a los que sabe responder dicho objeto, es decir, qu operaciones se pueden realizar con l. La identidad es una propiedad de un objeto que lo diferencia del resto, dicho con otras palabras, es su identificador (concepto anlogo al de identificador de una variable o una constante).

Un objeto contiene 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, al poder tener valores bien diferenciados en sus atributos. A su vez, los objetos disponen de mecanismos de interaccin llamados mtodos, que favorecen la comunicacin entre ellos. Esta comunicacin favorece a su vez el cambio de estado en los propios objetos. Esta caracterstica lleva a tratarlos como unidades indivisibles, en las que no se separa el estado y el comportamiento.

Los mtodos (comportamiento) y atributos (estado) estn estrechamente relacionados por la propiedad de conjunto. Esta propiedad destaca que una clase requiere de mtodos para poder tratar los atributos con los que cuenta. El programador debe pensar indistintamente en ambos conceptos, sin separar ni darle mayor importancia a alguno de ellos. Hacerlo 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 los procedimientos 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 procedimientos o funciones, y en segundo lugar en las estructuras de datos que esos procedimientos 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 solicitndoles que realicen sus mtodos por s mismos.

[editar] Origen
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, que fueron confundidas por la explosin combinatoria de cmo las diversas cualidades de diferentes naves podan afectar unas a las otras. La idea surgi al 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, 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 "sobre la marcha" (en tiempo de ejecucin) en lugar de tener un sistema basado en programas estticos. La programacin orientada a objetos se fue convirtiendo en 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 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 ellas 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 haban venido 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, soporta una orientacin completa a objetos, cumpliendo todas las caractersticas propias de la orientacin a objetos.

[editar] Conceptos fundamentales


La programacin orientada a objetos es una forma de programar que trata de encontrar una solucin a estos problemas. Introduce nuevos conceptos, que superan y amplan conceptos antiguos ya conocidos. Entre ellos destacan los siguientes:

Clase: definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciacin es la lectura de estas definiciones y la creacin de un objeto a partir de ellas. Herencia: (por ejemplo, herencia de la clase C a la clase D) Es la facilidad mediante la cual la clase D hereda en ella cada uno de los atributos y operaciones de C, como si esos atributos y operaciones hubiesen sido definidos por la misma D. Por lo tanto, puede usar los mismos mtodos y variables publicas declaradas en C. Los componentes registrados como "privados" (private) tambin se heredan, pero como no pertenecen a la clase, se mantienen escondidos al programador y slo pueden ser accedidos a travs de otros mtodos pblicos. Esto es as para mantener hegemnico el ideal de OOP. Objeto: entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad (mtodos) los mismos que consecuentemente reaccionan a eventos. Se corresponde con los objetos reales del mundo que nos rodea, o a objetos internos del sistema (del programa). Es una instancia a una clase. Mtodo: Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecucin se desencadena tras la recepcin de un "mensaje". Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un mtodo puede producir un cambio en las propiedades del objeto, o la generacin de un "evento" con 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 adecuado 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 asociados al evento que lo gener. Propiedad o atributo: contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos), que hace los datos visibles desde fuera del objeto y esto se define como sus caractersticas predeterminadas, y cuyo valor puede ser alterado por la ejecucin de algn mtodo. Estado interno: es una variable que se declara privada, que puede ser nicamente accedida y alterada por un mtodo del objeto, y que se utiliza para indicar distintas situaciones posibles para el objeto (o clase de objetos). No es visible al programador que maneja una instancia de la clase. Componentes de un objeto: atributos, identidad, relaciones y mtodos.

Identificacin de un objeto: un objeto se representa por medio de una tabla o entidad que est compuesta por sus atributos y funciones correspondientes.

En comparacin con un lenguaje imperativo, una "variable", no es ms que un contenedor interno del atributo del objeto o de un estado interno, as como la "funcin" es un procedimiento interno del mtodo del objeto.

[editar] Caractersticas de la POO


Existe un acuerdo acerca de qu caractersticas contempla la "orientacin a objetos", las caractersticas siguientes son las ms importantes:

Abstraccin: denota las caractersticas esenciales de un objeto, donde se capturan sus comportamientos.Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el sistema sin revelar cmo se implementan estas caractersticas. Los procesos, las funciones o los mtodos pueden tambin ser abstrados y cuando lo estn, una variedad de tcnicas son requeridas para ampliar una abstraccin.El proceso de abstraccin permite seleccionar las caractersticas relevantes dentro de un conjunto e identificar comportamientos comunes para definir nuevos tipos de entidades en el mundo real. La abstraccin es clave en el proceso de anlisis y diseo orientado a objetos, ya que mediante ella podemos llegar a armar un conjunto de clases que permitan modelar la realidad o el problema que se quiere atacar. Encapsulamiento: Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstraccin. Esto permite aumentar la cohesin de los componentes del sistema. Algunos autores confunden este concepto con el principio de ocultacin, principalmente porque se suelen emplear conjuntamente. Modularidad: Se denomina Modularidad a la propiedad que permite subdividir una aplicacin en partes ms pequeas (llamadas mdulos), cada una de las cuales debe ser tan independiente como sea posible de la aplicacin en s y de las restantes partes. Estos mdulos se pueden compilar por separado, pero tienen conexiones con otros mdulos. Al igual que la encapsulacin, los lenguajes soportan la Modularidad de diversas formas. Principio de ocultacin: Cada objeto est aislado del exterior, es un mdulo natural, y cada tipo de objeto expone una interfaz a otros objetos que especifica cmo pueden interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un objeto contra su modificacin por quien no tenga derecho a acceder a ellas, solamente los propios mtodos internos del objeto pueden acceder a su estado. Esto asegura que otros objetos no pueden cambiar el estado interno de un objeto de maneras inesperadas, eliminando efectos secundarios e interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstraccin. La aplicacin entera se reduce a un agregado o rompecabezas de objetos.

Polimorfismo: comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre, al llamarlos por ese nombre se utilizar el comportamiento correspondiente al objeto que se est usando. O dicho de otro modo, las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos, y la invocacin de un comportamiento en una referencia producir el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto ocurre en "tiempo de ejecucin", esta ltima caracterstica se llama asignacin tarda o asignacin dinmica. Algunos lenguajes proporcionan medios ms estticos (en "tiempo de compilacin") de polimorfismo, tales como las plantillas y la sobrecarga de operadores de C++. Herencia: las clases no estn aisladas, sino que se relacionan entre s, formando una jerarqua de clasificacin. 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. Estos pueden compartir (y extender) su comportamiento sin tener que volver a implementarlo. Esto suele hacerse habitualmente agrupando los objetos en clases y estas en rboles o enrejados que reflejan un comportamiento comn. Cuando un objeto hereda de ms de una clase se dice que hay herencia mltiple. Recoleccin de basura: la recoleccin de basura o garbage collector es la tcnica por la cual el entorno de objetos se encarga de destruir automticamente, y por tanto desvincular la memoria asociada, los objetos que hayan quedado sin ninguna referencia a ellos. Esto significa que el programador no debe preocuparse por la asignacin o liberacin de memoria, ya que el entorno la asignar al crear un nuevo objeto y la liberar cuando nadie lo est usando. En la mayora de los lenguajes hbridos que se extendieron para soportar el Paradigma de Programacin Orientada a Objetos como C++ u Object Pascal, esta caracterstica no existe y la memoria debe desasignarse manualmente.

[editar] Resumen
La programacin orientada a objetos es un paradigma que utiliza objetos como elementos fundamentales en la construccin de la solucin. Surge en los aos 70. Un objeto es una abstraccin de algn hecho o ente del mundo real que tiene atributos que representan sus caractersticas o propiedades y mtodos que representan su comportamiento o acciones que realizan. Todas las propiedades y mtodos comunes a los objetos se encapsulan o se agrupan en clases. Una clase es una plantilla o un prototipo para crear objetos, por eso se dice que los objetos son instancias de clases.

[editar] Lenguajes orientados a objetos


Simula (1967) es aceptado como el primer lenguaje que posee las caractersticas principales de un lenguaje orientado a objetos. Fue creado para hacer programas de simulacin, en donde los "objetos" son la representacin de la informacin ms importante. Smalltalk (1972 a 1980) es posiblemente el ejemplo cannico, y con el que gran parte de la teora de la programacin orientada a objetos se ha desarrollado. Entre los lenguajes orientados a objetos se destacan los siguientes:

ABAP ABL Lenguaje de programacin de OpenEdge de Progress Software ActionScript ActionScript 3 Ada C++ C# Clarion Clipper (lenguaje de programacin) (Versin 5.x con librera de objetos Class(y)) D Object Pascal (Embarcadero Delphi) Gambas Harbour Eiffel Java JavaScript (la herencia se realiza por medio de la programacin basada en prototipos) Lexico (en castellano) 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 Python Ruby Smalltalk (Entorno de objetos puro) Magik (SmallWorld) Vala VB.NET Visual FoxPro (en su versin 6) Visual Basic 6.0 Visual DataFlex Visual Objects XBase++ Lenguaje DRP Lenguaje de programacin Scala (lenguaje usado por Twitter) http://www.scalalang.org/page.jsp

Muchos de estos lenguajes de programacin no son puramente orientados a objetos, sino que son hbridos que combinan la POO con otros paradigmas. Al igual que C++ otros lenguajes, como OOCOBOL, OOLISP, OOPROLOG y Object REXX, han sido creados aadiendo extensiones orientadas a objetos a un lenguaje de programacin clsico.

Un nuevo paso en la abstraccin de paradigmas de programacin es la Programacin Orientada a Aspectos (POA). Aunque es todava una metodologa en estado de maduracin, cada vez atrae a ms investigadores e incluso proyectos comerciales en todo el mundo.

Objeto (programacin)
Este artculo o seccin necesita referencias que aparezcan en una publicacin acreditada, como revistas especializadas, monografas, prensa diaria o pginas de Internet fidedignas.
Puedes aadirlas as o avisar al autor principal del artculo en su pgina de discusin pegando:
{{subst:Aviso referencias|Objeto (programacin)}} ~~~~

En el paradigma de programacin orientada a objetos (POO, o bien OOP en ingls), un objeto se define como la unidad que en tiempo de ejecucin realiza las tareas de un programa. Tambin a un nivel ms bsico se define como la instancia de una clase. Estos objetos interactan unos con otros, en contraposicin a la visin tradicional en la cual un programa es una coleccin de subrutinas (funciones o procedimientos), o simplemente una lista de instrucciones para el computador. Cada objeto es capaz de recibir mensajes, procesar datos y enviar mensajes a otros objetos de manera similar a un servicio. En el mundo de la programacin orientada a objetos (POO), un objeto es el resultado de la instanciacin de una clase. Una clase es el anteproyecto que ofrece la funcionalidad en ella definida, pero sta queda implementada slo al crear una instancia de la clase, en la forma de un objeto. Por ejemplo: dado un plano para construir sillas (una clase de nombre clase_silla), entonces una silla concreta, en la que podemos sentarnos, construida a partir de este plano, sera un objeto de clase_silla. Es posible crear (construir) mltiples objetos (sillas) utilizando la definicin de la clase (plano) anterior. Los conceptos de clase y objetos son anlogos a los de tipo de datos y variable, es decir, definida una clase podemos crear objetos de esa clase, igual que disponiendo de un determinado tipo de dato (por ejemplo el tipo entero), podemos definir variables de dicho tipo:
int a,b;

( 'int' es un tipo de dato y 'a' y 'b' son variables de tipo entero con las que podemos operar) Para utilizar la funcionalidad definida en una clase en particular (salvo en las clases abstractas), primeramente es necesario crear un objeto de esa clase. De la misma manera para una persona que desea sentarse, las especificaciones para construir una silla sern de poca utilidad; lo que se necesita es una silla real construida a partir de esas especificaciones. Siguiendo con la analoga anterior, tambin se puede decir que para hacer operaciones aritmticas, de nada sirve por s solo el tipo entero (int); para ello necesitamos variables (o constantes) con las que operar.

[editar] Definicin de Objeto


En filosofa un objeto es aquello que puede ser observado, estudiado y aprendido, en contraposicin a la representacin abstracta de ese objeto que se crea en la mente a travs del proceso de generalizacin. Un objeto en POO representa alguna entidad de la vida real, es decir, alguno de los objetos que pertenecen al negocio con que estamos trabajando o al problema con el que nos estamos enfrentando, y con los que podemos interactuar. A travs del estudio de ellos se adquiere el conocimiento necesario para, mediante la abstraccin y la generalizacin, agruparlos segn sus caractersticas en conjuntos, estos conjuntos determinan las clases de objetos con las que estamos trabajando. Primero existen los objetos, luego aparecen las clases en funcin de la solucin que estemos buscando. sta es la forma ms comn de adquirir conocimiento aunque no es la nica. En ocasiones cuando el observador es un experto del negocio (o del problema), el proceso puede ser a la inversa y comenzar el anlisis en una base terica abstracta, sustentada por el conocimiento previo que da lugar primeramente a clases de objetos que satisfagan las necesidades de la solucin. Estos conceptos son parte de la base terica de la idea de objeto y clase utilizados en la POO. Los objetos tienen caractersticas fundamentales que nos permiten conocerlos mediante la observacin, identificacin y el estudio posterior de su comportamiento; estas caractersticas son:

Identidad Comportamiento Estado

En las ramas de las ciencias de la computacin ms estrictamente matemticas, el trmino objeto es usado en sentido puramente matemtico para referirse a cualquier "cosa". Esta interpretacin resulta til para discutir sobre teoras abstractas, pero no es suficientemente concreta para servir como definicin de un tipo primitivo en discusiones de ramas ms especficas como en la programacin, que est ms cerca de clculos reales y el procesamiento de informacin.

[editar] Identidad
La identidad es la propiedad que permite a un objeto diferenciarse de otros. Generalmente esta propiedad es tal, que da nombre al objeto. Tomemos por ejemplo el "verde" como un objeto concreto de una clase color; la propiedad que da identidad nica a este objeto es precisamente su "color" verde. Tanto es as que para nosotros no tiene sentido usar otro nombre para el objeto que no sea el valor de la propiedad que lo identifica. En programacin la identidad de los objetos sirve para comparar si dos objetos son iguales o no. No es raro encontrar que en muchos lenguajes de programacin la identidad de un objeto est determinada por la direccin de memoria de la computadora en la que se

encuentra el objeto, pero este comportamiento puede ser variado redefiniendo la identidad del objeto a otra propiedad.

[editar] Comportamiento
El comportamiento de un objeto est directamente relacionado con su funcionalidad y determina las operaciones que este puede realizar o a las que puede responder ante mensajes enviados por otros objetos. La funcionalidad de un objeto est determinada, primariamente, por su responsabilidad. Una de las ventajas fundamentales de la POO es la reusabilidad del cdigo; un objeto es ms fcil de reutilizarse en tanto su responsabilidad sea mejor definida y ms concreta. Una tarea fundamental a la hora de disear una aplicacin informtica es definir el comportamiento que tendrn los objetos de las clases involucradas en la aplicacin, asociando la funcionalidad requerida por la aplicacin a las clases adecuadas.

[editar] Estado
El estado de un objeto se refiere al conjunto de los valores de sus atributos en un instante de tiempo dado. El comportamiento de un objeto puede modificar el estado de este. Cuando una operacin de un objeto modifica su estado se dice que esta tiene "efecto colateral". Esto tiene especial importancia en aplicaciones que crean varios hilos de ejecucin. Si un objeto es compartido por varios hilos y en el transcurso de sus operaciones estas modifican el estado del objeto, es posible que se deriven errores del hecho de que alguno de los hilos asuma que el estado del objeto no cambiar (Vase Condicin de carrera).

[editar] Representacin en las computadoras


Los objetos aunque son entidades conceptuales, dado el diseo de las computadoras, se corresponde directamente con bloques de memoria de tamao y localizacin especficos. Esto ocurre porque los clculos y el procesamiento de la informacin en ltima instancia requieren de una representacin en la memoria de la computadora. En este sentido, los objetos son primitivas fundamentales necesarias para definir de forma precisa conceptos como referencias, variables y vinculacin de nombres. En ciencias de la computacin se utiliza cotidianamente la interpretacin ms concreta de objeto en lugar de las ms abstractas sin que esto sea considerado un error. Es preciso hacer notar que aunque un bloque de memoria puede aparecer contiguo en un nivel de abstraccin y no contiguo en otro, lo importante es que este aparece contiguo para el programa, quien lo trata como un objeto. Por este motivo, los detalles de implementacin privados de un modelo de objetos, no deben ser expuestos al cliente del objeto, y estos pueden ser cambiados sin que se requieran cambios al cdigo cliente. Los objetos en la computadora existen entonces, slo dentro de contextos capaces de reconocerlos; un espacio de memoria slo contiene un objeto si un programa lo trata como

tal (por ejemplo, reservndolo para uso exclusivo de un procedimiento especfico y/o asocindole un tipo de dato). As, el tiempo de vida de un objeto es el tiempo durante el cual este es tratado como un objeto. Es por esto que los objetos son entidades conceptuales, a pesar de su presencia fsica en la memoria de la computadora. En otras palabras, los conceptos abstractos que no ocupen espacio de memoria en tiempo de ejecucin, no son, de acuerdo con esta definicin, objetos. Ejemplos de estos conceptos son: patrones de diseo exhibidos por un conjunto de clases y tipos de datos en lenguajes de programacin que utilizan tipos estticos. Se llama objeto fantasma a un objeto que no es referenciado en un programa, y que por tanto no sirve a ningn propsito. En un lenguaje que posea un recolector de basura, este marcar la memoria ocupada por el objeto como libre, aunque sta todava contendr los datos del objeto hasta el momento que sea reescrita.

[editar] Objetos en la programacin orientada a objetos


En programacin orientada a objetos (POO), una instancia de programa (por ejemplo un programa ejecutndose en una computadora) es tratado como un conjunto dinmico de objetos interactuando entre s. Los objetos en la POO extienden la nocin ms general descrita en secciones anteriores para modelar un tipo muy especfico que est definido fundamentalmente por: 1. atributos que representan los datos asociados al objeto, o lo que es lo mismo sus propiedades o caractersticas. Los atributos y sus valores en un momento dado, determinan el estado de un objeto. 2. mtodos que acceden a los atributos de una manera predefinida e implementan el comportamiento del objeto. Los atributos y mtodos de un objetos estn definidos por su clase, aunque (en un lenguaje dinmico como Python o Ruby) una instancia puede poseer atributos que no fueron definidos en su clase. Algo similar ocurre con los mtodos, una instancia puede contener mtodos que no estn definidos en su clase de la misma manera una clase puede declarar ciertos mtodos como "mtodos de clase", y estos (en dependencia del lenguaje) podrn estar o no presentes en la instancia. En el caso de la mayora de los objetos, los atributos solo pueden ser accedidos a travs de los mtodos, de esta manera es ms fcil garantizar que los datos permanecern siempre en un estado bien definido (Invariante de Clase). En un lenguaje en el que cada objeto es creado a partir de una clase, un objeto es llamado una instancia de esa clase. Cada objeto pertenece a un tipo y dos objetos que pertenezcan a la misma clase tendrn el mismo tipo de dato. Crear una instancia de una clase es entonces referido como instanciar la clase.

En casi todos los lenguajes de programacin orientados a objeto, el operador "punto" (.) es usado para referirse o "llamar" a un mtodo particular de un objeto. Un ejemplo de lenguaje que no siempre usa este operador el C++ ya que para referirse a los mtodos de un objeto a travs de un puntero al objeto se utiliza el operador (->). Consideremos como ejemplo una clase aritmtica llamada Aritmtica. Esta clase contiene mtodos como "sumar", "restar", "multiplicar", "dividir", etc. que calculan el resultado de realizar estas operaciones sobre dos nmeros. Un objeto de esta clase puede ser utilizado para calcular el producto de dos nmeros, pero primeramente sera necesario definir dicha clase y crear un objeto. En las secciones a continuacin se muestra como hacer esto utilizando dos lenguajes de programacin: C++ y Python.

[editar] Declaracin de una clase


Esta clase podra ser definida de la siguiente manera en C++:
class Aritmetica { public: inline int sumar (int a, int b) const { return a + b; } inline int restar (int a, int b) const { return a - b; } inline float multiplicar (int a, int b) const { return a * b; } inline float dividir (int a, int b) const { return a / b; } };

o como sigue en Python:


class Aritmetica: def sumar(self, a, b): return a + b def restar(self, a, b): return a - b def multiplicar(self, a, b):

return a * b def dividir(self, a, b): return a / b

[editar] Instanciacin de una clase en un objeto


Para crear un objeto de tipo 'Aritmetica' (instanciar a Aritmetica) en C++ se hara de la siguiente forma:
Aritmetica calculador = Aritmetica(); #Otra manera usando punteros Aritmetica* calculador1 = new Aritmetica();

la misma operacin usando python sera as:


calculador = Aritmetica()

[editar] Operando con un objeto


Una vez que tenemos un objeto de 'Aritmetica', podemos usarlo para realizar clculos sobre dos nmeros. En C++ contamos con dos objetos de ejemplo: "calculador" y "calculador1", en esta ltima variable en realidad hemos almacenado la direccin de memoria del objeto creado. En este lenguaje esto sienta diferencias a la hora de utilizar el objeto. Para calcular la suma entre 78 y 69 usando un objeto "calculador" necesitaramos un cdigo como el siguiente en C++:
int resultado = 0; resultado = calculador.sumar(78, 69); #Otra manera usando punteros resultado = calculador1->sumar(78, 69);

ahora usando Python para sumar dos nmeros con el objeto calculador:
resultado = calculador.sumar(78, 69)

Otro ejemplo del mundo real de un objeto podra ser "mi perro", el cual es una instancia de un tipo (una clase) llamada "perro", la que es una subclase de la clase "animal". En el caso de un objeto polimrfico, algunos detalles de su tipo pueden ser ignorados, por ejemplo el objeto "mi perro" puede ser usado en un mtodo que espera recibir un "animal". Tambin podra usarse un objeto "gato", puesto que esta tambin pertenece a la clase "animal". Pero mientras es accedido como un "animal", algunos atributos de un "perro" o un "gato" permanecern no disponibles, como la "cola", porque no todos los animales tienen colas. [editar] Atributos dinmicos en objetos

Python y C++ son lenguajes con caractersticas muy diferentes. Python utiliza un sistema de tipos dinmico y C++ en cambio, uno esttico o estricto. El sistema de tipos usado en Python permite al programador agregar atributos a una instancia que no han sido definidos en la clase que le dio origen, cosa que no es posible hacer en un lenguaje como C++, por ejemplo: La clase siguiente en Python no define ningn atributo:
class Prueba(object): pass

pero es posible hacer lo siguiente:


1: 2: 3: 4: p = Prueba() p.unNumero = 3 print("Atributo unNumero de p = %s" % p.unNumero) Atributo unNumero de p = 3

A la instancia de p creada en la lnea 1, le es asignado en la lnea 2 el valor "3", lo cual crea un atributo de nombre unNumero en p de tipo "int" para almacenar el nmero 3.

[editar] Relaciones entre objetos


Como ya se ha dicho antes, un sistema orientado a objetos est caracterizado por objetos que interactan entre si. Estas interacciones supone ciertos tipos de relaciones entre los objetos del sistema. La semntica que expresa un objeto en el sistema est determinado en primer lugar, por las relaciones que ste establece con otros objetos o conjunto de objetos. Tomemos como ejemplo un objeto fecha, del que sin establecer ningn tipo de relacin, podra decirse que significa un da del ao particular. Pero si relacionamos ese objeto fecha con un objeto Persona de manera que represente la fecha en que esa persona naci, en ese contexto dado, el mismo objeto fecha adoptara un significado diferente, el de un cumpleaos, aunque sigue siendo una fecha, ahora tiene otra idea asociada. Las relaciones entre objetos no solo estn definidas por los objetos que participan y la circunstancia que los relaciona, sino tambin por la cantidad de objetos (cardinalidad de la relacin) y la direccin de la misma. Una relacin puede tener cardinalidad:

uno a uno, ejemplo: un auto tiene un motor uno a muchos, ejemplo: un auto tiene muchas ruedas muchos a muchos, ejemplo: un auto se puede servir en muchas gasolineras y una gasolinera puede servir a muchos autos.

y direccionalidad:

unidireccional, ejemplo: un auto tiene cuatro ruedas. bidireccional

Las relaciones entre objetos ms generales son las siguientes:

[editar] Composicin
La composicin (tambin conocida como relacin asociativa) es un tipo de relacin que se establece entre dos objetos que tienen comunicacin persistente. Se utiliza para expresar que un par de objetos tienen una relacin de dependencia para llevar a cabo su funcin, de modo que uno de los objetos involucrados est compuesto por el otro. De manera prctica, es posible reconocer asociatividad entre dos objetos A y B si la proposicin "A tiene un B" (o viceversa) es verdadera. Por ejemplo: "una computador tiene un disco duro" es verdadero, por tanto un objeto computador tiene una relacin de composicin con al menos un objeto disco duro.

[editar] Uso
Un objeto usa (conoce) a otro cuando puede enviarle mensajes, por ejemplo, para requerir de este algn servicio. La composicin puede verse como un caso particular de esta relacin.

[editar] Delegacin
En ocasiones para lograr flexibilidad de diseo, un objeto es implementado de forma tal que este delegue parte de su funcionalidad en otro objeto. Esto es muy comn en aplicaciones que hacen uso de interfaces grficas de usuario, en las que los controles grficos generales delegan la accin que se ejecutar ante determinado estmulo en otro objeto.

[editar] Objetos especializados


Algunos trminos para tipos especializados de objetos son:

Singleton: Un objeto del que solo puede existir una nica instancia de su clase durante el tiempo de vida del programa. Functor : un objeto que puede ser utilizado como una funcin. Objeto inmutable: un objeto creado con un estado fijo y que no puede variar en el tiempo de vida del mismo. Objeto de primera clase: un objeto que puede ser utilizado sin restricciones. Contenedor: un objeto que contiene a otros objetos. Fbrica de objetos: un objeto cuyo propsito es crear otros objetos. Metaobjeto: un objeto a partir del cual se pueden crear otros objetos (comparable con una clase, la que no necesariamente es un objeto) Prototipo: un metaobjeto especializado a partir del cual se pueden crear otros objetos copindolo. Objeto todopoderoso: un objeto que sabe mucho o hace mucho. Este es un ejemplo de antipatrn de diseo. Antiobjeto: una metfora computacional til para conceptualizar y solucionar problemas complejos, usualmente con aproximaciones paralelas.

EJEMPLOS DE PROGRAMACION DE OBJETOS


Avion Atributos: tiene alas, turbinas, llantas, ventanillas, cuerpo metalico,, asientos, color. etc. Comportamiento: vuela, transporta cargas pesadas aereamente., Perro Atributos: tiene cola, pelo, hocico, patas, colmillos, etc. Comportamiento: ladra, muerde, cuida las casas Camara: Atributos: tiene flahs, lente, botones, cubierta, bocinas Comportamiento: Toma Fotos, videos, audio. Automovil Atributos: tiene llantas, motor, escape, calaveras, volante, palancas, chasis, carroceria etc. Comportamiento: transporte terrestre de personas y cosas. Computadora Atributos: tiene teclado, mouse, monitor, chips, memoria, disco duro, procesador, tarjetas de video, tarjetas de audio etc. Comportamiento: Realiza trabajos, estadisticas, procesa datos, hace calculos, organiza, etc. La programacin Orientada a objetos (POO) es una forma especial de programar, ms cercana a como expresaramos las cosas en la vida real que otros tipos de programacin. Con la POO tenemos que aprender a pensar las cosas de una manera distinta, para escribir nuestros programas en trminos de objetos, propiedades, mtodos y otras cosas que veremos rpidamente para aclarar conceptos y dar una pequea base que permita soltarnos un poco con este tipo de programacin. Motivacin Durante aos, los programadores se han dedicado a construir aplicaciones muy parecidas que resolvan una y otra vez los mismos problemas. Para conseguir que los esfuerzos de los programadores puedan ser utilizados por otras personas se cre la POO. Que es una serie de normas de realizar las cosas de manera que otras personas puedan utilizarlas y adelantar su trabajo, de manera que consigamos que el cdigo se pueda reutilizar. La POO no es difcil, pero es una manera especial de pensar, a veces subjetiva de quien la programa, de manera que la forma de hacer las cosas puede ser diferente segn el programador. Aunque podamos hacer los programas de formas distintas, no todas ellas son correctas, lo difcil no es programar orientado a objetos sino programar bien. Programar bien es importante porque as nos podemos aprovechar de todas las ventajas de la POO. Cmo se piensa en objetos Pensar en trminos de objetos es muy parecido a cmo lo haramos en la vida real. Por ejemplo vamos a pensar en un coche para tratar de modelizarlo en un esquema de POO. Diramos que el coche es el elemento principal que tiene una serie de caractersticas, como podran ser el color, el modelo o la marca. Adems tiene una

serie de funcionalidades asociadas, como pueden ser ponerse en marcha, parar o aparcar. Pues en un esquema POO el coche sera el objeto, las propiedades seran las caractersticas como el color o el modelo y los mtodos seran las funcionalidades asociadas como ponerse en marcha o parar. Por poner otro ejemplo vamos a ver cmo modelizaramos en un esquema POO una fraccin, es decir, esa estructura matemtica que tiene un numerador y un denominador que divide al numerador, por ejemplo 3/2. La fraccin ser el objeto y tendr dos propiedades, el numerador y el denominador. Luego podra tener varios mtodos como simplificarse, sumarse con otra fraccin o nmero, restarse con otra fraccin, etc. Estos objetos se podrn utilizar en los programas, por ejemplo en un programa de matemticas hars uso de objetos fraccin y en un programa que gestione un taller de coches utilizars objetos coche. Los programas Orientados a objetos utilizan muchos objetos para realizar las acciones que se desean realizar y ellos mismos tambin son objetos. Es decir, el taller de coches ser un objeto que utilizar objetos coche, herramienta, mecnico, recambios, etc. Clases en POO Las clases son declaraciones de objetos, tambin se podran definir como abstracciones de objetos. Esto quiere decir que la definicin de un objeto es la clase. Cuando programamos un objeto y definimos sus caractersticas y funcionalidades en realidad lo que estamos haciendo es programar una clase. En los ejemplos anteriores en realidad hablbamos de las clases coche o fraccin porque slo estuvimos definiendo, aunque por encima, sus formas. Propiedades en clases Las propiedades o atributos son las caractersticas de los objetos. Cuando definimos una propiedad normalmente especificamos su nombre y su tipo. Nos podemos hacer a la idea de que las propiedades son algo as como variables donde almacenamos datos relacionados con los objetos. Mtodos en las clases Son las funcionalidades asociadas a los objetos. Cuando estamos programando las clases las llamamos mtodos. Los mtodos son como funciones que estn asociadas a un objeto. Objetos en POO Los objetos son ejemplares de una clase cualquiera. Cuando creamos un ejemplar tenemos que especificar la clase a partir de la cual se crear. Esta accin de crear un objeto a partir de una clase se llama instanciar (que viene de una mala traduccin de la palabra instace que en ingls significa ejemplar). Por ejemplo, un objeto de la clase fraccin es por ejemplo 3/5. El concepto o definicin de fraccin sera la clase, pero cuando ya estamos hablando de una fraccin en concreto 4/7, 8/1000 o cualquier otra, la llamamos objeto. Para crear un objeto se tiene que escribir una instruccin especial que puede ser distinta dependiendo el lenguaje de programacin que se emplee, pero ser algo parecido a esto. miCoche = new Coche()

Con la palabra new especificamos que se tiene que crear una instancia de la clase que sigue a continuacin. Dentro de los parntesis podramos colocar parmetros con los que inicializar el objeto de la clase coche. Estados en objetos Cuando tenemos un objeto sus propiedades toman valores. Por ejemplo, cuando tenemos un coche la propiedad color tomar un valor en concreto, como por ejemplo rojo o gris metalizado. El valor concreto de una propiedad de un objeto se llama estado. Para acceder a un estado de un objeto para ver su valor o cambiarlo se utiliza el operador punto. miCoche.color = rojo El objeto es miCoche, luego colocamos el operador punto y por ltimo el nombre e la propiedad a la que deseamos acceder. En este ejemplo estamos cambiando el valor del estado de la propiedad del objeto a rojo con una simple asignacin. Mensajes en objetos Un mensaje en un objeto es la accin de efectuar una llamada a un mtodo. Por ejemplo, cuando le decimos a un objeto coche que se ponga en marcha estamos pasndole el mensaje ponte en marcha. Para mandar mensajes a los objetos utilizamos el operador punto, seguido del mtodo que deseamos invocar. miCoche.ponerseEnMarcha() En este ejemplo pasamos el mensaje ponerseEnMarcha(). Hay que colocar parntesis igual que cualquier llamada a una funcin, dentro iran los parmetros. Otras cosas Hay mucho todava que conocer de la POO ya que slo hemos hecho referencia a las cosas ms bsicas. Tambin existen mecanismos como la herencia y el polimorfismo que son unas de las posibilidades ms potentes de la POO. La herencia sirve para crear objetos que incorporen propiedades y mtodos de otros objetos. As podremos construir unos objetos a partir de otros sin tener que reescribirlo todo. El polimorfismo sirve para que no tengamos que preocuparnos sobre lo que estamos trabajando, y abstraernos para definir un cdigo que sea compatible con objetos de varios tipos. Son conceptos avanzados que cuesta explicar en las lneas de ese informe. No hay que olvidar que existen libros enteros dedicados a la POO y aqu solo pretendemos dar un repaso a algunas cosas para que os suenen cuando tengis que poneros delante de ellas en los lenguajes de programacin que debe conocer un desarrollador del web. Ejemplo concreto de programacin orientada a objetos Para conseguir un ejemplo concreto de lo que es la programacin orientada a objetos, podemos entrar en el Manual de PHP 5. Realmente este manual explica las caractersticas de orientacin a objetos de PHP 5 y ofrece ejemplos concretos de creacin de clases con caractersticas como herencia, polimorfismo, etc.

Nota: la orientacin a objetos es una manera de programar que trata de modelar los procesos de programacin de una manera cercana a la realidad: tratando a cada componente de un programa como un objeto con sus caractersticas y funcionalidades.

You might also like