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 {
|
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 {
|
public class ArtPerecedero extends Articulo {
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package tutorialJava.capitulo5.ejercicios.bloque02_articulosComestibles;
|
package tutorialJava.capitulo5.ejercicios.bloque02.articulosComestibles;
|
||||||
|
|
||||||
public class Articulo {
|
public class Articulo {
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package tutorialJava.capitulo5.ejercicios.bloque02_articulosComestibles;
|
package tutorialJava.capitulo5.ejercicios.bloque02.articulosComestibles;
|
||||||
|
|
||||||
import tutorialJava.Utils;
|
import tutorialJava.Utils;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package tutorialJava.capitulo5.ejercicios.bloque02_ColeccionAntiguedades;
|
package tutorialJava.capitulo5.ejercicios.bloque02.coleccionAntiguedades;
|
||||||
|
|
||||||
public class Antiguedad {
|
public class Antiguedad {
|
||||||
|
|
||||||
@@ -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 {
|
||||||
|
|
||||||
@@ -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