You are on page 1of 7

PROGRAMACIN ORIENTADA A OBJETOS

LABORATORIO N 07

POLIMORFISMO
CODIGO DEL CURSO:

Alumno(s)

Grupo
Ciclo
Fecha de entrega

II

DISEO DE SOFTWARE E INTEGRACIN DE SISTEMAS


PROGRAMA DE FORMACIN REGULAR

Nota

PROGRAMACION ORIENTADA A OBJETOS


LAB 07 - POLIMORFISMO

Nro. DD-106
Pgina 1 de 6

I.- OBJETIVOS:

Identificar las principales caractersticas de las clases Abstractas en Java


Implementar clases Abstractas en Java
Implementar polimorfismo en Java empleando clases Abstractas
Identificar las principales caractersticas de las interfaces en Java
Implementar el polimorfismo en Java empleando interfaces

II.- SEGURIDAD:
Advertencia:
En este laboratorio est prohibida la manipulacin del
hardware, conexiones elctricas o de red; as como la
ingestin de alimentos o bebidas.

III.- FUNDAMENTO TERICO:

En algunos casos es posible crear clases Java que NO permitirn 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 mltiples 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.- METODOLOGA 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 continuacin se muestra en forma grfica la estructura de clases a crear:

PROGRAMACION ORIENTADA A OBJETOS


LAB 07 - POLIMORFISMO

Nro. DD-106
Pgina 2 de 6

3. Crear una nueva clase ABSTRACTA denominada FiguraGeometrica con el siguiente


contenido:

public abstract class FiguraGeometrica {


abstract public double perimetro();
abstract public double area();
}
Nota: Esta clase abstracta ser utilizada como la clase raz de las clases descendientes:
Circulo, Rectangulo y Cuadrado.
FiguraGeometrica es una clase generica, no hay una frmula para calcular su
permetro o rea, por tanto dichos mtodos deben ser declarados como abstract los
cuales si podrn ser implementados en las clases descendientes.
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() {

PROGRAMACION ORIENTADA A OBJETOS


LAB 07 - POLIMORFISMO

Nro. DD-106
Pgina 3 de 6

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 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 mtodo main()
8. En el mtodo 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 cdigo del mtodo main() anterior como se indica a continuacin, 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 OBJETOS


LAB 07 - POLIMORFISMO

Nro. DD-106
Pgina 4 de 6

11. Ejecute el programa y analice el resultado obtenido:


POLIMORFISMO BASADO EN INTERFACES
-

Un interface es parecido a una clase abstracta en Java.


Los mtodos que se declaran en una interface, por defecto son pblicos y abstractos.
Las variables (propiedades) de una interface sern las propiedades de la clase que la
implementen.
Una interface se implementa (implements) pero una clase abstracta se extiende
(extends).
Una clase puede implementar mltiples interfaces (herencia mltiple)
Una clase descendiente slo puede extender una clase padre (herencia simple).
De una interface podemos declarar referencias.

1. Crear un nuevo proyecto en java denominado: PolimorfismoInterfaces


2. A continuacin se muestra en forma grfica la estructura de interfaces y clases a crear:

Interfaz

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

PROGRAMACION ORIENTADA A OBJETOS


LAB 07 - POLIMORFISMO

Nro. DD-106
Pgina 5 de 6

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

PROGRAMACION ORIENTADA A OBJETOS


LAB 07 - POLIMORFISMO

Nro. DD-106
Pgina 6 de 6

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 permetros 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

You might also like