Programacin Orientada a Objetos 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. Ejemplo 2 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. CARACTERISTICAS MODULARIDAD El aporte ms importante que hizo el diseo estructurado fue la idea de que, para resolver un problema complejo de desarrollo de software, conviene separarlo en partes ms pequeas, que se puedan disear, desarrollar, probar y modificar, de manera sencilla y lo ms independientemente posible del resto de la aplicacin. Esas partes, cuando se quiere usar un nombre genrico, habitualmente se denominan mdulos. De all que otro nombre para la programacin estructurada, luego cado en desuso, fue programacin modular. COHESION La cohesin tiene que ver con que cada mdulo del sistema se refiera a un nico proceso o entidad. A mayor cohesin, mejor: el mdulo en cuestin ser ms sencillo de disear, programar, probar y mantener. En el diseo estructurado, se logra alta cohesin cuando cada mdulo (funcin o procedimiento) realiza una nica tarea trabajando sobre una sola estructura de datos. ABSTRACCION Son las caractersticas especificas de un objeto, aquellas que lo distinguen de los dems tipos de objetos y que logran definir lmites conceptuales respecto a quien est haciendo dicha abstraccin del objeto. ACOPLAMIENTO El acoplamiento mide el grado de relacionamiento de un mdulo con los dems. A menor acoplamiento, mejor: el mdulo en cuestin ser ms sencillo de disear, programar, probar y mantener. TECNICAS HERENCIA La herencia es especfica de la programacin orientada a objetos, donde una clase nueva se crea a partir de una clase existente. La herencia (a la que habitualmente se denomina subclase) proviene del hecho de que la subclase (la nueva clase creada) contiene las atributos y mtodos de la clase primaria. POLIMORFISMO El polimorfismo se refiere a la propiedad por la que es posible enviar mensajes sintcticamente iguales a objetos de tipos distintos. El nico requisito que deben cumplir los objetos que se utilizan de manera polimrfica es saber responder al mensaje que se les enva. ENCAPSULACION En programacin modular, y ms especficamente en programacin orientada a objetos, se denomina encapsulamiento al ocultamiento del estado, es decir, de los datos miembro de un objeto de manera que solo se pueda cambiar mediante las operaciones definidas para ese objeto.