Copia de Lab 07 - Polimorfismo
description
Transcript of Copia de Lab 07 - Polimorfismo
PROGRAMACIÓN ORIENTADA A OBJETOS
LABORATORIO N° 07
POLIMORFISMO
CODIGO DEL CURSO:
Alumno(s) Nota
GrupoCiclo IIFecha de entrega
DISEÑO DE SOFTWARE E INTEGRACIÓN DE SISTEMASPROGRAMA DE FORMACIÓN REGULAR
PROGRAMACION ORIENTADA A OBJETOSLAB 07 - POLIMORFISMO
Nro. DD-106
Página 1 de 6
I.- OBJETIVOS: Identificar las principales características de las clases Abstractas en Java Implementar clases Abstractas en Java Implementar polimorfismo en Java empleando clases Abstractas Identificar las principales características de las interfaces en Java Implementar el polimorfismo en Java empleando interfaces
II.- SEGURIDAD:Advertencia:En este laboratorio está prohibida la manipulación del hardware, conexiones eléctricas o de red; así como la ingestión de alimentos o bebidas.
III.- FUNDAMENTO TEÓRICO: En algunos casos es posible crear clases Java que NO permitirán crear objetos, para ello la clase debe ser
creada como una clase abstracta Para crear una clase como abstracta se debe colocar la palabra reservada “abstract” al inicio de la
clase El polimorfismo permite crear variables que puedan comportarse de múltiples formas. Esto se consigue
referenciando con una misma variable a objetos de diferentes tipos. El polimorfismo se puede implementar de 2 formas
Polimorfismo basado en la herencia con clases abstractas. Polimorfismo basado en interfaces.
IV.- NORMAS EMPLEADAS:No aplica
V.- RECURSOS: En este laboratorio cada alumno trabajará con un equipo con Windows XP. Este equipo cuenta con JDK instalado, así como alguno de los IDE (Entorno de Desarrollo Integrado)
como Eclipse o NetBeans.
VI.- METODOLOGÍA PARA EL DESARROLLO DE LA TAREA: El desarrollo del laboratorio es individual.
VII.- PROCEDIMIENTO:
POLIMORFISMO BASADO EN CLASES ABSTRACTAS
1. Crear un nuevo proyecto en java denominado: PolimorfismoAbst
2. A continuación se muestra en forma gráfica la estructura de clases a crear:
3. Crear una nueva clase ABSTRACTA denominada FiguraGeometrica con el siguiente contenido:
PROGRAMACION ORIENTADA A OBJETOSLAB 07 - POLIMORFISMO
Nro. DD-106
Página 2 de 6
public abstract class FiguraGeometrica {abstract public double perimetro();abstract public double area();
}
4. Crear una nueva clase denominada Circulo que sea descendiente de la clase abstracta FiguraGeometrica on el siguiente contenido:
public class Circulo extends FiguraGeometrica {protected double radio;
public Circulo(double r) {radio = r;
}
public double getRadio() {return radio;
}
public void setRadio(double r) {radio = r;
}
public double perimetro() {return 2 * Math.PI * radio;
}
public double area() {return Math.PI * radio * radio;
}}
5. Crear una nueva clase denominada Rectangulo que sea descendiente de la clase abstracta FiguraGeometrica on el siguiente contenido:
public class Rectangulo extends FiguraGeometrica {protected double largo, alto;
public Rectangulo(double a, double b) {largo = a;alto = b;
}
public double getLargo() {return largo;
}
public void setLargo(double largo) {this.largo = largo;
}
public double getAlto() {return alto;
}
Nota: Esta clase abstracta será utilizada como la clase raíz de las clases descendientes: Circulo, Rectangulo y Cuadrado.
FiguraGeometrica es una clase generica, no hay una fórmula para calcular su perímetro o área, por tanto dichos métodos deben ser declarados como abstract los cuales si podrán ser implementados en las clases descendientes.
PROGRAMACION ORIENTADA A OBJETOSLAB 07 - POLIMORFISMO
Nro. DD-106
Página 3 de 6
public void setAlto(double alto) {this.alto = alto;
}
public double perimetro() {return 2 * (largo + alto);
}
public double area() {return largo * alto;
}}
6. Crear una nueva clase denominada Cuadrado que sea descendiente de la clase abstracta Rectangulo con el siguiente contenido:
public final class Cuadrado extends Rectangulo {
public Cuadrado(double lado) {super(lado, lado);
}
public double getLado() {return getLargo();
}}
7. Adicionar una nueva clase al programa denominado ProgramaPrincipal con método main()
8. En el método main() de la nueva clase intente crear un nuevo objeto de la clase FiguraGeometrica, observe que se muestra un error:
9. ¿Por qué no se permite crear un objeto de la clase FiguraGeometrica?
10. Modifique el código del método main() anterior como se indica a continuación, luego ejecute el programa y analice el resultado obtenido:
public class ProgramaPrincipal {public static void main(String[] args) {
FiguraGeometrica fg;
fg = new Circulo(30);System.out.println("Area circulo: " + fg.area());System.out.println("Perimetro circulo: " + fg.perimetro() + "\n");
fg = new Rectangulo(40, 30);System.out.println("Area Rectangulo: " + fg.area());System.out.println("Perimetro Rectangulo: " + fg.perimetro() + "\
n");
fg = new Cuadrado(20);System.out.println("Area Cuadrado: " + fg.area());System.out.println("Perimetro Cuadrado: " + fg.perimetro() + "\n");
}}
PROGRAMACION ORIENTADA A OBJETOSLAB 07 - POLIMORFISMO
Nro. DD-106
Página 4 de 6
11. Ejecute el programa y analice el resultado obtenido:
POLIMORFISMO BASADO EN INTERFACES
1. Crear un nuevo proyecto en java denominado: PolimorfismoInterfaces
2. A continuación se muestra en forma gráfica la estructura de interfaces y clases a crear:
3. Crear una nueva INTERFACE denominada IFiguraGeometrica con el siguiente contenido:
public interface IFiguraGeometrica {double area();double perimetro();
}
4. Crear una nueva clase Circulo que IMPLEMENTE la interface anterior con el siguiente contenido:
- Un interface es parecido a una clase abstracta en Java.- Los métodos que se declaran en una interface, por defecto son públicos y abstractos.- Las variables (propiedades) de una interface serán las propiedades de la clase que la implementen.- Una interface se implementa (implements) pero una clase abstracta se extiende (extends).- Una clase puede implementar múltiples interfaces (herencia múltiple)- Una clase descendiente sólo puede extender una clase padre (herencia simple).- De una interface podemos declarar referencias.- De una interface no se pueden crear objetos (similar a una clase abstracta).
Interfaz I
PROGRAMACION ORIENTADA A OBJETOSLAB 07 - POLIMORFISMO
Nro. DD-106
Página 5 de 6
public class Circulo implements IFiguraGeometrica {
protected double radio;
public Circulo(double r) {radio = r;
}
public double getRadio() {return radio;
}
public void setRadio(double radio) {this.radio = radio;
}
public double perimetro() {return 2 * Math.PI * radio;
}
public double area() {return Math.PI * radio * radio;
}
}
5. Crear una nueva clase Rectangulo que IMPLEMENTE la interface anterior con el siguiente contenido:
public class Rectangulo implements IFiguraGeometrica {protected double largo, alto;
public Rectangulo(double a, double b) {largo = a;alto = b;
}
public double getLargo() {return largo;
}public void setLargo(double largo) {
this.largo = largo;}public double getAlto() {
return alto;}public void setAlto(double alto) {
this.alto = alto;}public double perimetro() {
return 2 * (largo + alto);}public double area() {
return largo * alto;}
}
6. Crear una nueva clase final Cuadrado que sea hija de la clase Rectangulo con el siguiente contenido:
public class Cuadrado extends Rectangulo {
public Cuadrado(double lado) {super(lado, lado);
}
public double getLado() {
PROGRAMACION ORIENTADA A OBJETOSLAB 07 - POLIMORFISMO
Nro. DD-106
Página 6 de 6
return getLargo();}
}
7. Implemente una clase denominada ProgramaPrincipal3 con el siguiente contenido:
public class ProgramaPrincipal {
public static void main(String[] args) {IFiguraGeometrica fg;
fg = new Circulo(30);System.out.println("(I)Area circulo: " + fg.area());System.out.println("(I)Perimetro circulo: " + fg.perimetro() + "\
n");
fg = new Rectangulo(40, 30);System.out.println("(I)Area Rectangulo: " + fg.area());System.out.println("(I)Perimetro Rectangulo: " + fg.perimetro() + "\
n");
fg = new Cuadrado(20);System.out.println("(I)Area Cuadrado: " + fg.area());System.out.println("(I)Perimetro Cuadrado: " + fg.perimetro() + "\
n");}
}
8. Ejecute el programa anterior:
EJERCICIOS
1. Implemente un programa que haga uso del polimorfismo y que permita acceder, desde una única variable, a objetos de diferentes tipos para calcular áreas, volumenes y perímetros de diferentes tipos de poliedros.
2. Proponga un programa ejemplo de polimorfismo usando clases abstractas
3. Proponga un programa ejemplo de polimorfismo usando interfaces
VIII.- OBSERVACIONES Y CONCLUSIONES
PROGRAMACION ORIENTADA A OBJETOSLAB 07 - POLIMORFISMO
Nro. DD-106
Página 7 de 6