CARACTERÍSTICAS CARACTERÍSTICA S POO
Abstracción
Herencia
Encapsulamiento
Polimorfismo
Relaciones
Asociación
Herencia
Multiplicidad
Elementos
Clases •
Métodos(sobre escritura, sobre carga)
•
Atributos
•
Propiedades (.Net)
Objetos - Mensajes
Interfaces
La programación orientada a objetos expresa un programa como un conjunto de estos objetos, que colaboran entre ellos para realizar tareas. Esto permite hacer los programas y módulos más fáciles de escribir, mantener y reutilizar.
Abstracción: Cada vez que pronunciamos una palabra, realmente lo que hacemos es asociar ese sonido (o ese conjunto de garabatos al escribir) con una serie de cosas. Decimos que una ave es tal cosa, que una silla es tal otra, etc. Cuando vamos a aplicar la POO, lo primero que debemos hacer es cumplir con una vieja máxima de guerra: Divide y Vencerás. Es decir, lo que hacemos es seccionar nuestro código en grupos de código más pequ pequeñ eño o que, que, al unir unirlo los, s, hace hacen n el trab trabaj ajo. o. Un buen buen ejem ejempl plo o de abstracción es el cuerpo humano, aunque el cuerpo es una unidad,
está está divi dividi dido do en lo que que cono conoce cem mos por por sistemas (el (el sist sistem ema a respi respirat ratori orio, o, el siste sistema ma linfá linfátic tico, o, cardio cardiovas vascul cular, ar, etc., etc., etc.). etc.). Estos Estos sistemas, a su vez están compuestos por otros más pequeños: los órgan órganos, os, y así así suces sucesiv ivame amente nte.. La abstra abstracci cción ón nos permi permite te dividi dividirr nuestro programa en distintos objetos que se agrupan para formar cosas más complejas. Pero ¿qué demonios es realmente la abstracción? Básicamente es la capacidad de separar los elementos (al menos mentalmente) para poder verlos de forma singular. Como cuando describimos el cuerpo humano y decimos cabeza, brazo(s), pierna(s), pierna(s), etc.
Encapsulación: Tamb También ién conoci conocida da como como oculta ocultamie miento nto.. Cuando Cuando me acuest acuesto o a ver televisión no me preocupo del modo como éste funciona, o lo que hace para cambiar de canal o aumentar el volumen. A menos que seas experto en electrónica o técnico en televisores, te pasará lo mismo: no lo sabes y no te importa; sólo sabes que al presionar un botón ocurre la magia. La enca encaps psul ulac ació ión n se enca encarg rga a de mant manten ener er ocul oculto tos s los los proc proces esos os internos que necesita para hacer lo que sea que haga, dándole al progr programa amador dor acceso acceso sólo sólo a lo que necesi necesita. ta. Esto Esto da dos ventaj ventajas as iniciales: Lo que hace el usuario puede ser controlado internamente (incluso sus errores), evitando que todo colapse por una intervención indeseada (tú no quieres que tu mamá, que no tiene ni idea de electrónica, abra tu televisor y empiece a jugar con los circuitos para cambiar los canales manualmente ¿verdad?). La segunda ventaja es que, al hacer que la mayor parte del código esté oculto, puedes hacer cambios y/o mejoras sin que eso afecte el modo como los usuarios van a utilizar tu código. Sólo tienes que mantener igual la forma de acceder a él (en el caso del control de la tele, que los botones sigan sien siendo do los los mism mismos os y que que el botó botón n de “apa “apaga gado do” ” no camb cambie ie el volumen). Por cierto, estas puertas de acceso que das a los usuarios son lo que se conoce como interfaz .
Herencia: Uno de los elementos (a mi modo de ver) más interesantes de la P.O.O. La herencia es la capacidad que tiene una clase de derivar las prop propie ieda dade des s y méto método dos s de otra otra (sue (suena na a chin chino o ¿no? ¿no? Calm Calma, a, lo ver veremos emos luego luego con paci pacien enci cia a ). Tra Trate temo mos s de expli explica carl rlo o con con un ejemplo: Decimos que una gallina es un ave ; esto quiere decir que las gallinas tienen características comunes con otras aves (pico, plumas, etc.), es decir que la gallina hereda las característic características as comunes comunes de todas todas las
aves. Pero además, resulta que un ave es un animal , lo que significa que también comparte características comunes al caballo, el perro, el hombre (seeee, somos animales) y cualquier otra cosa que pueda ser clasificada como animal. La herencia nos permite, entre otras cosas, evitar tener que escribir el mismo código una y otra vez, puesto que al definir que una categoría (que (que en prog progra rama maci ción ón llam llamar arem emos os clase) pertenece a otra, auto automá máti tica came ment nte e esta estamo mos s atri atribu buyé yénd ndol oles es las las cara caract cter erís ísti tica cas s generales de la primera, sin tener que definirlas de nuevo.
Polimorfismo En programación orientada a objetos se denomina denomina polimorfi polimorfismo smo a la capacidad que tienen los objetos de una clase de responder al mismo mensaje o evento en función de los parámetros utilizados durante su invocación. Un objeto polimórfico es una entidad que puede contener valores de diferentes tipos durante la ejecución del programa. programa. En la práctica esto quiere decir que un puntero a un tipo puede contener varios tipos diferentes, no solo el creado. De esta forma podemos tener un puntero a un objeto de la clase Trabajador, pero este este punt punter ero o pued puede e esta estarr apun apunta tand ndo o a un obje objeto to subc subcla lase se de la anterior como podría ser Márketing, Ventas o Recepcionistas (todas ellas deberían ser subclase de Trabajador). El concepto de polimorfismo se puede aplicar tanto a funciones como a tipos de datos. Así nacen los conceptos de funciones polimórficas y tipos polimórficos. Las primeras son aquellas funciones que pueden eval evalua uars rse e o ser ser apli aplica cada das s a dife diferrente entes s tipo tipos s de dato datos s de for forma indistinta; los tipos polimórficos, por su parte, son aquellos tipos de dato datos s que que cont contie iene nen n al meno menos s un elem elemen ento to cuyo cuyo tipo tipo no está está especificado.
RELACIONES Las relac relacion iones es entre entre objeto objetos s son, son, preci precisa samen mente, te, los enlace enlaces s que permiten a un objeto relacionarse con aquellos que forman parte de la misma organización. organización . Las hay de dos tipos fundamentales: -Relaciones jerárquicas. Son esenciales para la existencia misma de la aplica aplicació ción n porque porque la constr construye uyen. n. Son bidir bidirecc eccion ionale ales, s, es decir, decir, un objeto es padre de otro cuando el primer objeto se encuentra situado inmediatamente encima del segundo en la organización en la que ambos forman parte; asimismo, si un objeto es padre de otro, el segundo es hijo del primero (en la fig. 2, B es padre de D,E y F, es decir, D,E y F son hijos de B; en la fig. 3, los objetos B y C son padres de F, que a su vez es hijo de ambos).
Una organización jerárquica simple puede definirse como aquella en la que un objeto puede tener un solo padre, mientras que en una organizacion organizacion jerárquica compleja un hijo puede tener varios padres). -Relaciones semánticas. Se refieren a las relaciones que no tienen nada que ver con la organización de la que forman parte los objetos que las establecen. Sus propiedades y consecuencia solo dependen de los objetos en sí mismos (de su significado) y no de su posición en la organización. organización.
Se pued puede e ver ver mejo mejorr con con un ejem ejempl plo: o: supo supong ngam amos os que que vamo vamos s a construir un diccionario informatizado que permita al usuario obtener la definición de una palabra cualquiera. Supongamos que, en dicho diccionario, diccionario, las palabras son objetos y que la organización jerárquica es la que proviene de forma natural de la estructura de nuestros conocimientos sobre el mundo. La raíz raíz del del diccionario podr podría ía llam llamar arse se TEMA TEMAS. S. De éste éste térm términ ino o genérico descenderán tres grandes ramas de objetos llamadas VIDA, MUND MU NDO O y HOMBRE. HOMBRE. El prim primer ero o (vid (vida) a) comp comprrender enderá á las las ciencias biológicas: Biología y Medicina. Medicina. El segundo (mundo), las ciencias de la naturaleza inerte: las Matemáticas, Matemáticas, la Física, Física, la Química y la Geología. Geología. El tercero (hombre (hombre)) comprenderá las ciencias humanas: la Geografía, Geografía, la Historia, Historia , etc.
Herencia • Es una relación de generalización/especialización del tipo ES-UN(A) que indica que una clase es una variante de otra clase. Decir que “la clase B ES-UNA clase A” indica que las principales características de la clase B se heredan de la clase A. • Una subclase(derivada) puede heredar la estructura y comportamiento de su superclase(base). superclase(base). • Es el mecanismo por el cual una clase de objetos puede ser definida como un caso especial de otra clase más genérica. • Los casos especiales de una clase se denominan Subclases(derivadas). • La clase clase más genéri genérica, ca, se conoce conoce como como la Super Supercla clase( se(bas base) e) de todos sus casos especiales. Además de los métodos y atributos que hereda heredan, n, las Subcla Subclases ses defin definen en sus propi propios os método métodos s y atribu atributos tos.. Tambien, pueden redefinir algunos de los heredados (overriding). • La interface de mensajes definida para una clase base también es her heredad edada a por por las las clas clases es deri deriva vada das. s. Esto Esto impl implic ica a que que toda todas s las Subc Subcla lase ses s de una una Supe Superrclas clase e esta estan n prep prepar arad adas as para para respo espond nder er cor correctam ectamen ente te a los los mism mismos os mens mensaj ajes es que que la Clas Clase e padr padre. e. Esta Esta propiedad es extremadamente útil porque nos permite tratar de la misma manera a todas las especializaciones especializaciones de una Clase. • Al construir una clase lo primero que debemos hacer es rastrear las clases existentes en bibliotecas de clases. Si exis existe te una una clas clase e que que cont conten enga ga la mayo mayori ria a de los los atri atribu buto tos s y operaciones requeridas debemos heredar de ella, y añadir nuevos miembros si hace falta. Las características de la clase base pueden
sobr sobres escr crib ibir irse se en la clas clase e deri deriva vada da.. Si no exis existe te,, solo solo ento entonc nces es construimos la nueva clase de la nada, esto es no usamos herencia. Enlaces y asociaciones • Los Los enla enlace ces s y las las asoc asocia iaci cion ones es son son los los medi medios os para para esta establ blec ecer er relaciones entre objetos y clases. Un enlace enlace es la conex conexión ión física física o concep conceptua tuall entre entre insta instanci ncias as de objetos. • Un Una a asoc asocia iaci ción ón desc descri ribe be un grup grupo o de enla enlace ces s con con estr estruc uctu tura ra y semántica comunes. • Una asociación describe un grupo grupo de enlaces con una estructura y una semántica en común. • Una relación que describe un conjunto de vínculos. • Una asociación representa una dependencia semántica entre clases e implica la dirección de esta dependencia. • En general, las asociaciones son bidireccionales • Lo más normal es que sea binarias • La multiplicidad es una característica intrínseca e importante de las asociaciones • Dependencias semánticas • La asociación es la más general de las relaciones, y la de mayor relajación relajación semántica Multiplicidad • La multiplicidad especifica el número de instancias de una clase que pueden pueden estar estar relac relacio ionad nadas as con una única única instan instancia cia de una clase clase asociada. ELEMENTOS Método: Método: Es la implementaci implementación ón de un algoritmo algoritmo que represent representa a una operación o función que un objeto realiza. El conjunto de los métodos de un objeto determinan el comportamiento del objeto.
ATRIBUTOS Los atributos son datos específicos de una clase. En la definición de clase se indica cuales son los atributos y conque nombre se va a designar a cada uno de ellos. El que una declaración de atributo sea pública significa que el elemento definido pueda utilizarse utilizarse libremente desde cualquier otro punto del programa.
En el caso de una clase su carácter público es necesario para poder crear objetos de esa clase en otros puntos del programa (new). Para acceder a un atributo hay que indicarle el nombre del objeto al que pertenece: unaEntrada.nombre = "Juan Pablo" unaEntrada.apellidos = "de Frutos Martínez"
Sobre-escritura: La sobr sobree-es escr crit itur ura, a, se apli aplica ca a los los méto método dos s y esta esta dir directa ectame ment nte e relacionada relacionada a la herencia y se refiere a la re-definición de los métodos de la clase base en las subclases, por ejemplo, en la relación de herencia del ejemplo de las figuras aunque la clase base “Figura” tiene los métodos “calcularArea” y “calcularPerimetro” , las subclases “Circulo” , “Cuadrado” , “Triangulo” y “Rectangulo” redefinen redefinen estos métodos ya que el calculo del área y el perímetro de cada uno de ellos es diferente. Sobr Sobrecarg ecarga: a: Modali Modalidad dad de herenc herencia, ia, que permit permite e usar usar el mismo mismo módulo para diferentes implementaciones de una operación, es decir, usan usando do dife diferrente ente sign signat atur ura: a: una una func funció ión n que que pued pueda a recib ecibir ir un parámetro, o dos parámetros o ninguno, pero opera correctamente con cualquiera de ellos con que se invoque, está sobrecargada; por ejemplo, la función saludar(), cuando va sin parámetros retorna la cadena “Hola”, cuando se invoque con un nombre, (salud aluda ar(va r(varr_nom _nombr bre) e)), ), retor etorna na “Hol Hola $var $var__nomb nombrre”, e”, y así sucesivamente. Esto debe manejarse por código dentro de la función. Clases (I) · Los Los objeto objetos s del mundo mundo real se pueden pueden agrupa agruparr en tipos tipos (clase (clases) s) personas, coches, ordenadores, lavadoras, aviones, etc) de manera que los objetos de la misma clase tienen la misma estructura (estado) y el mismo comportamiento, aunque el estado de dos objetos puede ser distinto. · Los objetos software también se pueden agrupar en clases utilizando un criterio similar: los objetos de la misma clase comparten estado y comportamiento. · En terminología orientada a objetos, un objeto concreto de una clase es una instancia de la clase. Una Un a clas clase e es un patr patrón ón o prot protot otip ipo o que que defi define ne las las vari variab able les s y los los métodos comunes a todos los objetos de un cierto tipo. Clases (II) · Las Las variab variables les en las las que se almace almacena na el estado estado de un objeto, objeto, se llaman variables de instancia. · Los métodos que implementan el comportamiento de un objeto se llaman métodos de instancia.
Clases (III) · Por ejem ejempl plo, o, la clas clase e Coch Coche e decl declar ara a las las vari variab able les s de inst instan anci cia a necesarias para almacenar el Nº de marchas, la velocidad actual, y la marcha actual. La clase también declara y proporcio ciona la implementación de los métodos de instancia que permiten arrancar, aceler acelerar, ar, frena frenarr y cambia cambiarr de marcha marcha.. Despué Después s de crear crear la clase clase Coche se pueden crear los objetos de la clase. Cada instancia de la clas clase e tien tiene e su prop propia ia copi copia a de toda todas s las las vari variab able les s de inst instan anci cia a definidas en la clase. cambiar de marcha arrancar acelerar frenar Nº de marchas velocidad actual marcha actual cambiar de marcha arrancar acelerar frenar Nº de marchas =5 velocidad actual =80 marcha actual =3 cambiar de marcha arrancar acelerar frenar Nº de marchas =4 velocidad actual =120 marcha actual = 4 coche 1 coche 2 Coche Clases (IV) · Variabl ariables es de clase: clase: las clases clases,, además además de defini definirr las las variab variables les de instancia, también pueden definir variables de clase, que contienen información información común para todas las instancias de la clase. Si un objet bjeto o modi odifica fica el valo valorr de una varia ariabl ble e de cla clase, esta sta modificación afecta a todos los objetos de la clase. · Por ejemplo, en una aplicación de facturación, la clase Factura puede tener una variable de clase con el IVA que se aplica a las facturas, ya que este valor es común a todos los objetos de la clase Factura, y no sería eficiente que cada uno de los objetos de la clase tuviera una copia. · Si en una aplicación se quiere contabilizar el número de instancias que hay de una determinada clase, se puede utilizar una variable de clase.
Por ejemplo, la clase Ventana de una iterfaz gráfica puede declarar variables de clase para almacenara el número de ventanas visibles, el tamaño por omisión y el tamaño máximo de cualquier ventana. Clases (V) · Métodos de clase: son métodos que afectan a la clase en sí, y a los cuales se puede acceder directamente desde la clase en oposición al acceso a los métodos de instancia, que se realiza siempre a través de los objetos objetos · Es import important ante e señala señalarr que para para invoc invocar ar un método método de clase no es necesario haber creado ningún objeto que reciba como mensaje una invocación de ese método. · Para ara usar usar un méto método do de inst instan anci cia, a, por por el cont contra rari rio, o, se nece necesi sita ta obligatoriamente que se cree un objeto de la clase que reciba el mensaje de ese método. · Por ejempl ejemplo, o, en la clase clase Factura actura se podrí podrían an tener tener método métodos s para para consultar y modificar el valor del IVA aplicable a las facturas, ya que este valor tiene sentido en sí mismo y no está condicionado a la existencia de objetos de la clase. Objetos (I) · Los objetos del mundo real comparten tres características: · estado o estructura: por ejemplo, en un coche el nº de marchas, la velocidad actual, la marcha actual, etc... · comportamiento: por ejemplo, un coche puede arrancar, arrancar, acelerar, frenar, cambiar marcha, etc.... · identidad: aquello que distingue a un objeto de todos los demás, por ejemplo, si la estructura de una persona es su nombre y edad, es posible que haya dos juanes de 20 años que no son la misma persona. · Los objetos software también tienen esas características: características: · estado: se almacena en un conjunto de variables. · comportamiento: se implementa con métodos. Un método es una función (subrutina, subprograma, subprograma, procedimien p rocedimiento). to). · identidad: garantizada por los sistemas de poo. Un objeto es una agrupación de variables y métodos distinguible de todos los demás (identidad propia) desde su creación. Objetos (II) · Los objetos software se utilizan para: · representar objetos del mundo real. · en un juego de carreras carreras de coches, los coches del mundo real se podrían representar mediante objetos software. · en una aplicación de dibujo, las figuras geométricas (polígonos, rectas,...) se podrían representar mediante objetos software. · en una aplicación de gestión de personal de una empresa, los trabajadores trabajadores de la empresa se podrían representar representar mediante objetos software. · representar representar conceptos abstractos. · en interfaces gráficas de usuario, es habitual representar con objetos
(llamados eventos) las acciones realizadas por el usuario (ratón y teclado). · en un ento entorrno de simu simula laci ción ón e iden identi tifi fica caci ción ón de la estr estruc uctu tura ra tridimensional de una proteína, las posibles estructuras candidatas (no se corresponden con ningún objeto real) podrían represantarse mediante objetos. Objetos (III) · Representación visual de un objeto software. Variables (estado) Métodos (comportamiento) Mensajes (I) · Una aplicación orientada a objetos se compone de múltiples objetos que se comunican mediante mensajes. · Si un objeto A quiere que un objeto B ejecute uno de sus métodos, el objeto A le envía un mensaje al objeto B. objeto A objeto B mensaje · Cada mensaje tiene tres componentes: · el objeto destinatario del mensaje · el nombre del método a ejecutar · los parámetros (si existen) del método Mensajes (II) · Por ejemplo, en un juego de ordenador de carreras carreras de coches, cada piloto se comunica con su coche. piloto coche cambiar marcha (2) Mensaje con parámetros piloto coche arrancar
[1]http://thefricky.wordpress.com/2007/12/28/programacion[1]http://thefricky.wordpress.com/2007/12/28/programacionorientada-a-objetos-caracteristicas-de-la-poo/ [2] http://es.wikipedia.org/wiki/Polimorfismo_(programaci%C3%B3n_orien tada_a_objetos) [3] http://www.mastermagazine.info/termino/4880.php [4] http://www.monografias.com/trabajos/objetos/objetos.shtml [5]http://www.mentores.net/Default.aspx?type=art&site=81&tabid=1 [5]http://www.mentores.net/Default.aspx?type=art&site=81&tabid=1 04&parentid=26 [6] http://astreo.ii.uam.es http://astreo.ii.uam.es/~alfonso/poo_cur /~alfonso/poo_curso_02/conceptos_poo so_02/conceptos_poo_1.pdf _1.pdf
[7] http://www.elguille.info/colabora/puntoNET/canchala_FundamentosPO O.htm [8] http://apdaza-poo http://apdaza-poo.blogspot.com/2008/04/ .blogspot.com/2008/04/polimorfismo polimorfismo.html .html [9] http://pisuerga.inf.ubu.es/lsi/Invest/Java/Tuto.Oct98/1_Intro/1_IntPoo.ht m [10] http://astreo.ii.uam.es http://astreo.ii.uam.es/~alfonso/poo_cur /~alfonso/poo_curso_02/conceptos_poo so_02/conceptos_poo_1.pdf _1.pdf