Sunteți pe pagina 1din 6

Gua de ejercicios para la prueba nmero 3

1. Explique los conceptos Polimorfismo Herencia Modificador final y abstract Interfaz 2. Algunas preguntas de teora Qu es una interfaz? Cmo se implementa en JAVA una interfaz? Qu significa que una clase implementa una interfaz? Cul es la diferencia entre una clase y un objeto? En qu consiste la herencia? Cmo se indica en JAVA que una clase hereda de otra? Qu mtodos de la clase padre son visibles desde la clase hija? Qu es una clase abstracta? Si no pueden instanciarse objetos, qu sentido tiene definir una clase abstracta? Cmo se programa en JAVA una clase abstracta? Cmo se invoca desde la clase hija, un mtodo de la clase padre? Cmo se invoca, desde la clase hija, un constructor de la clase padre? 3. Cree una jerarqua simple "figura": una clase base llamada Figura y una clases derivadas llamadas Circulo, Cuadrado, y Triangulo. En la clase base, hay que hacer una funcin abstracta llamada dibujar(), y sobreescribirla en las clases derivadas. Hacer un array de punteros a objetos Figura que se cree en la clase principal y llenarlo con diversas figuras, posteriormente llamar a dibujar() a travs de la clase base para verificar el comportamiento de las funciones. 4. Cree una jerarqua de herencia de Roedores: Raton, Gerbo, Hamster, etc. En la clase base, proporcione los mtodos que son comunes a todos los roedores, y redefina aquellos en las clases derivadas para que tengan diferentes comportamientos dependiendo del tipo especfico de roedor. Cree un array de punteros a Roedor, rellenelo con distintos tipos de roedores y llame a los mtodos de la clase base para ver lo que ocurre. 5. Empezando con la jerarqua anterior de Roedor, herede un HamsterAzul de Hamster, sobreescriba los mtodos de la clase base y muestre que el cdigo que llama a los mtodos de clase base no necesitan cambiar para adecuarse el nuevo tipo. 6. Modifique Roedor para convertirlo en una clase base pura abstracta. 7. Escriba una clase con tres funciones sobrecargadas. Herede una nueva clase y sobreescriba una de las funciones. Cree un objeto de la clase derivada. Se puede llamar a todas las funciones de la clase base a travs del objeto derivado?

Haga un cast de la direccin del objeto a la base. Se pueden llamar a las tres funciones a travs de la base? Elimine la definicin sobreescrita en la clase derivada. Ahora Se puede llamar a todas las funciones de la clase base a travs del objeto derivado?
class Animal { public void sonido(){ System.out.println("Grunt"); } } class Muflon extends Animal { public void sonido(){ System.out.println("MOOOO!"); } public void salto() { System.out.println("hop!"); } } class Armadillo extends Animal {} class Guepardo extends Animal { public void sonido(){ System.out.println("Groar!"); } }

8. Sean las siguientes clases

a) Dado el siguiente programa que instrucciones NO provocan un error de compilacin y porque?


class Test1Animal { public static void main(String[] args){ adoptaAnimal(new Armadillo()); Object o = new Armadillo(); Armadillo a1 = new Animal(); Armadillo a2 = new Muflon(); } private static void adoptaAnimal(Animal a){ System.out.println("Ven, cachorrito!"); } }

b) Dado el siguiente programa ubicado al principio del cdigo

class Test2Animal{ public static void main(String[] args){ Animal a = new Armadillo(); a.sonido(); a = new Muflon(); a.sonido(); a = new Guepardo(); a.sonido(); } } I. }Cual es el resultado de la ejecucin? II. Siguiendo las reglas de la herencia, que mtodos/clases debe implementar y/o modificar para que cada animal diga GRUNT? III. Cmo obligar a que cada Animal tenga un salto propio? Como afecta la modificacin propuesta a las clases derivadas?

class TestMilpies{ public static void main(String[] args){ MilpiesEsquiador m = new MilpiesEsquiador(); } } class Milpies{ protected int numeroDePies; public Milpies(){ numeroDePies = 1000; escribePies();

9. Ejecute paso a paso el siguiente codigo

} public void escribePies(){ System.out.println("Un Milpis o Cochinilla tiene "+ numeroDePies+" pies"); } } class MilpiesEsquiador extends Milpies{ protected int numeroDePiesRotos; public MilpiesEsquiador(){ numeroDePiesRotos = 100;} public void escribePies(){ System.out.println("A un Milpis esquiador le quedan "+ (numeroDePies - numeroDePiesRotos)+" pies"); } }

10. Crear una solucin JAVA para cada ejercicio con las clases, mtodos, campos y propiedades indicadas: En este ejercicio se va a trabajar con los conceptos de interfaz, herencia y clase abstracta, aplicados a una jerarqua de clases para definir figuras geomtricas. Todas las clases que se definan en este ejercicio deben implementar la interfaz Figura, que se encuentra a continuacin:

/* Interfaz Figura */ Public interface Figura { /* Devuelve el nombre de la figura*/ Public string Nombre(); /*Calcula la superficie de la figura*/ Public double calcularArea(); /*Calcula el permetro de la figura*/ Public double calcularPerimetro(); /*Dibujar la figura en la pantalla, en modo texto*/ Public void dibujarTxt(); } a) La primera clase a implementar representar un rectngulo y se llamar Rectngulo. Debe implementar todos los mtodos de la interfaz Figura, adems de tener un constructor (que reciba como parmetros las dimensiones del rectngulo), y las variables necesarias. Para representar un rectngulo, puedes utilizar dos variables enteras: su base y su altura. Por lo tanto, lo ms adecuado es que el constructor tome como parmetros ambas variables. El mtodo dibujarTxt() debe dibujar la figura en la consola de texto. Por ejemplo, un rectngulo con base 6 y altura 3 se podra mostrar como: ****** ****** ******

b)

c)

d)

e)

Para probar la clase rectngulo, debes programar una clase llamada PruebaFiguras, que en su mtodo Main cree una instancia de la clase Rectngulo y la muestre en consola, junto con su rea y permetro. Un cuadrado es un rectngulo con base y altura iguales, por lo tanto cuadrado puede ser definida como clase hija de la clase rectngulo. Programe la clase cuadrado de forma tal que herede de la clase rectngulo del apartado anterior. La clase cuadrado slo necesita un constructor que reciba un parmetro (el valor del lado), y que llame al constructor del rectngulo con los parmetros base y altura iguales. Probar esta nueva clase aadiendo el cdigo necesario a la clase PruebaFiguras. Ahora vamos a definir una nueva figura: el tringulo. En la consola no podemos representar cualquier tringulo. Por lo tanto, no se puede implementar en la clase tringulo el mtodo dibujarTxt(). Por ello, declararemos este mtodo como abstracto y, por tanto, tambin la clase. El resto de los mtodos s pueden ser implementados. Por otra parte para definir un tringulo vamos a utilizar tres variables, lado1, lado2 y ngulo (ngulo que forman los dos lados anteriores). En este ejercicio debes programar todos los mtodos de la clase Tringulo, excepto dibujarTxt(). Recuerda que una clase abstracta puede tener constructores, aunque no pueden instanciarse objetos. Sin embargo, a diferencia del resto de los mtodos, estos constructores no se ejecutan automticamente al crear objetos de las clases hijas. Implementar la clase TringuloRectngulo. En este caso, s se puede representar la figura en consola. Dado que la mayora de los mtodos y variables necesarios ya estn implementados en la clase Tringulo, TringuloRectngulo debe heredar de la clase anterior, aadiendo el constructor adecuado (trabajaremos con tringulo rectngulos issceles, esto es, con los dos catetos iguales; por tanto, para representar un tringulo rectngulo slo necesitas conocer uno de los catetos). Adems debes implementar el mtodo dibujarTxt(), que debe mostrar el tringulo de forma semejante al siguiente ejemplo (con cateto igual a 5): * ** *** **** ***** Mejorar la clase PruebaFiguras para que proporcione una interfaz de usuario en modo texto, que permita al usuario elegir la figura geomtrica que desea pintar, solicite los parmetros adecuados para cada figura, instancia la clase y pinte la figura en consola. Utilizar el siguiente men: 1. Crear rectngulo 2. Crear cuadrado 3. Crear tringulo 4. ver figura 5. salir Si el usuario selecciona una de las primeras opciones, debern pedrsele los datos adecuados. Si selecciona la opcin 4, se mostrarn el rea y el permetro y se dibujar la ltima figura creada. Debe presentarse el men hasta que el usuario seleccione la opcin Salir.

No se puede seleccionar la opcin 4 hasta tanto no se haya seleccionado una figura. 11. A travs de la herencia implemente la clase Persona. Recuerde que independientemente de la profesin, todas las personas tienen propiedades comunes: nombre, fecha de nacimiento, gnero, estado civil, etc. La siguiente clasificacin debe ser menos general, supongamos que dividimos a todas las personas en dos grandes clases: empleados y estudiantes (dejaremos de lado a los estudiantes que adems trabajan). Lo importante es decidir qu propiedades que no hemos incluido en la clase Persona son exclusivas de los empleados y de los estudiantes. Por ejemplo, los ingresos por nmina son exclusivos de los empleados, la nota media del curso es exclusiva de los estudiantes. Una vez hecho eso crear dos clases derivadas de Persona: Empleado y Estudiante. Hacer una nueva clasificacin, ahora de los empleados. Podemos clasificar a los empleados en ejecutivos y comerciales. De nuevo estableceremos propiedades exclusivas de cada clase y crearemos dos nuevas clases derivadas de empleado: Ejecutivo y Comercial. Cada vez creemos un objeto de cualquier tipo derivado, por ejemplo de tipo Comercial, estaremos creando un solo objeto un Comercial, un Empleado y una Persona. Nuestro programa puede tratar a ese objeto como si fuera cualquiera de esos tres tipos. Es decir, nuestro comercial, adems de las propiedades como comercial, su nmina como empleado y su nombre, edad y gnero como persona. Persona

Persona

Persona

Persona

Persona

12. Implementar el ejercicio anterior usando interfaces y clases abstractas 13. Escriba una jerarqua con herencia para la clase cuadriltero, trapezoide, paralelogramo, rectngulo y cuadrado. Use cuadriltero como la clase base de la jerarqua. Haga la jerarqua con la mayor profundidad que sea posible. El dato privado de cuadriltero debera ser el par de coordenadas para los cuatro puntos extremos del cuadriltero. Escriba un programa que instancia los objetos de cada una de las clases en su jerarqua y salida polimrfica de dimensiones y rea de cada objeto. 14. Corrija el siguiente programa dndole una solucin a cada posible excepcin
class principalExcepcion { public static void main(String[] args){ int [] temp=new int[5]; temp[0]=1; temp[1]=-2; temp[2]=3; temp[3]=4; temp[4]=0; ejercicio.Calculo(2,3,2,0,temp); } } class ejercicio{ static void Calculo(int ind1, int ind2, int ind3, int ind4, int[]temp){

int [] temp2=new int[temp[ind1]5]; temp[ind1]=(temp[ind2]+temp[ind3])/temp[ind4]; } }

Pruebe ejecutando:
ejercicio.Calculo(2,3,2,8,temp); ejercicio.Calculo(2,3,2,4,temp); ejercicio.Calculo(1,3,2,0,temp);

15. Cambie el manejo de excepciones del ejercicio anterior para que sean manejadas en la clase donde se encuentra el ejecutable. 16. Indique paso a paso, lo que sucede en los programas que realizo en los ejercicios 1 y 2 (indique que valor toma cada variable y si se muestra algo en pantalla colocar que es lo que se muestra). Para comprobar si esta correcto, muestre en cada paso lo que sucede por pantalla.

S-ar putea să vă placă și