Sunteți pe pagina 1din 26

HERENCIA Y

POLIMORFISMO

INTEGRANTES:
Almora Castro Nellie.
Huapaya Atauje Shiaron.
Garibay Cadenas Victor.
Jayo Gomez Jos.
Pardo Echegaray Ayrton

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 subclases) proviene del hecho de que
la subclase (la nueva clase creada) contiene las atributos y mtodos de la clase primaria. La principal
ventaja de la herencia es la capacidad para definir atributos y mtodos nuevos para la subclase, que luego
se
aplican
a
los
atributos
y
mtodos
heredados.

Jerarqua de clase
La relacin primaria-secundaria entre clases puede representarse
desde un punto de vista jerrquico, denominado vista de clases en
rbol. La vista en rbol comienza con una clase general llamada
superclase (a la que algunas veces se hace referencia como clase
primaria, clase padre, clase principal, o clase madre; existen muchas
metforas genealgicas). Las clases derivadas (clase secundaria o
subclase) se vuelven cada vez ms especializadas a medida que van
descendiendo el rbol. Por lo tanto, se suele hacer referencia a la
relacin que une a una clase secundaria con una clase primaria
mediante la frase "es una" x o y.

Animal

Carnvoro

Herbvoro

Conejo

Leon

Hiena

Omnvoro

Hombre

ASPECTOS GENERALES
Class clase Hija extends clase Padre{}
Representa un relacin es un
extends especifica que la clase Hija hereda datos y mtodos de clase padre.
Aunque hereda todo, la clase hija solo tiene acceso a los miembros de la clase
padre con modificadores public, protect, o package (o vaco).
En situaciones excepcionales, puede interesar definir una variable en la
subclase con el mismo nombre que la superclase (se tendran huecos
diferentes de memoria).

Herencia mltiple
Algunos lenguajes orientados a objetos, como C++ permiten herencias
mltiples, lo que significa que una clase puede heredar los atributos de
otras dos superclases. Este mtodo puede utilizarse para agrupar
atributos y mtodos desde varias clases dentro de una sola.
ANIMAL
HERBVORO

CARNVORO

OMNVORO

EJEMPLO 1:
Class Punto{

Class Punto3D extends Punto{

Int x;

Int z;

Int y;

Punto3D(int x;int y; int z){

Punto(int x;int y){

This.x=x;

This. x=x;

This.y=y;

This. y=y;

This.z=z;

Punto(){ this(0,0)}

Punto3D(){ this(0,0,0);}

EJEMPLO 2:
class Humano {
protected String nombre;
protected String apellido;
public Humano(String nombre,String apellido) {
this.nombre = nombre;
this.apellido = apellido;
}
public String nombreCompleto() {
return this.apellido + ", " + this.nombre; }
public String identificacion() {
return this.nombreCompleto();
}
}

class Ciudadano extends Humano {


protected String documento;
public Ciudadano(String nombre,String apellido, String documento)
{ super(nombre, apellido);
this.documento = documento;
}
public String identificacion() {
return super.identificacion() + ", documento: " + this.documento;
}
}

public class Herencia {


public static void main (String args[]) {
Humano a = new Humano("Emilio","Rosso");
Ciudadano b = new Ciudadano("Emilio","Rosso","3052454545");
Humano [] arregloDeHumanos;
arregloDeHumanos.push(a);
arregloDeHumanos.push(b);
identificarPolimorfico(arregloDeHumanos);
}
public static void identificarPolimorfico(Humano [] arregloDeHumanos) {
for(int i = 0; i < arregloDeHumanos.length ; i++)
{ System.out.println("Identificando: " + arregloDeHumanos[i].identificacion());
}
}
}

POLIMORFISMO:
La palabra polimorfismo proviene del griego y significa que posee varias formas diferentes.
Este es uno de los conceptos esenciales de una programacin orientada a objetos. As como la
herencia est relacionada con las clases y su jerarqua, el polimorfismo se relaciona con los
mtodos.

FIGURA
-COLOR
+AREA

CUADRADO
-LADO
+AREA()

AREA()
{LADO*LADO

CIRCULO
-RADIO
+AREA()

AREA()
{PI*RADIO*RADIO

Y se clasifican en :

Esttico: es cuando a los tipos a los que se aplica el polimorfismo deben


ser explicitados y declarados uno por uno antes de ser utilizados:

Polimorfismo de sobrecarga.
Polimorfismo de inclusin
(tambin llamado redefinicin,subtipado,sobreescritura).
Dinmico: es cuando el cdigo no incluye ningn tipo de especificacin
sobre el tipo de datos:

Polimorfismo paramtrico (tambin llamado polimorfismo de plantillas).

POLIMORFISMO ESTTICO.
Polimorfismoad hoc, es aqul en el que los tipos a los que se aplica
el polimorfismo deben ser explicitados y declarados uno por uno antes
de poder ser utilizados.
EJEMPLO
Por un lado tenemos la clase base Transporte, que posee los
mtodos Avanzar y Frenar. Por otro lado tenemos tres clases
distintas derivadas de la clase Transporte, cada una de las cuales
podr sobrescribir la implementacin de los mtodos Avanzar y
Frenar para que su comportamiento sea ms especfico.

POLIMORFISMO DE SOBRECARGA
El polimorfismo de sobrecarga ocurre cuando las funciones del mismo nombre existen,
con funcionalidad similar, en clases que son completamente independientes una de otra
(stas no
tienen que ser clases secundarias de la clase objeto).
Por ejemplo la clase:
"SumaGenerica" que juntara las sumas de todos los tipos primitivos:
class SumaGenerica {
int suma (int a, int b) {
return a+b; }
double suma (double a, double b) {
return a+b; } }
En este caso se dice que el mtodo est sobrecargado y el proceso de definir un mtodo
as se conoce como sobrecarga del mtodo. La sobrecarga de mtodos es una de las
maneras en que Java implementa el polimorfismo.

PUBLIC CLASS ARTICULO {


PRIVATE FLOAT PRECIO;
PUBLIC VOID SETPRECIO() {
PRECIO = 3.50;
}
PUBLIC VOID SETPRECIO(FLOAT NUEVOPRECIO) {
PRECIO = NUEVOPRECIO;
}
PUBLIC VOID SETPRECIO(FLOAT COSTO, INT
PORCENTAJEGANANCIA) {
PRECIO = COSTO + (COSTO * PORCENTAJEGANANCIA);
}
}

POLIMORFISMO DE SUPTIPADO.
LA HABILIDAD PARA REDEFINIR UN MTODO EN CLASES QUE SE
HEREDA DE UNA CLASE BASE SE LLAMA ESPECIALIZACIN.
POR LO TANTO, SE PUEDE LLAMAR UN MTODO DE OBJETO SIN TENER
QUE CONOCER SU TIPO INTRNSECO: ESTO ES POLIMORFISMO DE
SUBTIPADO. PERMITE NO TOMAR EN CUENTA DETALLES DE LAS CLASES
ESPECIALIZADAS DE UNA FAMILIA DE OBJETOS, ENMASCARNDOLOS
CON UNA INTERFAZ COMN (SIENDO ESTA LA CLASE BSICA).
IMAGINE UN JUEGO DE AJEDREZ CON LOS OBJETOS REY, REINA, ALFIL,
CABALLO, TORRE Y PEN, CADA UNO HEREDANDO EL OBJETO PIEZA.
EL MTODO MOVIMIENTO PODRA, USANDO POLIMORFISMO DE
SUBTIPADO, HACER EL MOVIMIENTO CORRESPONDIENTE DE ACUERDO
A LA CLASE OBJETO QUE SE LLAMA. ESTO PERMITE AL PROGRAMA
REALIZAR EL MOVIMIENTO.
DE PIEZA SIN TENER QUE VERSE CONECTADO CON CADA TIPO DE PIEZA
EN PARTICULAR.

SOBREESCRITURA
La sobreescritura se aplica a los mtodos y est directamente relacionada a
la herencia; se refiere a la redefinicin de los mtodos de la clase base en las
subclases. Por ejemplo, en la relacin de herencia del ejemplo de las figuras
aunque la clase base Figura tiene los mtodos calcularArea y
calcularPerimetro, las subclases Circulo, Cuadrado, Triangulo y
Rectngulo redefinen estos mtodos ya que el calculo del rea y el
permetro de cada uno de ellos es diferente.

POLIMORFISMO DE ENLACE DINAMICO


Esto permite invocar operaciones en objetos obviando el tipo actual de
stos hasta el momento de ejecutar el cdigo. O sea, nos permite definir
elementos como un tipo e instanciarlos como un tipo heredado. Pero qu
utilidad tiene obviar el tipo de un objeto para luego tomar esta decisin?.
Gracias a que en java la definicin de los tipos de objetos se puede
producir por enlazado posterior (late binding), no nos debe preocupar a qu
tipo de elemento le paso un mensaje, ya que el compilador tomar la
decisin sobre qu objeto ejecutar qu mtodo de acuerdo a la forma de
crear la instancia.
Este concepto es bastante complejo de entender, ya que estamos
acostumbrados a definir los elementos de acuerdo a lo que necesitamos.
Es decir, si requiero un entero lo declaro como entero; para que declarar
un elemento como un tipo y luego usarlo como otro?. La respuesta est en
que no siempre se puede determinar exactamente el tipo de elemento que
va a usarse en la ejecucin de nuestro programa.

POLIMORFISMO PARAMETRICO.
El polimorfismo paramtrico es la capacidad para definir varias funciones utilizando el
mismo nombre, pero usando parmetros diferentes (nombre y/o tipo). El polimorfismo
paramtrico
selecciona automticamente el mtodo correcto a aplicar en funcin del tipo de datos
pasados en el parmetro.
Por lo tanto, por ejemplo, definir varios mtodos homnimos de addition() efectuando
una suma de valores.
El mtodo int addition(int,int) devolvera la suma de dos nmeros enteros.
float addition(float, float) devolvera la suma de dos flotantes.
char addition(char, char) dara por resultado la suma de dos
caracteres definidos por el autor.

Class CarroBMW extends Carro


{
Public CarroBMW() {
This.modelo= BMW;
}
Public void turbo() {
System.out.println(acabas de viajar a 100 millas por hora:);
}
}
Public static void main(string [] args){
carroBMW c;
C=new CarroBMW();
c.apagar();
c.enceder();
c.turbo();
}

GRACI
AS!!

S-ar putea să vă placă și