TrabajoDeInvestigación_Unidad5_CruzElenaJiménezEsteva

download TrabajoDeInvestigación_Unidad5_CruzElenaJiménezEsteva

of 18

description

J

Transcript of TrabajoDeInvestigación_Unidad5_CruzElenaJiménezEsteva

Direccin General de Educacin Superior TecnolgicaINSTITUTO TECNOLGICO DE SALINA CRUZ

UNIDAD 5 HERENCIA Y POLIMORFISMOTRABAJO DE INVESTIGACIN

Materia: Programacin Orientada a Objetos

Profesor: Mc. Susana Mnica Romn NjeraAlumna: CRUZ ELENA JIMNEZ ESTEVANumero de control: 141020063

Semestre: Grupo: e1Carrera: INGENIERA EN TECNOLOGIAS DE LA INFORMACION Y COMUNICACIONES

INDICEHerencia y polimorfismo..35.1. Concepto de herencia y polimorfismo35.2 Definicin de una clase base95.3. Definicin de una clase derivada.105.4. Clases abstractas......105.5. Definicin de herencia mltiple.115.6. Implementacin de herencia mltiple.125.7. Reutilizacin de la definicin de paquetes / libreras..135.8. Clases genricas (plantillas)14Conclusin..16Bibliografa.17

INTRODUCCINEn esta investigacin de la unidad 5 herencia y polimorfismo se habla de su significado tanto del tema principal como de sus subtemas, entonces sabemos que la herencia nos permite crear nuevas clases a partir o ms bien basadas en una clase ya existente. Y el polimorfismo consiste en obtener un mismo mtodo con diferentes funciones.

HERENCIA Y POLIMORFISMO

5.1. CONCEPTO DE HERENCIA Y POLIMORFISMOLa herencia es el mecanismo fundamental de relacin entre clases en la orientacin a objetos. Sirve de soporte para registrar y utilizar las relaciones conceptuales existentes entre las clases posibilita la definicin de una clase a partir de otra.La herencia es la columna vertebral de la POO. Permite a los programadores crear una jerarqua entre un grupo de clases que tienen caractersticas similares. La herencia es una forma de reutilizacin de cdigo.La herencia es una propiedad esencial de la Programacin Orientada a Objetos que consiste en la creacin de nuevas clases a partir de otras ya existentes. Este trmino ha sido prestado de la Biologa donde afirmamos que un nio tiene la cara de su padre, que ha heredado ciertas facetas fsicas o del comportamiento de sus progenitores.La herencia es la caracterstica fundamental que distingue un lenguaje orientado a objetos, como el C++ o Java, de otro convencional como C, BASIC, etc. Java permite heredar a las clases caractersticas y conductas de una o varias clases denominadas base. Las clases que heredan de clases base se denominan derivadas, estas a su vez pueden ser clases bases para otras clases derivadas.Jerarquas de herencia La herencia organiza las clases en una estructura jerrquica formando jerarquas de clasesEjemplos:

No es tan slo un mecanismo para compartir cdigo Consistente con el sistema de tipos del lenguaje

Si una clase B hereda de otra clase A entonces: B incorpora la estructura (atributos) y comportamiento (mtodos) de la clase A B puede incluir adaptaciones: B puede aadir nuevos atributos B puede aadir nuevos mtodos B puede redefinir mtodosTipos de herenciaHerencia simple Una clase puede heredar de una nica clase. Ejemplo: Java, C#

Herencia mltiple Una clase puede heredar de varias clases. Clases forman un grafo dirigido acclico Ejemplos: Eiffel, C++En la herencia mltiple, al menos una clase sucesora hereda de ms de una clase antecesora directa, como se muestra en la imagen.

Como su nombre lo implica, la clase hija hereda caractersticas de la clase madre. Esto es, la clase hija hereda los mtodos y datos definidos para la clase madre. Para ajustar una clase derivada, el programador puede agregar nuevos datos y/o mtodos, o puede modificar los heredados

Declarando una subclase.En java usamos la palabra reservada extends para establecerlo.

POLIMORFISMOGeneralmente, el polimorfismo es la habilidad de tomar diferentes formasPolimorfismo en java:Habilidad de una variable por referencia de cambiar su comportamiento en funcin de qu instancia de objeto poseeEsto permite tratar de la misma manera, como objetos de la superclase, a mltiples objetos de la subclase, seleccionando en cada caso los mtodos apropiados (de cada subclase por ejemplo).Ejemplos de polimorfismoPor ejemplo, dada una clase Vehculo, la caracterstica de polimorfismo habilita al programador para definir mtodos en sus subclases (por ejemplo: Coche, Camin y Moto).No importa qu tipo de Vehculo sea ya que si llamamos al mtodo getNumeroRuedas() llamar al propio de cada subclase, pero el objeto no deja de ser Vehculo tambin.Formas de polimorfismo:1. Polimorfismo de asignacin (variables polimorfas)2. Polimorfismo puro (funcin polimorfa)3. Polimorfismo ad hoc (sobrecarga)4. Polimorfismo de inclusin (redefinicin)5. Polimorfismo paramtrico (genericidad)Polimorfismo de asignacin. Capacidad de una entidad de referenciar en tiempo de ejecucin a objetos de diferentes clases. El conjunto de clases a las que se puede hacer referencia est restringido por la herencia. Importante para escribir cdigo genrico El polimorfismo implica que una variable tiene un tipo esttico y un tipo dinmicoTipo esttico vs. Tipo dinmicoTipo esttico: Tipo asociado en la declaracinTipo dinmico: Tipo correspondiente a la clase del objeto conectado a la entidad en tiempo de ejecucin.Conjunto de tipos dinmicos (ctd):Conjunto de posibles tipos dinmicos de una entidad.

El tipo esttico de la variable depsito es siempre la clase DepsitoEl tipo dinmico del variable depsito cambia en tiempo de ejecucin: En 1 es Deposito En 3. es DepositoEstructuradoPolimorfismo puroMtodo que puede recibir como argumento objetos de diferentes tiposEl parmetro es una entidad polimrfica

El mtodo indiceRentabilidad podra recibir como parmetro un objeto de la clase Depsito de la clase DepositoEstructuradoEn tiempo de ejecucin se determinar la versin de getIntereses y getCapital que debe ejecutarse.

Polimorfismo puro vs. SobrecargaFunciones sobrecargadas funciones polimrficasSobrecarga:Dos o ms funciones comparten el nombre y distintos argumentos (n y tipo). El nombre es polimrfico.Distintas definiciones y tipos (distintos comportamientos)Funcin correcta se determina en tiempo de compilacin segn la signatura.Funciones polimrficas:Una nica funcin que puede recibir una variedad de argumentos (comportamiento uniforme).La ejecucin correcta se determina dinmicamente en tiempo de ejecucin.Polimorfismo puro:Un nico cdigo con distintas interpretacionespublic doubleindiceRentabilidad(Deposito deposito) {returndeposito.getIntereses()/deposito.getCapital();}Sobrecarga:Un cdigo para cada tipo de Depositopublic doubleindiceRentabilidad(Deposito deposito) {}public doubleindiceRentabilidad(DepositoEstructurado deposito){}

5.2. DEFINICIN DE UNA CLASE BASELa clase base define todas las cualidades que sern comunes a cualquier clase derivada. Otro punto importante es el acceso a la clase base. El acceso a la clase base pude tomar 3 valores, public, private y protected. Si el acceso es public, todos los atributos de la clase base son pblicos para la derivada. Si el acceso es private, los datos son privados para la clase base la derivada no tiene acceso. Si el acceso es protected, datos privados para la base y derivada tiene acceso, el resto sin acceso.Los programadores crean clases base: Cuando se dan cuenta que diversos tipos tienen algo en comn, por ejemplo en el juego del ajedrez peones, alfiles, rey, reina, caballos y torres, son piezas del juego. Creamos, por tanto, una clase base y derivamos cada pieza individual a partir de dicha clase base. Cuando se precisa ampliar la funcionalidad de un programa sin tener que modificar el cdigo existente.5.3. DEFINICIN DE UNA CLASE DERIVADA.En la clase derivada se define una funcin que tiene el mismo nombre y los mismos parmetros que la de la clase base. Se dice que redefinimos la funcin mostrar en la clase derivada. La funcin miembro mostrar de la clase derivada Ventana Titulo hace una llamada a la funcin mostrar de la clase base Ventana, medianteUna clase derivada hereda la funcin miembro de su clase base. Esto significa que se hereda la capacidad para llamar a funciones miembro de la clase base en los objetos de la clase derivada.Los siguientes elementos de la clase no se heredan:- Constructores- Destructores- Funciones amigas- Funciones estticas de la clase- Datos estticos de la clase- Operador de asignacin sobrecargado

5.4. CLASES ABSTRACTAS.Una clase que declara la existencia de mtodos pero no la implementacin de dichos mtodos (o sea, las llaves { } y las sentencias entre ellas), se considera una clase abstracta. Una clase abstracta puede contener mtodos no-abstractos pero al menos uno de los mtodos debe ser declarado abstracto. Para declarar una clase o un mtodo como abstractos, se utiliza la palabra reservada abstract.

Una clase abstracta no se puede instanciar pero si se puede heredar y las clases hijas sern las encargadas de agregar la funcionalidad a los mtodos abstractos. Si no lo hacen as, las clases hijas deben ser tambin abstractas.

5.5. DEFINICIN DE HERENCIA MLTIPLEEs una propiedad que permite que los objetos sean creados a partir de otros ya existentes, obteniendo caractersticas (mtodos y atributos) similares a los ya existentes. Es la relacin entre una clase general y otra clase ms especfica. Es un mecanismo que nos permite crear clases derivadas a partir de clase base, nos permite compartir automticamente mtodos y datos entre clases, subclases y objetos.Existen dos mtodos en los que una clase derivada puede heredar ms de una clase base. El primero, en el que una clase derivada puede ser usada como la clase base de otra clase derivada, crendose una jerarqua de clases. El segundo, es que una clase derivada puede heredar directamente ms de una clase base. En esta situacin se combinan dos o ms clases base para facilitar la creacin de la clase derivada.Es aquella en la que cada clase puede heredar mtodos y variables de cualquier nmero de superclase. Ejemplo:

5.6. IMPLEMENTACIN DE HERENCIA MLTIPLE.Los identificadores de algunos mtodos o atributos pueden coincidir en la clase que hereda, si dos de las interfaces padres tienen algn mtodo o atributo que coincida con el nombre.Java es un lenguaje que incorpora herencia simple de implementacin pero que puede aportar herencia mltiple de interfaz. Esto posibilita la herencia mltiple en el diseo de los programas Java. Una interfaz puede heredar de ms de una interfaz antecesora. Interface InterfazMultiple extends Interfaz1, Interfaz2 { } Una clase no puede tener ms que una clase antecesora, pero puede implementar ms de una interfaz: class MiClase extends SuPadre implements Interfaz1, Interfaz2 { } El ejemplo tpico de herencia mltiple es el que se presenta con la herencia en diamante:Ejemplo de herencia mltiplePara poder llevar a cabo un esquema como el anterior en Java es necesario que las clases A, B y C de la figura sean interfaces, y que la clase D sea una clase (que recibe la herencia mltiple): interface A { } interface B extends A { } interface C extends A { } class D implements B, C { } Mediante la herencia, las propiedades definidas en una clase base son heredadas por la clase derivada. La clase derivada puede aadir propiedades especficas (atributos, mtodos o roles).

En Java no se puede hacer herencia mltiple. Por ejemplo, de la clase aparato con motor y de la clase animal no se puede derivar nada, sera como obtener el objeto toro mecnico a partir de una mquina motorizada (aparato con motor) y un toro (animal). En realidad, lo que se pretende es copiar los mtodos, es decir, pasar la funcionalidad del toro de verdad al toro mecnico, con lo cual no sera necesaria la herencia mltiple sino simplemente la comparticin de funcionalidad que se encuentra implementada en Java a travs de interfaces.

Una Interfaz es una especificacin para las operaciones externas visibles de una clase, componente, u otra entidad (incluyendo unidades globales como los paquetes), pero siempre sin especificar la estructura interna.5.7. REUTILIZACIN DE LA DEFINICIN DE PAQUETES / LIBRERAS.PaquetesEs un contenedor de clases que permite agrupar las distintas partes de un programa cuya funcionalidad tienen elementos comunes.LibreraIgualmente estamos llamando a una clase especfica o a todo un paquete.Los paquetes son grupos de clases relacionadas; ayudan a organizar su cdigo y proporcionan otra capa encapsulamiento.En programacin, los paquetes, con frecuencia son tiles para agrupar las piezas relacionadas de un programa Un paquete sirve para dos propsitos: primero, suministra un mecanismo por el cual piezas relacionadas de un programa pueden ser organizadas como una unidad. As, un paquete proporciona la manera de nombrar una coleccin de clases. Segundo, un paquete participa en los mecanismos de control de acceso en java. Las clases definidas dentro de un paquete pueden hacerse privadas a ese paquete y no accesibles por cdigo fuera del paquete. De este modo, el paquete suministra un medio por el cual las clases pueden ser encapsuladas. DEFINIR UN PAQUETE: Todas las clases en Java pertenecen a algn paquete. Adems, el paquete predeterminado no tiene nombre, lo que lo hace transparente.5.8. CLASES GENRICAS (PLANTILLAS).Tal como en Java 5 (JDK 1.5), Scala provee soporte nativo para parametrizar clases con tipos. Eso es llamado clases genricas y son especialmente importantes para el desarrollo de clases tipo coleccin.Las clases genricas encapsulan operaciones que no son especficas de un tipo de datos concreto. El uso ms comn de las clases genricas se da con las colecciones, como listas vinculadas, tablas hash, pilas, colas, rboles, etc., en las que las operaciones tales como agregar y quitar elementos de la coleccin se realizan de forma similar independientemente del tipo de datos que se almacena.

Normalmente, para crear clases genricas se empieza a partir de una clase concreta existente y se cambian los tipos, uno a uno, por parmetros de tipo hasta que se obtiene un equilibrio ptimo entre generalizacin y utilidad. Al crear sus propias clases genricas, se deben tener en cuenta las siguientes consideraciones importantes: Tipos que se generalizan como parmetros de tipo. Factorizar o no el comportamiento genrico en las clases base y las subclases. Implementar o no una o varias interfaces genricas.

Las clases-plantilla, clases genricas, o generadores de clases, son un artificio C++ que permite definir una clase mediante uno o varios parmetros. Este mecanismo es capaz de generar la definicin de clases (instancias o especializaciones de la plantilla) distintas, pero compartiendo un diseo comn. Podemos imaginar que una clase genrica es un constructor de clases, que como tal, acepta determinados argumentos (no confundir con el constructor de una clase, que genera objetos).

El sistema de plantillas permite definir una clase genrica que instancie versiones de mVector para matrices de cualquier tipo especificado por un parmetro. La ventaja de este diseo parametrizado, es que cualquiera que sea el tipo de objetos utilizados por las especializaciones de la plantilla, las operaciones bsicas son siempre las mismas (insercin, borrado, seleccin de un elemento, etc.).DefinicinLa definicin de una clase genrica tiene el siguiente aspecto:Template class nombreClase {// DefinicinCONCLUSINEstos temas son de gran importancia ya que nos ayudan a comprender, para as ponerlo en prctica, la herencia nos facilita el poder cambiar las clases que usamos fcilmente, crear nuevas clases a partir de unas ya existentes, esos son unas de las ventajas que la herencia nos puede dar.Con lo que hemos visto podemos decir que la herencia tiene dos implicaciones importantes: la primera, la reutilizacin de cdigo (herencia de cdigo) y la segunda el permitir el polimorfismo (herencia del tipo)

BIBLIOGRAFAHerencia. Pgina consultada el 27 de mayo del 2015. Disponible en internet:http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=673:resumen-de-ventajas-de-la-herencia-en-java-avanzar-en-java-swing-gestion-de-errores-y-mas-cu00698b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188

Esta pgina fue modificada por ltima vez el 10 mar 2015 a las 20:18. Polimorfismo. Recuperado de: http://es.wikipedia.org/wiki/Polimorfismo_(inform%C3%A1tica)Martnez Rolando (2010). Herencia y polimorfismo. Pgina consultada el 27 de mayo del 2015. Disponible en internet: http://es.slideshare.net/nano_trujillo/herencia-y-polimorfismo-2827363Gonzales M (2010). Herencia y polimorfismo. Pgina consultada el 27 de mayo del 2015. Disponible en internet: http://www.ctr.unican.es/asignaturas/pp/apuntes/03-herencia_3en1.pdfMuoz Jess (2010). Polimorfismo. Pgina consultada el 27 de mayo del 2015. Disponible en internet: Pgina consultada el 27 de mayo del 2015. Disponible en internet: http://es.slideshare.net/networksens/10-polimorfismo?related=1Orozco Cristian (2014) Polimorfismo. Pgina consultada el 27 de mayo del 2015. Disponible en internet: Pgina consultada el 27 de mayo del 2015. Disponible en internet: http://es.slideshare.net/Cristian_lycan/polimorfismo-29774146?related=2

1