herencia y polimorfismo

23
 JAVA BÁSICO Herencia y polimorfismo

Upload: erick-suarez

Post on 03-Nov-2015

4 views

Category:

Documents


1 download

DESCRIPTION

Herencia Y Polimorfismo en Java, Empezando a programar.

TRANSCRIPT

  • JAVA BSICO

    Herencia y polimorfismo

  • Contenido

    Herencia

    Polimorfismo

    18/02/[email protected] 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/[email protected] 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/[email protected] 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/[email protected] 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/[email protected] 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/[email protected] www.cic.ipn.mx

    7

  • Herencia

    18/02/[email protected] 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/[email protected] 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/[email protected] 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/[email protected] www.cic.ipn.mx

    11

  • 18/02/[email protected] 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/[email protected] 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/[email protected] 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/[email protected] www.cic.ipn.mx

    15

  • Ejemplo Herencia

    public class Cuadrado extends Rectangulo {

    public Cuadrado (double lado){super (lado, lado, "Cuadrado");

    }}

    18/02/[email protected] www.cic.ipn.mx

    16

  • Polimorfismo

    18/02/[email protected] 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/[email protected] 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/[email protected] www.cic.ipn.mx

    20

  • Representacin Grfica

    ladoA = 3ladoB = 4

    perimetro()

    area()

    perimetro()

    area()radio =

    5

    perimetro()

    area()

    perimetro()

    area()

    figuras

    18/02/[email protected] www.cic.ipn.mx

    21

  • Representacin Grfica

    perimetro()

    area()radio =

    5

    perimetro()

    area()

    perimetro()

    area()

    figuras

    ladoA = 3ladoB = 4

    18/02/[email protected] www.cic.ipn.mx

    22

  • Representacin Grfica

    perimetro()

    area()

    perimetro()

    area()

    figuras

    ladoA = 3ladoB = 4

    radio = 5

    18/02/[email protected] www.cic.ipn.mx

    23