Guía Práctica de Ejercicios Nº 4 En esta práctica utilizaremos los conceptos vistos sobre herencia, polimorfismo, clases abstractas, interfaces y sobrecarga para aplicarlos en el lenguaje de programación Java. Objetivo: Comprender, profundizar y reafirmar los conceptos de programación orientada a objetos. Introducción: Para entender los beneficios y cualidades de la programación orientada a objetos necesitamos dominar los conceptos de herencia y reusabilidad, para aplicar de forma eficaz y eficiente el paradigma. Además de ésto hoy en día las interfaces son herramientas muy útiles y fomentan el desarrollo de aplicaciones reutilizable y bien definido. Clases y Métodos con los que trabajaremos. System: es una clase de la API de Java que contiene clases y métodos para el trabajo con el sistema operativo. System.out: objeto de tipo OutputStream de la clase System que permite manejar la salida de flujo de información del sistema. System.out.println(String cadena): es un método estático del objeto out del paquete System(veremos más adelante estos conceptos en el curso), lo utilizaremos para mostrar información por la consola en esta práctica. GUGLER – Grupo Universitario de GNU/LINUX de Entre Ríos Página 1 de 3 Ejercicios Ejercicio 1: Dada la siguiente interface y su implementación: public interface House { public void open(File f); public void openFrontDoor(); } public class MyHouse implements House { public void open() { } public void openFrontDoor() { } public void openBackDoor() { } } Indique cuales son los errores en la interfaz y en su implementación. Puede codificar ambas clases en Eclipse para una ayuda. GUGLER – Grupo Universitario de GNU/LINUX de Entre Ríos Página 2 de 3 Ejercicio 2: Crear una clase abstracta denominada Animal, de la cual derivan las clases Perro, Gato y Vaca. Todas las subclases deben redefinir el método abstracto hablar(), de la clase Animal, según como “hable” cada uno. Para ello puede declarar el método como de tipo de retorno void y abstracto y luego utilizar el método println de System.out en cada implementación del mismo. Además realice una clase que contenta el método main() denominada Principal que invoque a un método denominado hablarAnimal(Animal a) que reciba un “Animal” como parámetro, y que le permita “hablar”, polimórficamente, según sea Gato, Perro o Vaca. Ejercicio 3: Teniendo en cuenta los gustos alimenticios de los animales del ejercio anterior (el gato y el perro son carnívoros y la vaca herbívora), incluir las respectivas interfaces de manera que cada uno de los correspondientes objetos pueda comerCarne o comerHierba. Ejercicio 4: Modifique el método main utilizado en el ejercicio 2, invocando a otro método denominado comerAnimal que reciba como parámetro a un Animal e invoque al correspondiente método para comer (comerCarne o comerHierba) según el tipo de animal que sea. GUGLER – Grupo Universitario de GNU/LINUX de Entre Ríos Página 3 de 3