Ejercicios de Java
Ejercicios de Java
2. Escribe una clase Película que herede de la clase Multimedia anterior. La clase
Película tiene, además de los atributos heredados, un actor principal y una actriz
principal. La clase debe tener dos métodos consultores para obtener los nuevos
atributos y debe sobrescribir el método toString() para reflejar la nueva información.
3. Escribe una clase Disco, que herede de la clase Multimedia ya realizada. La clase
Disco tiene, aparte de los elementos heredados, un atributo para almacenar el género
al que pertenece (con valores posibles rock, pop y ópera). La clase debe tener un
método para obtener el nuevo atributo y debe sobrescribir el método toString() para
que devuelva toda la información.
1
Para restringir un atributo a un conjunto finito de valores constantes, puedes utilizar las clases
enumeradas de Java. Más información aquí:
https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html
• Se creen dos discos y se añadan a la lista.
• Se muestre la lista por pantalla.
9. Observa que tanto las Lavadoras como los Televisores comparten características
comunes (atributos, métodos, etc.). Empleando la herencia, reescribe el programa de
los ejercicios 6 y 7 de forma que dicha información común quede condensada en una
clase Electrodoméstico, y se reutilice la mayor porción de código posible. No se deben
poder instanciar objetos de la clase Electrodoméstico.
11. Reflexiona sobre las implicaciones de adoptar la solución del ejercicio 8 o la del
ejercicio 10 desde el punto de vista del mantenimiento del software. ¿Qué ocurriría si
se añadiera una tercera clase que herede de Electrodoméstico? ¿Qué habría que
modificar de ambas soluciones para que continúe funcionando igual? Observa
también que en el ejercicio 10 hemos dejado de imprimir la clase del objeto que hemos
encontrado, puesto que para mantener esa información tendríamos que seguir
efectuando los cástings sobre los objetos del array. ¿Hay alguna manera de obtener
un resultado por pantalla idéntico al del ejercicio 8 sin recurrir a polimorfismo ad-
hoc?
Bloque 2: Ejercicios de Interfaces
1. Escribe una interfaz, llamada ColeccionInterfaz, que declare los siguientes métodos:
• estaVacia(): método booleano que devuelve true si la colección está vacía y
false en caso contrario.
• extraer(): devuelve y elimina el primer elemento (Object) de la colección.
• primero(): devuelve el primer elemento (Object) de la colección, sin
eliminarlo.
• agregar(Object): método booleano que añade un objeto por el extremo que
corresponda, y devuelve true si se ha añadido y false en caso contrario.
A continuación, escribe una clase Pila, que implemente esta interfaz, utilizando
para ello un array de Object y un contador de objetos.
4. Escribe un programa para una biblioteca que contenga libros y revistas. Las
características comunes que se almacenan tanto para las revistas como para los
libros son el código, el título, y el año de publicación. Estas tres características se
pasan por parámetro en el momento de crear los objetos. Los libros tienen además un
atributo prestado. Los libros, cuando se crean, no están prestados. Las revistas tienen
un número. En el momento de crear las revistas se pasa el número por parámetro.
Tanto las revistas como los libros deben tener (aparte de los constructores) un método
toString() que devuelve el valor de todos los atributos en una cadena de caracteres.
También tienen un método que devuelve el año de publicación, y otro el código. Para
prevenir posibles cambios en el programa se tiene que implementar una interfaz
Prestable con los métodos prestar(), devolver() y prestado. La clase Libro
implementa esta interfaz.
1. Escribe una clase Pila genérica usando para ello un atributo del tipo LinkedList. La
clase Pila tendrá los siguientes métodos:
• estaVacia(): devuelve true si la pila está vacía y false en caso contrario.
• extraer(): devuelve y elimina el primer elemento de la colección.
• primero(): devuelve el primer elemento de la colección
• agregar(): añade un objeto por el extremo que corresponda.
• toString(): devuelve en forma de String la información de la colección
2. Implementa una pila utilizando como atributos un array genérico y un entero que
cuente el número de objetos insertados. La clase se debe llamar PilaArray y tiene los
mismos métodos que la pila del ejercicio anterior.
6. Escribe una clase genérica ListaOrdenada con un tipo parametrizado E que sea
Comparable (genericidad restringida). La clase debe tener lo siguiente:
• Un constructor
• boolean add(E o): agrega el elemento o en la posición que le corresponda,
garantizando que la lista se mantiene ordenada.
• E get(int index): devuelve el element en la posición index.
• int size(): devuelve la cantidad de elementos actual de la lista
• boolean isEmpty(): devuelve true si la lista está vacía y false en caso
contrario
• boolean remove(E o): elimina el elemento o y devuelve true, si está en la
lista. En caso contrario, devuelve false.
• int indexOf(E o): busca el elemento o en la lista y devuelve su posición.
• String toString(): imprime los elementos de la lista.
7. Escribe una clase, de nombre ArrayListOrdenado, que herede de ArrayList. Esta clase
solo debe aceptar, como parámetro genérico de tipo, clases que implementen
Comparable. La clase ArrayListOrdenado debe sobrescribir el método add(E objeto)
para que añada los elementos en orden.
8. Escribe una interfaz genérica Operable, que sea genérica y que declare las cuatro
operaciones básicas: suma, resta, producto y división. Cada operación se debe definir
entre el objeto actual (this) y un parámetro par.