Anda di halaman 1dari 18

Direccin General de Educacin Superior Tecnolgica

INSTITUTO TECNOLGICO DE SALINA CRUZ

UNIDAD 5 HERENCIA Y POLIMORFISMO


TRABAJO DE INVESTIGACIN

Materia: Programacin Orientada a Objetos


Profesor: Mc. Susana Mnica Romn Njera
Alumna:
CRUZ ELENA JIMNEZ ESTEVA
Numero de control: 141020063

Semestre: 2

Grupo: e1

Carrera:
INGENIERA EN TECNOLOGIAS DE LA INFORMACION Y
COMUNICACIONES

INDICE
Herencia
polimorfismo..3

5.1. Concepto de herencia y polimorfismo


3
5.2 Definicin de una clase base
9
5.3. Definicin de una clase derivada.10
5.4. Clases abstractas......10
5.5.
Definicin
de
mltiple.11

herencia

5.6. Implementacin de herencia mltiple.12


5.7. Reutilizacin de la definicin de paquetes / libreras..13
5.8. Clases genricas (plantillas)14
Conclusin..16
Bibliografa.17

INTRODUCCIN
En 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 POLIMORFISMO
2

La 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 clases

Ejemplos:

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 mtodos

Tipos de herencia
Herencia 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
subclase.

una

En java usamos la
palabra
reservada
extends
para
establecerlo.

POLIMORFISMO

Generalmente, el polimorfismo es la habilidad de tomar diferentes formas


Polimorfismo en java:
Habilidad de una variable por referencia de cambiar su comportamiento en funcin
de qu instancia de objeto posee
Esto 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 polimorfismo
Por 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)
6

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
dinmico

Tipo esttico vs. Tipo dinmico


Tipo esttico:
Tipo asociado en la declaracin
Tipo 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 Depsito


El tipo dinmico del variable depsito cambia en tiempo de ejecucin:

En 1 es Deposito
En 3. es DepositoEstructurado

Polimorfismo puro
Mtodo que puede recibir como argumento objetos de diferentes tipos
El parmetro es una entidad polimrfica

El mtodo indiceRentabilidad podra recibir como parmetro un objeto de la clase


Depsito de la clase DepositoEstructurado
En tiempo de ejecucin se determinar la versin de getIntereses y getCapital que
debe ejecutarse.

Polimorfismo puro vs. Sobrecarga


Funciones sobrecargadas funciones polimrficas
Sobrecarga:
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 interpretaciones
public doubleindiceRentabilidad(Deposito deposito) {
returndeposito.getIntereses()/deposito.getCapital();
8

}
Sobrecarga:
Un cdigo para cada tipo de Deposito
public doubleindiceRentabilidad(Deposito deposito) {
}
public doubleindiceRentabilidad(DepositoEstructurado deposito){
}

5.2.

DEFINICIN DE UNA CLASE BASE

La 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
9

Ventana Titulo hace una llamada a la funcin mostrar de la clase base Ventana,
mediante
Una 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.

10

5.5. DEFINICIN DE HERENCIA MLTIPLE


Es 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:

11

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 mltiple
Para 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).

12

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.
Paquetes
Es un contenedor de clases que permite agrupar las distintas partes de un
programa cuya funcionalidad tienen elementos comunes.
Librera
Igualmente 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.

13

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.
14

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.).
Definicin
La definicin de una clase genrica tiene el siguiente aspecto:
Template<lista-de-parametros> class nombreClase {// Definicin

15

CONCLUSIN
Estos 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)

16

BIBLIOGRAFA
Herencia. 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-herenciaen-java-avanzar-en-java-swing-gestion-de-errores-y-mascu00698b&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-2827363
Gonzales M (2010). Herencia y polimorfismo. Pgina consultada el 27 de mayo del
2015. Disponible en internet: http://www.ctr.unican.es/asignaturas/pp/apuntes/03herencia_3en1.pdf
Muoz 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=1
Orozco 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

17

Anda mungkin juga menyukai