Copia de Lab 07 - Polimorfismo

10
PROGRAMACIÓN ORIENTADA A OBJETOS LABORATORIO N° 07 POLIMORFISMO CODIGO DEL CURSO: Alumno(s) Nota Grupo Ciclo II DISEÑO DE SOFTWARE E INTEGRACIÓN DE SISTEMAS PROGRAMA DE FORMACIÓN REGULAR

description

polimorfismo steanm

Transcript of Copia de Lab 07 - Polimorfismo

Page 1: 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

Page 2: Copia de Lab 07 - Polimorfismo

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:

Page 3: Copia de Lab 07 - Polimorfismo

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.

Page 4: Copia de Lab 07 - Polimorfismo

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");

}}

Page 5: Copia de Lab 07 - Polimorfismo

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

Page 6: Copia de Lab 07 - Polimorfismo

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() {

Page 7: Copia de Lab 07 - Polimorfismo

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

Page 8: Copia de Lab 07 - Polimorfismo

PROGRAMACION ORIENTADA A OBJETOSLAB 07 - POLIMORFISMO

Nro. DD-106

Página 7 de 6