Está en la página 1de 13

POO 1 UNSCH

GUÍA DE LABORATORIO Nº 8
“Clases Abstractas – Interfaces - Polimorfismo”

1. OBJETIVOS

1.1. Comprender el propósito de implementar las clases abstractas.


1.2. Implementar en Java las clases abstractas.
1.3. Implementar soluciones y dar respuestas a los ejercicios propuestos.
1.4. Entender que es una interfaz, polimorfismo.
1.5. Implementar ejemplos en Java de uso de una interfaz, polimorfismo.

2. INFORME PREVIO

3. DESARROLLO TEÓRICO

3.1. Clase Abstracta:


Una clase abstracta es una clase que no se puede instanciar, se usa únicamente
para definir subclases.
Una clase es abstracta cuando uno de sus métodos no tiene implementación(En
Java, el método abstracto se etiqueta con la palabra reservada abstract).

3.2. INTERFACE:
Java no tiene herencia múltiple (C++ sí tiene, por ejemplo). La herencia múltiple
consiste en que una clase puede tener más de un padre. En un principio la
herencia múltiple es atractiva, pero se pueden dar situaciones extrañas y muy
difíciles de manejar como la mostrada en la figura:

Figura 1: Jerarquía con Herencia Múltiple

Ing. Manuel A. Lagos Barzola


POO 2 UNSCH

Por ejemplo, con la clase vehículo podría ocurrir así:

Figura 2: Jerarquía con Herencia múltiple

 ¿Qué pasaría si la clase Vehículo tuviera un atributo llamado matrícula? ¿Cuántas


matrículas tendría la clase VehículoAnfibio?
 Y además, ¿qué pasaría si Vehículo tuviera un método que fuera implementado
de forma diferente por VehículoTerrestre y por VehículoAcuatico.

“Un interface es una lista de métodos (solamente cabeceras de


métodos, sin implementación) que define un comportamiento
específico para un conjunto de objetos”.
Cualquier clase que declare que implementa un determinado interface, debe
comprometerse a implementar todos y cada uno de los métodos que ese interfaz
define. Esa clase, además, pasará a pertenecer a un nuevo tipo de datos extra
que es el tipo del interface que implementa.
Los interfaces actúan, por tanto, como tipos de clases. Se pueden declarar
variables que pertenezcan al tipo del interface, se pueden declarar métodos
cuyos argumentos sean del tipo del interface, asimismo se pueden declarar
métodos cuyo retorno sea el tipo de un interface.

La palabra clave interface produce completamente una clase abstracta, la cual


no proporciona implementación a todo. Aprenderás que la interface es más que
sólo una clase abstracta llevada a un extremo, ya que te permite realizar una
variación sobre la "herencia múltiple" de C++, creando una clase que puede ser
upcast a más de un tipo base.

Ing. Manuel A. Lagos Barzola


POO 3 UNSCH

3.3. POLIMORFISMO:

El polimorfismo es la tercera característica esencial de los lenguajes de


programación orientados a objetos, después de la abstracción de datos y la
herencia.
Polimorfismo significa “muchas formas”. En términos de programación, el
polimorfismo permite que un solo nombre de clase o de método reresente
diferente código seleccionado mediante algún mecanismo automático. De esta
manera, un nombre puede tomar diferentes formas y puesto que puede
representar diferente código, también puede representar muchos
comportamientos distintos.

4. DESARROLLO DE LA PRÁCTICA

4.1. Cree un proyecto denominado ProyectoClaseAbstracta.

4.2. Dentro del proyecto creado cree un paquete denominado “Ejermplo1”.

4.3. Dentro del paquete creado implemente:

Figura es una clase abstracta( en UML se escribe su nombre en cursiva), porque


no tiene sentido calcular su área, pero si la de un cuadrado o un círculo. Si una
subclase de Figura no redefine area(), deberá declararse también como clase
abstracta.

4.3.1. Implemente la clase abstracta Figura:

Ing. Manuel A. Lagos Barzola


POO 4 UNSCH

4.3.2. Describa la clase Figura, la utilización de la palabra reservada abstract.

4.3.3. Ahora implementamos la clase Circulo:

4.3.4. Describa la clase Circulo.

4.3.5. Implementamos ahora la clase Cuadrado.

4.3.6. Describa la clase Cuadrado.

4.3.7. Cree un paquete pruebaEjemplo1.

Ing. Manuel A. Lagos Barzola


POO 5 UNSCH

4.3.8. Dentro del paquete creado anteriormente, implemente una clase


principal ClasePrueba, donde:

a) Declare e inicialice un objeto de la clase Figura.


b) Declare e inicialice un objeto de la clase Circulo.
c) Declare e inicialice un objeto de la clase Cuadrado.
d) Muestre por consola cada uno de los atributos de los objetos creados
y también muestre el resultado de llamar al método area() de cada
uno de los objetos.
e) Si ocurre algún problema a la hora de ejecutar el código, describa y
corrija los errores encontrados.

4.4. Cree un proyecto denominado ProyectoInterfaces.

4.5. Dentro del proyecto creado cree un paquete denominado ejemploInterfaces.

4.6. Dentro del paquete creado implemente la interfaz iBarco:

Cualquier clase que implemente esta interfaz (lista de comportamientos


comunes). Debe implementar cada uno de los métodos definidos en la interfaz.

4.7. En el paquete actual defina la clase Barco, que implementa la interfaz iBarco:

Ing. Manuel A. Lagos Barzola


POO 6 UNSCH

4.7.1. Describa la clase Barco, indique la finalidad de la palabra reservada


implements.

4.7.2. Analice e interprete por qué la clase Barco no implementa los métodos
definidos en la interfaz iBarco.

4.8. Defina en el paquete actual la clase:

4.9. Defina en el paquete actual la clase PortaAvion:

4.9.1. Termine de implementar correctamente la clase PortaAvion.

4.9.2. Analice y describa la clase PortaAvion.

4.10. En el paquete actual defina la clase PruebaBarcos, donde:

a) Defina un arreglo de Barcos de dos elementos.

b) Declare e inicialice un objeto de la clase BarcoPasajero.

c) Declare e inicialice un objeto de la clase PortaAvion.

Ing. Manuel A. Lagos Barzola


POO 7 UNSCH

d) Agregue los dos objetos creados al arreglo de barcos .

e) Imprima por consola el resultado de invocar al método mensaje(), de


cada uno de los elementos del arreglo de Barcos.

4.11. Defina un nuevo proyecto proyectoPolimorfismo, y cree un paquete


ejemploPolimorfismo dentro de él.

4.12. Defina las siguientes clases en el paquete creado.

Ing. Manuel A. Lagos Barzola


POO 8 UNSCH

Ing. Manuel A. Lagos Barzola


POO 9 UNSCH

4.13. Ejecute la clase principal, observe y analice los resultados.

4.14. Responda:

Ing. Manuel A. Lagos Barzola


POO 10 UNSCH

4.14.1. Analice y describa las clases, es indispensable describir correctamente


los principales métodos de cada una de las clases.
4.14.2. Identifique de qué manera se dan comportamientos polimórficos y en
que parte del código de las clases.
4.14.3. Identifique los tipos de polimorfismo que se implementan en el
ejemplo.

5. CUESTIONARIO

PROBLEMA 01:
Cree un nuevo proyecto, dentro de él un paquete. Defina las siguientes clases en
el paquete creado:

Ing. Manuel A. Lagos Barzola


POO 11 UNSCH

Responda:

Ing. Manuel A. Lagos Barzola


POO 12 UNSCH

PROBLEMA 2:

Ing. Manuel A. Lagos Barzola


POO 13 UNSCH

6. CONCLUSIONES

7. RECOMENDACIONES

8. BIBLIOGRAFÍA

Ing. Manuel A. Lagos Barzola

También podría gustarte