Post on 03-Nov-2015
description
JAVA BSICO
Herencia y polimorfismo
Contenido
Herencia
Polimorfismo
18/02/2013miriam.balbuena@gmail.com www.cic.ipn.mx
2
Interfaz
La interaccin de los objetos con el mundo exterior serealiza a travs de los mtodos pblicos que ofrece.
A ste conjunto de mtodos se le llama la interfaz delobjeto.
Por ejemplo, el conjunto de botones que estn al frente dela televisin, son la interfaz entre los componenteselectrnicos internos de la televisin y el mundo exterior.Cada botn ofrece una funcionalidad, por ejemplo, el botnde encendido, prende y apaga la televisin.
La forma comn de una interfaz es un conjunto de mtodossin implementacin.
18/02/2013miriam.balbuena@gmail.com www.cic.ipn.mx
3
Ejemplo
Imaginemos que nos solicitan un sistema para hacerclculos sobre figuras geomtricas.
El sistema no necesita dibujar, solamente debeimplementar operaciones matemticas sobre lasfiguras.
Las primeras operaciones sern el clculo del permetroy el rea.
Para asegurar que todas las figuras geomtricasofrezcan las mismas operaciones, todas las clasesdeben implementar la interfaz IFigura.
18/02/2013miriam.balbuena@gmail.com www.cic.ipn.mx
4
Ejemplo
Implementar una interfaz, permite a una clase formalizar el comportamientoque promete proveer.
Cuando una clase implementa una interfaz debe dar cuerpo a todos losmtodos definidos en ella.
Se pueden implementar cualquier cantidad de interfaces.
Para implementar una interfaz se usa la palabra reservada implements
public interface IFigura {
public double area ();public double perimetro ();
}
18/02/2013miriam.balbuena@gmail.com www.cic.ipn.mx
5
Ejemplo
public class Rectangulo implements IFigura {
double ladoA;double ladoB;
public Rectangulo (double A, double B){ladoA = A;ladoB = B;
}@Overridepublic double area() {
return ladoA*ladoB;}
}
Mtodo de la interfaz, ya
implementado
18/02/2013miriam.balbuena@gmail.com www.cic.ipn.mx
6
Ejemplo
public class Rectangulo implements IFigura {
double ladoA;double ladoB;
public Rectangulo (double A, double B){ladoA = A;ladoB = B;
}@Overridepublic double area() {
return ladoA*ladoB;}@Overridepublic double perimetro() {
return 2*ladoA+2*ladoB;}
}
Mtodos de la interfaz, ya
implementados
18/02/2013miriam.balbuena@gmail.com www.cic.ipn.mx
7
Herencia
18/02/2013miriam.balbuena@gmail.com www.cic.ipn.mx
8
Herencia
La herencia es la capacidad de las clases de Java de utilizar elcomportamiento y los atributos de una clase definida previamente.
La clase que hereda el comportamiento y los atributos de otra clase,puede agregar funcionalidad y atributos propios, de tal maneraque se diferencie de la clase padre.
Permite la reutilizacin de cdigo.
Solo se puede heredar de una clase.
Para heredar de una clase se utiliza la palabra reservada extends
18/02/2013miriam.balbuena@gmail.com www.cic.ipn.mx
9
Ejemplo Herencia
public class Cuadrado extends Rectangulo {
public Cuadrado (double lado){super (lado, lado);
}}
public static void main (String [] args){Cuadrado c= new Cuadrado (3);System.out.println ("P="+c.perimetro ());System.out.println ("A="+c.area ());System.out.println (c);
}
Se invoca el Se invoca el constructor de la
clase padre.
18/02/2013miriam.balbuena@gmail.com www.cic.ipn.mx
10
Clase abstracta
Una clase abstracta, es una clase que puede tenermtodos sin implementar.
No se pueden crear objetos directamente de unaclase abstracta. Se debe crear una clase queherede a esta clase para que implemente losmtodos que no tienen cuerpo.
Para definir una clase abstracta se usa la palabrareservada abstract.
18/02/2013miriam.balbuena@gmail.com www.cic.ipn.mx
11
18/02/2013miriam.balbuena@gmail.com www.cic.ipn.mx12
public abstract class Poligono{
String nombre;int numLados;
public Poligono (int lados, String n){numLados = lados;nombre = n;
}
public String toString (){return nombre;
}
public abstract double semiPerimetro ();public abstract boolean esEquilatero ();
}
18/02/2013miriam.balbuena@gmail.com www.cic.ipn.mx13
public class Circulo extends Poligono implements IFigura{double radio;
public Circulo (double radio, String nombre){super (0, nombre);this.radio = radio;
}
@Overridepublic double area() { return Math.PI * radio * radio; }
@Overridepublic double perimetro() { return 2*Math.PI*radio; }
@Overridepublic double semiPerimetro (){ return perimetro () /2; }
@Overridepublic boolean esEquilatero (){
return true;}
}
18/02/2013miriam.balbuena@gmail.com www.cic.ipn.mx14
public class Rectangulo extends Poligono implements IFigura {double ladoA;double ladoB;public Rectangulo (double A, double B, String nombre){
super (4, nombre);ladoA = A;ladoB = B;
}@Overridepublic double area() { return ladoA*ladoB; }@Overridepublic double perimetro() { return 2*ladoA+2*ladoB; }@Overridepublic double semiPerimetro (){ return perimetro () /2;
}@Overridepublic boolean esEquilatero (){
if (ladoA == ladoB)return true;
elsereturn false;
}}
Cdigo para la clase Main
public class FigurasGeometricas {
public static void main(String[] args) {Rectangulo rectangulo = new Rectangulo (2,
3, "Rectangulo");
Circulo circulo = new Circulo (5, "Circulo");
System.out.print (rectangulo+" Area = ");System.out.println (rectangulo.area());System.out.print (circulo+" Area = ");System.out.println (circulo.area());
}}
18/02/2013miriam.balbuena@gmail.com www.cic.ipn.mx
15
Ejemplo Herencia
public class Cuadrado extends Rectangulo {
public Cuadrado (double lado){super (lado, lado, "Cuadrado");
}}
18/02/2013miriam.balbuena@gmail.com www.cic.ipn.mx
16
Polimorfismo
18/02/2013miriam.balbuena@gmail.com www.cic.ipn.mx
17
Polimorfismo
Polimorfismo significa "muchas formas".
Es la capacidad de los objetos de Java paracomportarse como sus padres, o como susinterfaces.
Es de gran utilidad para manejar conjuntos deobjetos de diferentes clases pero que heredan dela misma o implementan la misma interfaz, como sifueran todos del mismo tipo.
18/02/2013miriam.balbuena@gmail.com www.cic.ipn.mx
18
Ejemplo polimorfismo
public static void main(String[] args) {Rectangulo rectangulo = new Rectangulo (2,
3, "Rectangulo");
Circulo circulo = new Circulo (5, "Circulo");Cuadrado cuadrado = new Cuadrado (9);
IFigura [] figuras = new IFigura[3];figuras[0] = rectangulo;figuras[1] = circulo;figuras[2] = cuadrado;
for (int i = 0; i
Representacin Grfica
ladoA = 3ladoB = 4
perimetro()
area()
perimetro()
area()radio =
5
perimetro()
area()
perimetro()
area()
figuras
18/02/2013miriam.balbuena@gmail.com www.cic.ipn.mx
20
Representacin Grfica
ladoA = 3ladoB = 4
perimetro()
area()
perimetro()
area()radio =
5
perimetro()
area()
perimetro()
area()
figuras
18/02/2013miriam.balbuena@gmail.com www.cic.ipn.mx
21
Representacin Grfica
perimetro()
area()radio =
5
perimetro()
area()
perimetro()
area()
figuras
ladoA = 3ladoB = 4
18/02/2013miriam.balbuena@gmail.com www.cic.ipn.mx
22
Representacin Grfica
perimetro()
area()
perimetro()
area()
figuras
ladoA = 3ladoB = 4
radio = 5
18/02/2013miriam.balbuena@gmail.com www.cic.ipn.mx
23