MEDIA TÉCNICA DESARROLLO DE SOFTWARE GUIA # 10 TEMA: Herencia
Estudiante:________________________________________ fecha____ Grado____Nota:_____ Duración: 6 horas JUSTIFICACIÓN: Se pretende que el estudiante conozca la codificación en java sobre la herencia OBJETIVOS :
Identificar los métodos para
establecer el manejo de herencia en java
Herencia: La herencia es un concepto que relaciona clases una encima de otra de un manera
jerárquica. Esto permite que los descendientes de una clase hereden todas las variables y métodos de sus ascendientes, además de crear los suyos propios. A estos descendientes se les llama subclases. Al padre inmediato de una clase se le llama su superclase. En este ejemplo La clase base es Figura, y de ella van a heredar las clases Poligono y Circulo. A su vez, de Poligono heredarán las clases Cuadrado y Triangulo. El diagrama esquemático de clases es el siguiente: Figura
Circulo
Polígono
Triangulo
Cuadrado
La clase base Figura solo tiene dos atributos: nombre de la figura y perimetro (longitud total de su borde exterior) y, aparte del constructor, un único método llamado imprimirInformacion que imprime por pantalla la información de la figura. Aquí está la clase Figura programada: public class Figura { String nombre; double perimetro; public Figura(String nombre, double perimetro) { this.nombre = nombre; this.perimetro = perimetro; } public void imprimirInformacion() { System.out.println("Soy un "+nombre+" y mi perimetro es "+perimetro+" m"); } public static void main(String[] args) { Figura cuad= new Figura("cuadrado", 2*4); Figura circ= new Figura("cuadrado" ,2); Figura tria= new Figura("triangulo", (3*3)); cuad.imprimirInformacion(); Prep. por: Juan Carlos Pérez versión 1.0 www.esnips.com/web/desarrollo
1
circ.imprimirInformacion(); tria.imprimirInformacion(); } }
En el método main, crea tres objetos y luego imprime la información de cada uno de ellos: un cuadrado de lado 2 metros, un círculo de radio 2 metros y un triángulo de lado 3 metros. Compila y ejecuta el programa. La salida por pantalla debe ser la siguiente: Soy un cuadrado y mi perimetro es 8.0 m Soy un cuadrado y mi perimetro es 2.0 m Soy un triangulo y mi perimetro es 9.0 m
EJERCICIO 2 : Clase Círculo
Ahora vas a programar la clase Circulo, que hereda de la clase anterior Figura. Esta nueva clase tiene un atributo más (aparte de los heredados), de tipo double, que almacena el radio del círculo, que se le pasa en el constructor. El radio nos sirve para calcular el perímetro del círculo (2*pi*radio). Además esta clase sobreescribe el método anterior imprimirInformacion() Para añadir un mensaje más explicativo con el valor del radio.
super Hay una variable especial en Java llamada super, que se refiere directamente a los constructores de la superclase. Este ejemplo define una nueva versión de circulo que utiliza el constructor super para inicializar radio El código de la clase Circulo es el siguiente: public class Circulo extends Figura { double radio; public Circulo(double radio) { super("Circulo", 2*Math.PI*radio); this.radio = radio; } public void imprimirInformacion() { System.out.println("Soy un circulo y mi radio es "+radio+" m, mi perimetro es "+perimetro+" m"); } public static void main(String[] args) { Figura c1= new Circulo(2); Figura c2= new Circulo(3); c1.imprimirInformacion(); c2.imprimirInformacion(); } } El resultado es
Soy un círculo y mi radio es 2.0 m, mi perímetro es 12.5663704 m Soy un círculo y mi radio es 3.0 m, mi perímetro es 18.849555600000002 m
Prep. por: Juan Carlos Pérez versión 1.0 www.esnips.com/web/desarrollo
2
EJERCICIO 3 : Clase Polígono
Ahora toca la clase Poligono, muy parecida a la clase Circulo anterior. La diferencia es que en vez de radio los atributos del polígono son el número de lados y la longitud de cada lado, con los que podemos calcular el valor del perímetro. Este ejercicio consiste en programar la clase Poligono. En el método main crea dos polígonos, uno de 3 lados con longitud 3 (triángulo) y otro de 4 lados con longitud 4 (cuadrado). El esqueleto de la clase es el siguiente:
public class Poligono extends Figura { int numeroLados; double longitudLado; public Poligono(String nombre, int numeroLados, double longitudLado) { super(nombre,(numeroLados*longitudLado)); this.numeroLados=numeroLados; this.longitudLado=longitudLado; } public void imprimirInformacion() { System.out.println("Soy un polígono "+nombre+", tengo "+numeroLados+ " lados de longitud "+longitudLado+" m, mi perímetro es "+perimetro+ " m"); } public static void main(String[] args) { Figura c= new Poligono("Cuadrado",4,2); Figura t= new Poligono("Triángulo",3,2); c.imprimirInformacion(); t.imprimirInformacion(); } }
La salida en pantalla debe ser la siguiente: polígono Cuadrado, tengo 4 lados de longitud 2.0 m, mi perímetro es 8.0 m Soy un polígono Triángulo, tengo 3 lados de longitud 2.0 m, mi perímetro es 6.0 m
EJERCICIO 4 : Clases Cuadrado y Triángulo
Sólo quedan las clases Cuadrado y Triangulo, que derivan de la clase Poligono. Estas dos clases no tienen atributos nuevos y ni siquiera sobreescriben el método imprimirInformacion. Programa las dos clases. En cada una de ellas, añade un main() que cree dos objetos. Los esqueletos de las clases son los siguientes: public class Triangulo extends Poligono { public Triangulo(double longitudLado) { super("Triangulo",3,longitudLado); } public static void main(String[] args) { Figura t1= new Triangulo(2.0); Figura t2= new Triangulo(5.0); t1.imprimirInformacion(); t2.imprimirInformacion(); } } Prep. por: Juan Carlos Pérez versión 1.0 www.esnips.com/web/desarrollo
3
La salida en pantalla debe ser la siguiente: Soy un polígono Triangulo, tengo 3 lados de longitud 2.0 m, Soy un polígono Triangulo, tengo 3 lados de longitud 5.0 m,
mi perímetro es 6.0 m mi perímetro es 15.0 m
public class Cuadrado extends Poligono { public Cuadrado(double longitudLado) { super("Cuadrado",4,longitudLado); } public static void main(String[] args) { Figura c1= new Cuadrado(2.0); Figura c2= new Cuadrado(5.0); c1.imprimirInformacion(); c2.imprimirInformacion(); } }
Actividades: Realizar cada uno de los ejercicios propuestos en la guia. Explicación de algunos aspectos sobre la herencia. Evaluación: revisar los ejercicios planteados en clase 1. Que la subclase Triangulo imprima los datos de 5 triangulos 2. Que la subclase cuadrado imprima los datos de 5 cuadrados 3. Que la subclase poligono imprima los datos de 5 poligonos
Bibliografía:Piensa en java, Eckel Bruce www.esnips.com/web/desarrollo www.java.com
Prep. por: Juan Carlos Pérez versión 1.0 www.esnips.com/web/desarrollo
4