mirror of
https://gitlab.com/tutorial-java-rafa-munoz/tutorial-java-2024-25/tutorialjava2024-25.git
synced 2025-11-09 18:03:09 +01:00
feat(ch 5): solved blocks 3 & 4
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
package tutorialJava.capitulo5.ejercicios.bloque02_articulosComestibles;
|
||||
package tutorialJava.capitulo5.ejercicios.bloque02.articulosComestibles;
|
||||
|
||||
public class ArtNoPerecedero extends Articulo {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package tutorialJava.capitulo5.ejercicios.bloque02_articulosComestibles;
|
||||
package tutorialJava.capitulo5.ejercicios.bloque02.articulosComestibles;
|
||||
|
||||
public class ArtPerecedero extends Articulo {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package tutorialJava.capitulo5.ejercicios.bloque02_articulosComestibles;
|
||||
package tutorialJava.capitulo5.ejercicios.bloque02.articulosComestibles;
|
||||
|
||||
public class Articulo {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package tutorialJava.capitulo5.ejercicios.bloque02_articulosComestibles;
|
||||
package tutorialJava.capitulo5.ejercicios.bloque02.articulosComestibles;
|
||||
|
||||
import tutorialJava.Utils;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package tutorialJava.capitulo5.ejercicios.bloque02_ColeccionAntiguedades;
|
||||
package tutorialJava.capitulo5.ejercicios.bloque02.coleccionAntiguedades;
|
||||
|
||||
public class Antiguedad {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package tutorialJava.capitulo5.ejercicios.bloque02_ColeccionAntiguedades;
|
||||
package tutorialJava.capitulo5.ejercicios.bloque02.coleccionAntiguedades;
|
||||
|
||||
public class Joya extends Antiguedad {
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
package tutorialJava.capitulo5.ejercicios.bloque03_clasesYMetodosAbstractos.instrumentos;
|
||||
|
||||
class Bateria extends Instrumento {
|
||||
public Bateria(String nombre) {
|
||||
super(nombre);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tocar() {
|
||||
System.out.println(nombre + " (Batería): Marcando el ritmo con tambores");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package tutorialJava.capitulo5.ejercicios.bloque03_clasesYMetodosAbstractos.instrumentos;
|
||||
|
||||
class Guitarra extends Instrumento {
|
||||
public Guitarra(String nombre) {
|
||||
super(nombre);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tocar() {
|
||||
System.out.println(nombre + " (Guitarra): Tocando acordes de rock");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package tutorialJava.capitulo5.ejercicios.bloque03_clasesYMetodosAbstractos.instrumentos;
|
||||
|
||||
abstract class Instrumento {
|
||||
protected String nombre;
|
||||
|
||||
public Instrumento(String nombre) {
|
||||
this.nombre = nombre;
|
||||
}
|
||||
|
||||
// Método abstracto
|
||||
public abstract void tocar();
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package tutorialJava.capitulo5.ejercicios.bloque03_clasesYMetodosAbstractos.instrumentos;
|
||||
|
||||
class Piano extends Instrumento {
|
||||
public Piano(String nombre) {
|
||||
super(nombre);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tocar() {
|
||||
System.out.println(nombre + " (Piano): Tocando una melodía clásica");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package tutorialJava.capitulo5.ejercicios.bloque03_clasesYMetodosAbstractos.instrumentos;
|
||||
|
||||
public class Principal {
|
||||
public static void main(String[] args) {
|
||||
// Crear una lista de instrumentos
|
||||
Instrumento[] instrumentos = new Instrumento[] {
|
||||
new Guitarra("Fender Stratocaster"),
|
||||
new Piano("Yamaha U1"),
|
||||
new Bateria("Pearl Export"),
|
||||
new Guitarra("Gibson Les Paul")
|
||||
};
|
||||
|
||||
// Recorrer la lista y llamar al método tocar() de cada instrumento
|
||||
for (Instrumento instrumento : instrumentos) {
|
||||
instrumento.tocar();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package tutorialJava.capitulo5.ejercicios.bloque03_clasesYMetodosAbstractos.sonidosAnimales;
|
||||
|
||||
abstract class Animal {
|
||||
protected String nombre;
|
||||
|
||||
public Animal(String nombre) {
|
||||
this.nombre = nombre;
|
||||
}
|
||||
|
||||
// Método abstracto
|
||||
public abstract void emitirSonido();
|
||||
|
||||
public String getNombre() {
|
||||
return nombre;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package tutorialJava.capitulo5.ejercicios.bloque03_clasesYMetodosAbstractos.sonidosAnimales;
|
||||
|
||||
class Gato extends Animal {
|
||||
public Gato(String nombre) {
|
||||
super(nombre);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void emitirSonido() {
|
||||
System.out.println(nombre + " dice: ¡Miau, miau!");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package tutorialJava.capitulo5.ejercicios.bloque03_clasesYMetodosAbstractos.sonidosAnimales;
|
||||
|
||||
class Perro extends Animal {
|
||||
public Perro(String nombre) {
|
||||
super(nombre);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void emitirSonido() {
|
||||
System.out.println(nombre + " dice: ¡Guau, guau!");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package tutorialJava.capitulo5.ejercicios.bloque03_clasesYMetodosAbstractos.sonidosAnimales;
|
||||
|
||||
public class Principal {
|
||||
public static void main(String[] args) {
|
||||
// Crear un array de tipo Animal
|
||||
Animal[] animales = new Animal[] {
|
||||
new Perro("Max"),
|
||||
new Gato("Luna"),
|
||||
new Perro("Buddy"),
|
||||
new Gato("Mimi")
|
||||
};
|
||||
|
||||
// Llamar al método emitirSonido() para cada animal
|
||||
for (Animal animal : animales) {
|
||||
System.out.println("Animal: " + animal.getClass().getSimpleName());
|
||||
animal.emitirSonido();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package tutorialJava.capitulo5.ejercicios.bloque03_clasesYMetodosAbstractos.vehiculos;
|
||||
|
||||
class Bicicleta extends Vehiculo {
|
||||
public Bicicleta(String modelo) {
|
||||
super(modelo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acelerar() {
|
||||
velocidadActual += 5; // Incrementa velocidad en 5
|
||||
System.out.println(modelo + " (Bicicleta) acelera a " + velocidadActual + " km/h");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void frenar() {
|
||||
velocidadActual = Math.max(0, velocidadActual - 3); // Reduce velocidad en 3
|
||||
System.out.println(modelo + " (Bicicleta) frena a " + velocidadActual + " km/h");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package tutorialJava.capitulo5.ejercicios.bloque03_clasesYMetodosAbstractos.vehiculos;
|
||||
|
||||
class Coche extends Vehiculo {
|
||||
public Coche(String modelo) {
|
||||
super(modelo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acelerar() {
|
||||
velocidadActual += 20; // Incrementa velocidad en 20
|
||||
System.out.println(modelo + " (Coche) acelera a " + velocidadActual + " km/h");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void frenar() {
|
||||
velocidadActual = Math.max(0, velocidadActual - 15); // Reduce velocidad en 15
|
||||
System.out.println(modelo + " (Coche) frena a " + velocidadActual + " km/h");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package tutorialJava.capitulo5.ejercicios.bloque03_clasesYMetodosAbstractos.vehiculos;
|
||||
|
||||
public class Principal {
|
||||
public static void main(String[] args) {
|
||||
// Crear instancias de vehículos
|
||||
Vehiculo[] vehiculos = new Vehiculo[] {
|
||||
new Coche("Toyota Corolla"),
|
||||
new Bicicleta("BMX Pro"),
|
||||
new Coche("Ford Mustang"),
|
||||
new Bicicleta("Mountain Bike")
|
||||
};
|
||||
|
||||
// Simular la aceleración y el frenado
|
||||
for (Vehiculo vehiculo : vehiculos) {
|
||||
System.out.println("Vehículo: " + vehiculo.getModelo());
|
||||
vehiculo.acelerar();
|
||||
vehiculo.acelerar();
|
||||
vehiculo.frenar();
|
||||
System.out.println("------------------------");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package tutorialJava.capitulo5.ejercicios.bloque03_clasesYMetodosAbstractos.vehiculos;
|
||||
|
||||
abstract class Vehiculo {
|
||||
protected int velocidadActual;
|
||||
protected String modelo;
|
||||
|
||||
public Vehiculo(String modelo) {
|
||||
this.modelo = modelo;
|
||||
this.velocidadActual = 0; // La velocidad inicial es 0
|
||||
}
|
||||
|
||||
// Métodos abstractos
|
||||
public abstract void acelerar();
|
||||
public abstract void frenar();
|
||||
|
||||
public int getVelocidadActual() {
|
||||
return velocidadActual;
|
||||
}
|
||||
|
||||
public String getModelo() {
|
||||
return modelo;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package tutorialJava.capitulo5.ejercicios.bloque04_instanciasVsStatic.banco;
|
||||
|
||||
public class Banco {
|
||||
private static double tasaDeInteres = 2.5; // Tasa de interés inicial (porcentaje)
|
||||
|
||||
// Método estático para cambiar la tasa de interés
|
||||
public static void cambiarTasaDeInteres(double nuevaTasa) {
|
||||
tasaDeInteres = nuevaTasa;
|
||||
System.out.println("La nueva tasa de interés es: " + tasaDeInteres + "%");
|
||||
}
|
||||
|
||||
// Método estático para obtener la tasa de interés
|
||||
public static double obtenerTasaDeInteres() {
|
||||
return tasaDeInteres;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package tutorialJava.capitulo5.ejercicios.bloque04_instanciasVsStatic.banco;
|
||||
|
||||
class Cuenta {
|
||||
private String titular;
|
||||
private double saldo;
|
||||
|
||||
// Constructor
|
||||
public Cuenta(String titular, double saldo) {
|
||||
this.titular = titular;
|
||||
this.saldo = saldo;
|
||||
}
|
||||
|
||||
// Método para calcular el interés basado en la tasa actual
|
||||
public double calcularInteres() {
|
||||
return saldo * Banco.obtenerTasaDeInteres() / 100;
|
||||
}
|
||||
|
||||
// Método para mostrar información de la cuenta
|
||||
public void mostrarInformacion() {
|
||||
System.out.println("Titular: " + titular);
|
||||
System.out.println("Saldo: " + saldo);
|
||||
System.out.println("Interés generado: " + calcularInteres());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package tutorialJava.capitulo5.ejercicios.bloque04_instanciasVsStatic.banco;
|
||||
|
||||
public class Principal {
|
||||
public static void main(String[] args) {
|
||||
// Crear cuentas
|
||||
Cuenta cuenta1 = new Cuenta("Juan Pérez", 5000);
|
||||
Cuenta cuenta2 = new Cuenta("Ana López", 10000);
|
||||
|
||||
// Calcular intereses con la tasa inicial
|
||||
System.out.println("Intereses con la tasa inicial:");
|
||||
cuenta1.mostrarInformacion();
|
||||
cuenta2.mostrarInformacion();
|
||||
|
||||
// Cambiar la tasa de interés
|
||||
Banco.cambiarTasaDeInteres(3.5);
|
||||
|
||||
// Calcular intereses con la nueva tasa
|
||||
System.out.println("\nIntereses con la nueva tasa:");
|
||||
cuenta1.mostrarInformacion();
|
||||
cuenta2.mostrarInformacion();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package tutorialJava.capitulo5.ejercicios.bloque04_instanciasVsStatic.productos;
|
||||
|
||||
public class Principal {
|
||||
public static void main(String[] args) {
|
||||
// Crear instancias de Producto
|
||||
Producto p1 = new Producto("Producto A");
|
||||
Producto p2 = new Producto("Producto B");
|
||||
Producto p3 = new Producto("Producto C");
|
||||
|
||||
// Verificar el valor del contador
|
||||
System.out.println("Número total de productos creados: " + Producto.obtenerContador());
|
||||
|
||||
// Mostrar nombres de los productos
|
||||
System.out.println("Productos creados:");
|
||||
System.out.println(p1.getNombre());
|
||||
System.out.println(p2.getNombre());
|
||||
System.out.println(p3.getNombre());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package tutorialJava.capitulo5.ejercicios.bloque04_instanciasVsStatic.productos;
|
||||
|
||||
public class Producto {
|
||||
private static int CONTADOR = 0; // Contador estático de instancias
|
||||
private String nombre;
|
||||
|
||||
// Constructor
|
||||
public Producto(String nombre) {
|
||||
this.nombre = nombre;
|
||||
CONTADOR++; // Incrementar el contador cada vez que se crea una instancia
|
||||
}
|
||||
|
||||
// Método estático para obtener el contador
|
||||
public static int obtenerContador() {
|
||||
return CONTADOR;
|
||||
}
|
||||
|
||||
// Método para obtener el nombre del producto
|
||||
public String getNombre() {
|
||||
return nombre;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package tutorialJava.capitulo5.ejercicios.bloque04_instanciasVsStatic.usuarios;
|
||||
|
||||
public class Principal {
|
||||
public static void main(String[] args) {
|
||||
// Crear usuarios
|
||||
Usuario usuario1 = new Usuario("Alicia");
|
||||
Usuario usuario2 = new Usuario("Juan");
|
||||
Usuario usuario3 = new Usuario("Mafalda");
|
||||
|
||||
// Mostrar el total de usuarios registrados
|
||||
System.out.println("Total de usuarios registrados: " + Usuario.obtenerTotalUsuarios());
|
||||
|
||||
// Eliminar un usuario
|
||||
usuario2.eliminarUsuario();
|
||||
|
||||
// Mostrar el total de usuarios después de la eliminación
|
||||
System.out.println("Total de usuarios registrados: " + Usuario.obtenerTotalUsuarios());
|
||||
|
||||
// Eliminar otro usuario
|
||||
usuario1.eliminarUsuario();
|
||||
|
||||
// Mostrar el total de usuarios después de otra eliminación
|
||||
System.out.println("Total de usuarios registrados: " + Usuario.obtenerTotalUsuarios());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package tutorialJava.capitulo5.ejercicios.bloque04_instanciasVsStatic.usuarios;
|
||||
|
||||
public class Usuario {
|
||||
private static int totalUsuarios = 0; // Contador estático para total de usuarios
|
||||
private String nombre;
|
||||
|
||||
// Constructor
|
||||
public Usuario(String nombre) {
|
||||
this.nombre = nombre;
|
||||
totalUsuarios++; // Incrementar contador al crear un usuario
|
||||
System.out.println("Usuario registrado: " + nombre);
|
||||
}
|
||||
|
||||
// Método para eliminar un usuario
|
||||
public void eliminarUsuario() {
|
||||
if (totalUsuarios > 0) {
|
||||
totalUsuarios--; // Decrementar contador al eliminar un usuario
|
||||
System.out.println("Usuario eliminado: " + nombre);
|
||||
} else {
|
||||
System.out.println("No hay usuarios registrados para eliminar.");
|
||||
}
|
||||
}
|
||||
|
||||
// Método estático para obtener el total de usuarios
|
||||
public static int obtenerTotalUsuarios() {
|
||||
return totalUsuarios;
|
||||
}
|
||||
|
||||
// Método para obtener el nombre del usuario
|
||||
public String getNombre() {
|
||||
return nombre;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user