Tema2
Upcoming SlideShare
Loading in...5
×
 

Tema2

on

  • 4,214 views

 

Statistics

Views

Total Views
4,214
Views on SlideShare
4,189
Embed Views
25

Actions

Likes
0
Downloads
131
Comments
0

1 Embed 25

http://www.slideshare.net 25

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Tema2 Tema2 Presentation Transcript

    • HERENCIA
    TEMA
  • CAPACIDADES      Conocer la propiedad de la orientación a objetos: Herencia.      Especificar jerarquía de clases.     Determinar las diferencias entre Herencia Simple y Herencia Múltiple     Desarrollar aplicaciones en Java de problemas con orientación a objetos: Uso de Herencia.
  • Herencia. Definición La Herencia es la relación que existe entre dos clases, en la que una clase derivada se crea a partir de otra ya existente, denominada clase base Es un Mecanismo exclusivo y fundamental de la Programación Orientada a Objetos. Es el principal mecanismo que ayuda a fomentar y facilitar la reutilización del software
  • Herencia. Definición La relación de herencia se establece entre una nueva clase (referida aquí con el nombre Nueva ) y una clase ya existente (referida aquí con el nombre Existente ).
  • Herencia. Definición
    • La relación de herencia se establece entre una clase Nueva y una clase Existente .
    • Sobre la clase que hereda de la existente:
    • Nueva hereda todas las características de Existente .
    • Nueva puede definir características adicionales.
    • Nueva puede redefinir características heredadas de Existente .
    • El proceso de herencia no afecta de ninguna forma a la superclase Existente .
    • Para que una nueva clase sea subclase de otra existente basta con añadir extends existente a continuación del nombre de la nueva:
  • Herencia. Definición public class Nueva extends Existente { ..... }  
  • Tipos de Herencia.  
    • HERENCIA SIMPLE
    • es un tipo de herencia en la que una clase hereda el estado (estructura) y el comportamiento de una sola clase base. Es decir hay herencia múltiple cuando una clase hereda de una sola clase base.
  • Tipos de Herencia.  
    • HERENCIA MULTIPLE
    • E s un tipo de herencia en la que una clase hereda el estado (estructura) y el comportamiento de más de una clase base.
    • Java no ha desarrollado la herencia múltiple, sólo permite la herencia de una sola clase base. En casos especiales es posible simular herencia múltiple con las interfaces.
  • Ejemplo Herencia Múltiple
  • Herencia. Implementación Java Public class Empleado{ protected String codigo; protected String apell, nomb, cargo; protected double sueldo; public Empleado(String ncod, String nape, String nnom, String ncar, double nsuel) { codigo=ncod; apell=nape; nomb=nnom; cargo=ncar; sueldo=nsuel; }  
  • Herencia. Implementación Java. public void aumentasueldo(double porcentaje) { sueldo+=sueldo*porcentaje*100; }   public Strint toString() { return apell+nomb; } }
  • Herencia. Implementación Java. public class Ejecutivo extends Empleado { double presupuesto; public Ejecutivo(String ncod, String nap, String nno, String ncar, double nsuel, double npres) { super(ncod, nap, nno, ncar, nsuel, npres); this.presupuesto=npres; }   public void asignapres(double p) { presupuesto=p; } }
  • Herencia. Implementación Java ........ Ejecutivo jef=new Ejecutivo(“Juan”, “Perez”, “jefe logística”, 2000, 30000); jef.aumentasueldo(); ........ .......
  • Categoría protected: El especificador de acceso protected es equivalente al especificador private con el agregado de que los atributos protegidos de una clase base son accesibles para los miembros de cualquier clase derivada de esa clase.
  •  
  • Herencia y Constructores
    • Los constructores de la clase base se invocan antes del constructor de la clase derivada.
    • Si una clase base, es a su vez una clase derivada, sin constructores se invocan también en secuencia: constructor base, constructor derivada.
    • Los constructores no se heredan aunque los constructores por defecto se generan si se requiere.
  • Jerarquía de Clases
  • La clase Object Object es la raiz de la jerarquía de herencia (de implementación) en Java Object define un conjunto de métodos útiles, que pueden ser redefinidos en cada clase
  • Métodos de la clase clase Object
    •   public boolean equals(Object o) : Permite definir el criterio de igualdad utilizado para los objetos de una determinada clase (el operador == únicamente chequea la igualdad de referencias).
    • public String toString() : Permite decidir la representación externa de un objeto. Por defecto es el valor de su referencia, etiquetada con el nombre de la clase.
    • protected Object clone() throws CloneNotSupportedException : devuelve una copia del objeto si la clase implementa la interfaz Cloneable.
  • Métodos de la clase clase Object
    •   public final Class getClass(): clase que representa el tipo del objeto.
    • protected void finalize() throws Thorowable: (relacionado con liberar memoria) 
  • Ejemplo. Métodos clase Object class Punto implements Cloneable { private int x,y; public Punto(int a, int b) { x=a; y=b; } public Punto() { x=0; y=0; }
  • Ejemplo. Métodos clase Object public Object clone() { Object obj=null; try { obj=super.clone(); } catch(CloneNotSupportedException ex) { System.out.println("no se puede duplicar.."); } return obj; } public void trasladar (int dx, int dy) { x=x+dx; y=y+dy; }
  • Ejemplo. Métodos clase Object public String toString() { String texto="origen: ("+x+", "+y+")"; return texto; } protected void finalize() throws Throwable { System.out.println("Finalizando objetos..."); } }
  • Ejemplo. Métodos clase Object public class TestP { public static void main(String[]args)throws IOException { int wa, wb; String temp; BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); PrintStream sal=System.out; sal.println("Ingrese valor x:"); temp=br.readLine(); wa=Integer.parseInt(temp);
  • Ejemplo. Métodos clase Object sal.println("Ingrese valor y: "); temp=br.readLine(); wb=Integer.parseInt(temp); Punto p1=new Punto(wa,wb); temp=p1.toString(); sal.println(temp); p1.trasladar(5,5); temp=p1.toString(); sal.println(temp);
  • Ejemplo. Métodos clase Object sal.println("segundo objeto2"); Punto p2= (Punto) p1.clone(); temp=p2.toString(); sal.println(temp); if (p1.equals(p2)) { sal.println("Objetos iguales.."); } else { sal.println("Objetos Diferentes....."); }
  • Ejemplo. Métodos clase Object p1=null; p2=null; // Ejecutar el recolector de basura Runtime runtime = Runtime.getRuntime(); runtime.gc(); runtime.runFinalization(); } }
  • Java - Herencia APLICACIÓN DESARROLLADA
  • Enunciado aplicación Herencia Elabore una aplicación java que implemente herencia de figuras geométricas (cuadrado, triángulo y círculo). Implementar métodos y botones para calcular el área y dibujar el objeto correspondiente.
  • Pasos 1. Diseñe la interfaz visual.
  • Pasos
  • Pasos
  • 2. Escribir atributos y métodos de la clase Figura public class Figura { protected String nombre; protected double area; public Figura(String xno) { nombre=xno; } public String getnonbre() { return "Soy un "+nombre; }   public double getarea() { return area; } }
  • 3. Escribir atributos y métodos de la clase Poligono public class Poligono extends Figura { protected double largo,ancho; public Poligono(String xn, double a, double b) { super(xn); largo=a; ancho=b; } public double getlar() { return largo; } public double getan() { return ancho; } }
  • 4. Escribir atributos y métodos de la clase Circulo public class Circulo extends Figura { private double radio; public Circulo(double ra) { super("circulo"); radio=ra; }   public void areacir() { area=3.1415*radio*radio; }   public void dibujacir(Graphics g) { int xl, xa; int tx=(int)radio; int ty=(int)radio; g.drawOval(300,200,tx,tx); } }
  • 5. Escribir atributos y métodos de la clase Cuadrado public class Cuadrado extends Poligono { public Cuadrado(double m) { super("cuadrado",m,m); }   public void areacuad() { area=largo*ancho; } public void dibujacuad(Graphics g) { int xl, xa; xl=(int)largo; g.drawLine(300,200,300+xl,200); g.drawLine(300+xl,200,300+xl,200+xl); g.drawLine(300+xl,200+xl,300,200+xl); g.drawLine(300,200+xl,300,200); } }
  • 6. Escribir atributos y métodos de la clase Triangulo public class Triangulo extends Poligono { public Triangulo(double p, double q) { super("triangulo",p,q); } public void areatrian() { area=0.5*largo*ancho; }   public void dibujatrian(Graphics g) { int xl, xa; xl=(int)largo; xa=(int)ancho; g.drawLine(300,200,300+xl,200); g.drawLine(300+xl,200,300+xl,200+xl); g.drawLine(300+xl,200+xl,300,200); } }
  • 7. Definición de Objetos En la clase Frame1 definir los siguientes objetos: Cuadrado c1; Triangulo t1; Circulo cir;
  • 8. Codificar botones void jButton1_actionPerformed(ActionEvent e) { double xa; Graphics g=getGraphics(); xa=Double.valueOf(txtlado.getText()).doubleValue(); c1=new Cuadrado(xa); salida.append(""+c1.getnonbre()); c1.areacuad(); salida.append(" Area Cuadrado: "+c1.getarea()); c1.dibujacuad(g); }
  • 8. Codificar botones void jButton2_actionPerformed(ActionEvent e) { txtlado.setText(""); salida.setText(""); }   void jButton3_actionPerformed(ActionEvent e) { double xa,xb; Graphics g=getGraphics(); xa=Double.valueOf(txtbase.getText()).doubleValue(); xb=Double.valueOf(txtaltura.getText()).doubleValue(); t1=new Triangulo(xa,xb); salida1.append(""+t1.getnonbre()); t1.areatrian(); salida1.append(" Area Triangulo: "+t1.getarea()); t1.dibujatrian(g); }
  • 8. Codificar botones void jButton4_actionPerformed(ActionEvent e) { txtbase.setText(""); txtaltura.setText(""); salida1.setText(""); }   void jButton5_actionPerformed(ActionEvent e) { double xra; Graphics g=getGraphics(); xra=Double.valueOf(txtradio.getText()).doubleValue(); cir=new Circulo(xra); salida2.append(""+cir.getnonbre()); cir.areacir(); salida2.append(" Area Circulo: "+cir.getarea()); cir.dibujacir(g); }
  • Ejecución
  • Ejecución
  • Ejecución
  • GRACIAS POR SU ATENCION