Java II - Ejercicios
Java II - Ejercicios
Para este ejercicio, vamos a crear la clase Electrodomestico, que nos servirá de clase
padre.
• tipo (String que indica el tipo de electrodoméstico que es una nevera, un horno,
una lavadora, etc.)
• Crear el método toString de forma que devuelva una cadena con todas las
características del electrodoméstico.
Ahora, vamos a crear una clase llamada Lavadora, que será nuestra clase hija, ya que
hereda de nuestra clase Electrodomestico.
1
Esta clase tendrá las propiedades de un electrodoméstico y además los siguientes
atributos privados:
• Crear el método toString para que devuelva una cadena con todas las
características de la lavadora.
Por último, una vez creadas las clases anteriores, vamos a crear una nueva clase
llamada AppElectrodomesticos con un método main para poder crear las distintas
instancias de las clases y así poder probar los métodos creados.
a. HORAS = 10;
b. PRECIO_KWH = 0.5;
2
3. Creamos una instancia de tipo Lavadora usando el constructor de parámetros.
Datos para la nueva instancia: (“Lavadora”, “Zanussi”, 0.5, 595.0, false).
5. Ahora vamos a calcular el consumo y coste del consumo para cada uno de los
electrodomésticos creados anteriormente y mostrar por pantalla, la información
de cada uno como las cantidades calculadas.
Resultado esperado:
2. Ejercicio de Composición.
Se pide realizar una aplicación para una empresa que vende figuras de superhéroes.
Para ello, tendrá que modelar todos los datos relativos a estas figuras.
Para este ejercicio, vamos a crear distintas clases, la primera clase será Superheroe,
que definirá las características de un superhéroe.
3
• Métodos setters/getters para asignar y obtener los datos de los atributos.
• Crear el método toString de forma que devuelva una cadena con todas las
características del superhéroe.
• Crear el método toString de forma que devuelva una cadena con el alto, ancho,
profundidad y volumen máximo del objeto.
La segunda clase que vamos a crear será la clase Dimension, que define un grupo de
medidas de un objeto.
4
Se deben crear los siguientes métodos:
• Crear el método toString de forma que devuelva una cadena con el alto, ancho,
profundidad y volumen máximo del objeto.
La tercera clase que vamos a crear será la clase Figura, que representa una figura de
un superhéroe.
• codigo (String, código identificativo formado por letras y números, y dos figuras
distintas no tendrán el mismo código.)
• Crear el método toString de forma que devuelva una cadena con todas las
características de la figura.
Por último, una vez creadas las clases anteriores, vamos a crear una nueva clase
llamada AppFigurasSuperheroes con un método main para poder crear las distintas
instancias de las clases y así poder probar los métodos creados.
1. Creamos un array de tipo Figura para poder guardar todas las figuras de
superhéroes que vamos a crear.
5
2. Creamos cuatro instancias de tipo Superheroe con los distintos superhéroes y
mostramos por consola el listado de los distintos superhéroes creados.
3. Creamos dos instancias de tipo Dimension para poder dar dimensión a las
distintas figuras de los distintos superhéroes.
dimPeq = (20,5,6);
Resultado esperado:
6
3. Ejercicio de Clases Abstractas.
Se va a realizar una aplicación que controle los servicios que realiza una empresa de
mantenimiento. Estos servicios son muy variados, pero todos ellos comparten una
serie de características comunes. Así pues, se pide que programe una clase abstracta
llamada Servicio que especificará esas características comunes y que servirá para
crear, a través de herencia, las distintas clases de servicios que ofrece la empresa.
Para este ejercicio, vamos a crear distintas clases, la primera clase a crear será la
clase abstracta Servicio, que especificará las características comunes que tendrán
los distintos servicios de nuestra empresa de mantenimiento.
La segunda clase que vamos a crear será la clase TrabajoPintura, que describirá un
trabajo de pintura (pintar una casa, una habitación, etc…), heredará de la clase
Servicio y tendrá las siguientes propiedades (además de las que hereda de la clase
Servicio):
7
• superficie (double, superficie a pinta en m2)
• double costeTotal(): Según nos indica el cliente, el coste total del servicio se
calcula así: Coste_total = coste_material + coste_mano_obra;
8
Por último, una vez creadas las clases anteriores, vamos a crear una nueva clase
llamada AppEmpresaServicios con un método main para poder crear las distintas
instancias de las clases y así poder probar los métodos creados.
3. Por último, sacamos por consola la suma de los costes de todos los trabajos y
también lo que se tiene que pagar en total en sueldos por esos trabajos
realizados.
Resultado esperado:
9
NOTA: Para dar formato a los importes y que aparezcan sólo con dos cifras puedes
usar lo siguiente:
…………..
O la siguiente opción:
4. Ejercicio de Interface.
Vamos a hacer una aplicación o programa que gestione el uso de unos vehículos, ya
sean coches como motos.
10
A continuación, en el mismo paquete, vamos a crear una nueva clase abstracta
llamada Vehiculos que implemente de la interface IVehiculo.
• Métodos setters/getters
A continuación, en el mismo paquete, vamos a crear una nueva clase llamada Coche
que extiende de la clase Vehiculos.
A continuación, en el mismo paquete, vamos a crear una nueva clase llamada Moto
que extienda de la clase Vehiculos.
11
• Implementar el método acelerar(int cuanto) que viene dado por la interface,
dicho método recibe como parámetro un valor que debemos incrementar al
atributo velocidad, además comprobamos si hemos pasado de la velocidad
máxima para devolver el mensaje "Exceso de velocidad. La moto ha acelerado y
va a " + velocidad + " km/hora" y sino ha excedido devolver el mensaje "La moto
ha acelerado y va a " + velocidad + " km/hora"
Por último, una vez creadas las clases anteriores, vamos a crear una nueva clase
llamada UsoVehiculo con un método main para poder probar.
En esta clase UsoVehiculo, vamos a realizar lo siguiente dentro del método main:
• Creamos una instancia de tipo Coche con una velocidad de 100, es decir,
asignamos a su atributo el valor de 100.
• Creamos una instancia de tipo Moto con una velocidad de 80, es decir,
asignamos a su atributo el valor de 80.
Resultado esperado:
12
Dentro de nuestro proyecto “FormacionJava” creamos un nuevo paquete
“EjercicioSupermercado”, y en él vamos a ir creando las distintas interfaces y
clases.
La primera interface que vamos a crear será la interface EsLiquido, que indica que los
objetos creados a partir de ella serán líquidos, y tendrá los siguientes métodos:
La segunda interface que vamos a crear será la interface EsAlimento, que indica que
los objetos creados a partir de ella serán alimentos, y tendrá los siguientes métodos:
La tercera interface que vamos a crear será la interface ConDescuento, que indicará
que el producto tiene descuento e incluirá los siguientes métodos:
A continuación, vamos a crear las siguientes clases de productos, cada una de ella
implementará la interface que sea necesaria.
La primera clase que vamos a crear será la clase Detergente, que definirá una botella
de detergente y hay que tener en cuenta que este producto puede tener descuento.
Sus propiedades principales son las siguientes:
• marca (String)
• precio (double)
13
• Método toString para que muestre todas las características del producto
• Debe implementar los métodos dados por las interfaces, y si es necesario, añada
más propiedades a la clase.
La segunda clase que vamos a crear será la clase Cereales, que definirá una caja de
cereales y este producto no tiene descuento. Sus propiedades principales son las
siguientes:
• marca (String)
• precio (double)
• tipoCereal (String)
• Método toString para que muestre todas las características del producto
• Debe implementar los métodos dados por las interfaces, y si es necesario, añada
más propiedades a la clase. Debes tener en cuenta, que las calorías serán las
siguientes: 5 si el cereal es espelta, 8 si es maíz, 12 si es trigo, y 15 en los demás
casos.
La tercera clase que vamos a crear será la clase Vino, que definirá una botella de vino
y este producto puede tener descuento. Sus propiedades principales son las
siguientes:
• marca (String)
• precio (double)
• tipoVino (String)
• gradosAlcohol ()
• Debe implementar los métodos dados por las interfaces, y si es necesario, añada
más propiedades a la clase. Debes tener en cuenta, que las calorías se
calcularán multiplicando por 10 la graduación alcohólica.
14
Por último, una vez creadas las interfaces y clases anteriores, vamos a crear una
nueva clase llamada AppSupermercado con un método main para poder probar.
Cereales("Crunchy","Espelta",3.0,LocalDate.of(2022, 8, 2));
Resultado esperado:
6. Ejercicio de Colecciones.
Para este ejercicio vamos a continuar o reutilizar el ejercicio 2, donde se pedía
realizar una aplicación para una empresa que vende figuras de superhéroes. En este
ejercicio ya creamos las clases Superheroe, Dimension y Figura, que ahora vamos a
reutilizar.
15
Por ejemplo, una colección “El Hombre Murciélago” que consta de una serie de
figuras relacionadas con Batman, o una colección “Marvel”, con figuras de
superhéroes de Marvel, etc.
16
En esta clase, dentro del método main, vamos a realizar lo siguiente:
2. Creamos dos instancias de tipo Dimension para poder dar dimensión a las
distintas figuras de los distintos superhéroes.
dimPeq = (20,5,6);
3. Creamos cinco instancias de tipo Figura para crear nuestras figuras de nuestros
superhéroes, es decir, para cada instancia de tipo Figura le asignamos una
instancia de tipo Superheroe y una instancia de tipo Dimension creadas
previamente, de tal forma que tengamos cinco figuras distintas con los cinco
superhéroes distintos.
5. Ahora vamos a añadir a la colección creada antes todas las figuras que sean de
Marvel creadas anteriormente, para ello debemos usar el método incluirFigura.
6. Una vez creada nuestra colección, vamos a subir el precio a la figura de Thor
con un incremento de 20€.
8. Una vez que hemos mostrado todo el contenido de nuestra colección, vamos a
sacar el valor y volumen totales de la colección. Usar los métodos
getValorColeccion y getVolumenColeccion
17
También debemos mostrar la figura con más valor de la colección, para ello
podemos usar el método fMasValiosa.
Para este punto, deberás modificar la clase Figura creada en el ejercicio 2, para
que implemente la interface Comparable y sobrescriba el método compareTo
de tal forma que ordene las figuras en primer lugar por nombre y a nombres
iguales, por precio de menor a mayor.
Resultado esperado:
18
1. Creamos varios trabajos de pintura y revisiones de alarmaras.
TrabajoPintura ("Antonio", "2022-9-10", "Seguros Martínez", 20, 4);
TrabajoPintura ("Ana", "2022-8-8", "Fruteria La Pera", 10, 3);
TrabajoPintura ("Juan", "2022-9-30", "Restaurante El Boqueron", 200, 2.5);
4. Pruebe a calcular la suma de los costes de todos los trabajos. Calcule también lo
que se tiene que pagar en total en sueldos por esos trabajos realizados.
Resultado esperado:
19
8. Ejercicio de Colecciones y Excepciones.
Vamos a crear una aplicación sencilla que permita controlar la ocupación en tiempo
real de un Parking. Todo el control de errores se hará lanzando y capturando
Excepciones.
Para este ejercicio, vamos a crear la clase Parking, que va a representar el parking y
las plazas que tenemos para el parking.
20
• public int salida(String matricula): Este método hace que el coche con la
matrícula indicada salga del parking, liberando la plaza correspondiente.
Devolverá el número de la plaza liberada. En este método tendremos el
siguiente control de errores:
• public int getPlazasTotales(): Este método devuelve las plazas totales del
parking.
• public int getPlazasOcupadas(): Este método devuelve las plazas ocupadas del
parking.
• public int getPlazasLibres(): Este método devuelve las plazas libres del parking.
Pista: Puedes usar el método frequency de Collections, para ello tendrás que
previamente pasar todos los elementos del mapa a una Collection.
Por ejemplo:
Por último, una vez creadas las clases anteriores, vamos a crear una nueva clase
llamada AppParking con un método main para poder probar, para ello, vamos a
realizar lo siguiente:
21
• Crea un objeto Parking llamado “Parking Centro”.
• Después de crear el objeto Parking, se mostrará al usuario un menú con cuatro
opciones: 1) Entrada de coche y 2) Salida de coche, 3) Mostrar parking y 4) Salir
del programa.
• Se le pedirá al usuario que introduzca un valor entero, entre 1 y 4,
correspondiente a una de las opciones (use la clase Scanner y el método
nextInt). Este menú se pedirá una y otra vez hasta que el usurario elija la opción
4.
Dependiendo de la opción seleccionado por el usuario, pueden ocurrir las
siguientes opciones:
• Esta opción muestra todas las plazas y las matrículas que las ocupan (se
usará el método toString de la clase Parking).
Mejoras para tener en cuenta: Puedes crear todos los métodos que quieras para
simplificar el código o reutilizar código.
22
Resultado esperado:
23
• Opción 1 con plaza ocupada
24
• Opción 3
25
• Opción 2 con datos correctos
• Opción 3
26
• Opción 4
27
Gracias