JAVA 1
Ejercicio 3: Administración de Empleados
Un programa que permite administrar empleados de una empresa, diferenciando entre
empleados de tiempo completo y parcial. Se almacenarán en la clase Empresa, y se
calcularán los salarios de cada uno. Se aplica herencia, ya que
EmpleadoTiempoCompleto y EmpleadoTiempoParcial extienden Empleado.
Clase Empleado (abstracta)
Atributos:
o String nombre
o double sueldoBase
Métodos:
o abstract double calcularSalario() → Devuelve el sueldo
calculado.
Clases EmpleadoTiempoCompleto y EmpleadoTiempoParcial (heredan Empleado)
Método calcularSalario():
o EmpleadoTiempoCompleto → Devuelve sueldoBase.
o EmpleadoTiempoParcial → Usa int horasTrabajadas y retorna
sueldoBase * horasTrabajadas.
Clase Empresa
Atributos:
o ArrayList<Empleado> empleados
Métodos:
o void agregarEmpleado(Empleado e) → Añade a la lista.
o double calcularTotalSalarios() → Suma los salarios y devuelve el
resultado.
Ejercicio 4: Control de Animales
Un refugio donde se gestionan diferentes tipos de animales (Perro y Gato). Se guardarán
en una clase RefugioAnimales con un ArrayList de Animal. Además, Perro y Gato
implementarán la interfaz Mascota, permitiendo definir comportamientos adicionales.
Clase Animal (abstracta)
Atributos:
o String nombre
o int edad
Métodos:
o abstract void hacerSonido()
Clases Perro y Gato (heredan Animal, implementan Mascota)
hacerSonido() → Devuelve un sonido específico.
void jugar() → Imprime una actividad.
Interfaz Mascota
Método:
o void jugar()
Clase RefugioAnimales
Atributos:
o ArrayList<Animal> animales
Métodos:
o void agregarAnimal(Animal a) → Añade a la lista.
o void listarSonidos() → Muestra sonidos de los animales.
Ejercicio 5: Tienda de Productos
Un sistema de tienda que permite manejar diferentes productos (Electrodoméstico y
Alimento). La clase Tienda almacenará los productos en un ArrayList, y se aplicarán
descuentos mediante una interfaz Descuento.
Clase Producto (abstracta)
Atributos:
o String nombre
o double precio
Métodos:
o abstract void mostrarInfo()
Clases Electrodomestico y Alimento (heredan Producto)
mostrarInfo() → Imprime detalles del producto.
Interfaz Descuento
Método:
o void aplicarDescuento(double porcentaje)
Clase Tienda
Atributos:
o ArrayList<Producto> productos
Métodos:
o void agregarProducto(Producto p) → Añade un producto a la lista.
o void aplicarDescuentoGlobal(double porcentaje) → Aplica
descuentos a todos los productos.
Solución:
Ejercicio 3: Administración de Empleados
import [Link];
// Clase abstracta Empleado
abstract class Empleado {
String nombre;
double sueldoBase;
// Constructor
public Empleado(String nombre, double sueldoBase) {
[Link] = nombre;
[Link] = sueldoBase;
}
abstract double calcularSalario();
}
// Clases EmpleadoTiempoCompleto y EmpleadoTiempoParcial
class EmpleadoTiempoCompleto extends Empleado {
// Constructor
public EmpleadoTiempoCompleto(String nombre, double sueldoBase) {
super(nombre, sueldoBase);
}
@Override
double calcularSalario() {
return sueldoBase;
}
}
class EmpleadoTiempoParcial extends Empleado {
int horasTrabajadas;
// Constructor
public EmpleadoTiempoParcial(String nombre, double sueldoBase, int
horasTrabajadas) {
super(nombre, sueldoBase);
[Link] = horasTrabajadas;
}
@Override
double calcularSalario() {
return sueldoBase * horasTrabajadas;
}
}
// Clase Empresa con ArrayList de Empleado
class Empresa {
private ArrayList<Empleado> empleados;
// Constructor
public Empresa() {
[Link] = new ArrayList<>();
}
public void agregarEmpleado(Empleado e) {
[Link](e);
}
public double calcularTotalSalarios() {
double total = 0;
for (Empleado e : empleados) {
total += [Link]();
}
return total;
}
}
// Clase principal
public class Main {
public static void main(String[] args) {
Empresa empresa = new Empresa();
[Link](new EmpleadoTiempoCompleto("Juan",
2500));
[Link](new EmpleadoTiempoParcial("Ana", 20,
80));
[Link]("Total de salarios: " + [Link]()
+ " euros.");
}
}
Ejercicio 4: Control de Animales
import [Link];
// Clase abstracta Animal
abstract class Animal {
String nombre;
int edad;
// Constructor
public Animal(String nombre, int edad) {
[Link] = nombre;
[Link] = edad;
abstract void hacerSonido();
// Interfaz Mascota
interface Mascota {
void jugar();
// Clases Perro y Gato
class Perro extends Animal implements Mascota {
// Constructor
public Perro(String nombre, int edad) {
super(nombre, edad);
@Override
void hacerSonido() {
[Link](nombre + " ladra: ¡Guau guau!");
@Override
public void jugar() {
[Link](nombre + " está jugando con la pelota.");
class Gato extends Animal implements Mascota {
// Constructor
public Gato(String nombre, int edad) {
super(nombre, edad);
@Override
void hacerSonido() {
[Link](nombre + " maulla: ¡Miau miau!");
@Override
public void jugar() {
[Link](nombre + " está jugando con un ovillo de lana.");
// Clase RefugioAnimales con ArrayList de Animal
class RefugioAnimales {
private ArrayList<Animal> animales;
// Constructor
public RefugioAnimales() {
[Link] = new ArrayList<>();
public void agregarAnimal(Animal a) {
[Link](a);
public void listarSonidos() {
for (Animal a : animales) {
[Link]();
if (a instanceof Mascota) {
((Mascota) a).jugar();
// Clase principal
public class Main {
public static void main(String[] args) {
RefugioAnimales refugio = new RefugioAnimales();
[Link](new Perro("Max", 5));
[Link](new Gato("Luna", 3));
[Link]();
}
Ejercicio 5: Tienda de Productos
import [Link];
// Clase abstracta Producto
abstract class Producto {
String nombre;
double precio;
// Constructor
public Producto(String nombre, double precio) {
[Link] = nombre;
[Link] = precio;
abstract void mostrarInfo();
// Interfaz Descuento
interface Descuento {
void aplicarDescuento(double porcentaje);
// Clases Electrodomestico y Alimento
class Electrodomestico extends Producto implements Descuento {
String marca;
// Constructor
public Electrodomestico(String nombre, double precio, String marca) {
super(nombre, precio);
[Link] = marca;
}
@Override
void mostrarInfo() {
[Link]("Electrodoméstico: " + nombre + ", Marca: " + marca + ", Precio: " +
precio + "€");
@Override
public void aplicarDescuento(double porcentaje) {
precio -= precio * (porcentaje / 100);
class Alimento extends Producto {
String fechaCaducidad;
// Constructor
public Alimento(String nombre, double precio, String fechaCaducidad) {
super(nombre, precio);
[Link] = fechaCaducidad;
@Override
void mostrarInfo() {
[Link]("Alimento: " + nombre + ", Caduca: " + fechaCaducidad + ", Precio: " +
precio + "€");
// Clase Tienda con ArrayList de Producto
class Tienda {
private ArrayList<Producto> productos;
// Constructor
public Tienda() {
[Link] = new ArrayList<>();
public void agregarProducto(Producto p) {
[Link](p);
public void aplicarDescuentoGlobal(double porcentaje) {
for (Producto p : productos) {
if (p instanceof Descuento) {
((Descuento) p).aplicarDescuento(porcentaje);
public void mostrarProductos() {
for (Producto p : productos) {
[Link]();
// Clase principal
public class Main {
public static void main(String[] args) {
Tienda tienda = new Tienda();
[Link](new Electrodomestico("Lavadora", 300, "Samsung"));
[Link](new Alimento("Manzana", 2, "01/06/2025"));
[Link]("Productos antes del descuento:");
[Link]();
[Link](10);
[Link]("\nProductos después del descuento:");
[Link]();