feat(ch 5): solved blocks 3 & 4

This commit is contained in:
Rafa Muñoz
2024-12-11 22:12:08 +01:00
parent 34c1985250
commit 461b2dcf09
26 changed files with 375 additions and 6 deletions

View File

@@ -1,4 +1,4 @@
package tutorialJava.capitulo5.ejercicios.bloque02_articulosComestibles; package tutorialJava.capitulo5.ejercicios.bloque02.articulosComestibles;
public class ArtNoPerecedero extends Articulo { public class ArtNoPerecedero extends Articulo {

View File

@@ -1,4 +1,4 @@
package tutorialJava.capitulo5.ejercicios.bloque02_articulosComestibles; package tutorialJava.capitulo5.ejercicios.bloque02.articulosComestibles;
public class ArtPerecedero extends Articulo { public class ArtPerecedero extends Articulo {

View File

@@ -1,4 +1,4 @@
package tutorialJava.capitulo5.ejercicios.bloque02_articulosComestibles; package tutorialJava.capitulo5.ejercicios.bloque02.articulosComestibles;
public class Articulo { public class Articulo {

View File

@@ -1,4 +1,4 @@
package tutorialJava.capitulo5.ejercicios.bloque02_articulosComestibles; package tutorialJava.capitulo5.ejercicios.bloque02.articulosComestibles;
import tutorialJava.Utils; import tutorialJava.Utils;

View File

@@ -1,4 +1,4 @@
package tutorialJava.capitulo5.ejercicios.bloque02_ColeccionAntiguedades; package tutorialJava.capitulo5.ejercicios.bloque02.coleccionAntiguedades;
public class Antiguedad { public class Antiguedad {

View File

@@ -1,4 +1,4 @@
package tutorialJava.capitulo5.ejercicios.bloque02_ColeccionAntiguedades; package tutorialJava.capitulo5.ejercicios.bloque02.coleccionAntiguedades;
public class Joya extends Antiguedad { public class Joya extends Antiguedad {

View File

@@ -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");
}
}

View File

@@ -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");
}
}

View File

@@ -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();
}

View File

@@ -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");
}
}

View File

@@ -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();
}
}
}

View File

@@ -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;
}
}

View File

@@ -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!");
}
}

View File

@@ -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!");
}
}

View File

@@ -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();
}
}
}

View File

@@ -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");
}
}

View File

@@ -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");
}
}

View File

@@ -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("------------------------");
}
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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());
}
}

View File

@@ -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();
}
}

View File

@@ -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());
}
}

View File

@@ -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;
}
}

View File

@@ -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());
}
}

View File

@@ -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;
}
}