Table of Contents
Gestor de Tareas con Prioridades en Java
Este proyecto en Java implementa un gestor de tareas con prioridades, donde cada tarea cuenta con una descripción y un nivel de prioridad (1 = alta, 2 = media, 3 = baja).
Para lograrlo, se han creado varias clases: Tarea, que define los atributos y permite ordenar tareas mediante Comparable; MiExcepcion, que gestiona errores personalizados; GestorTareas, que contiene la lógica principal para agregar, eliminar y mostrar tareas; y ProgramMain, que ejecuta el programa.
Gracias a esta estructura, es posible organizar fácilmente las tareas, mantener un orden claro según su prioridad y manejar excepciones cuando una tarea no se encuentra en la lista.
🗂️Cómo obtener el nombre y correo de un cliente con SQL
Creamos la clase Tarea:
package com.mycompany.gestordetareasconprioridades;
// La clase tarea implementa "Implement" la clase comparable de tipo Tarea:
// Tendremos que importar su método abstracto *.
public class Tarea implements Comparable{
// Atributos de la clase:
private String descripcion; // Descripción de la tarea podrías ser "Aprender Python" "Aprender Java" "Aprender MySQL"
private int prioridad; // (1 = alta, 2 = media, 3 = baja)
// Constructor de la clase:
public Tarea(String descripcion, int prioridad) {
this.descripcion = descripcion;
this.prioridad = prioridad;
}
// Añadimos los getter y setter:
public String getDescripcion() {
return descripcion;
}
public void setDescripcion(String descripcion) {
this.descripcion = descripcion;
}
public int getPrioridad() {
return prioridad;
}
public void setPrioridad(int prioridad) {
this.prioridad = prioridad;
}
// Método ToString modificado para informar de la tarea disponible:
@Override
public String toString() {
return "descripcion: " + descripcion + ", La prioridad es: " + prioridad;
}
// Usamos la clase comparator, este nos permite definir un orden natural para los objetos de la clase.
// * Sobreescribimos su método de la clase comparable, permite comparar dos objetos.
@Override
public int compareTo(Tarea a) {
// método de la clase Integer. en concreto compare, comparamos la prioridad con la recibida.
// Usamos This.prioridad para hacer referencia al atributo de la clase.
// comparamos la tarea recibida con la actual.
return Integer.compare(this.prioridad, a.prioridad);
}}
Creamos la segunda clase MiExcepcion:
package com.mycompany.gestordetareasconprioridades.excepciones;
// Creamos una clase con una excepción personalizada, esta extiende de la clase exceptión.
public class MiExcepcion extends Exception{
// Constructor de la clase: public MiExcepcion (String mensaje){ super(mensaje);
}}
Creamos la tercera clase GestorTareas:
package com.mycompany.gestordetareasconprioridades;
import com.mycompany.gestordetareasconprioridades.excepciones.MiExcepcion;
import java.awt.AWTEventMulticaster;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
// Esta clase es la encargada de realizar la tareas
public class GestorTareas {
// Creamos una lista para almacenar las tareas de tipo Tarea, recuerda la clase creada.
List <Tarea> tareas = new ArrayList<Tarea>();
// Métodos disponibles
// Este método agrega la tarea a la lista.
public void agregarTarea(Tarea t)
{
tareas.add(t);
System.out.println("Se ha agregado la tarea con éxito.....");
};
public void eliminarTarea(String descripcion) throws MiExcepcion {
Iterator<Tarea> it = tareas.iterator();
boolean encontrada = false;
while (it.hasNext()) {
Tarea t = it.next();
if (t.getDescripcion().trim().equalsIgnoreCase(descripcion.trim())) {
it.remove();
encontrada = true;
System.out.println("Tarea eliminada con éxito: " + descripcion);
break;
}
}
if (!encontrada) {
throw new MiExcepcion("No se ha encontrado la tarea con la descripción: " + descripcion);
}
}
// Primero Ordena la lista y luego la imprime
public void mostrarTareasOrdenadas()
{
for (Tarea tarea : tareas) {
System.out.println(tarea);
}
}}
Creamos la cuarta clase y la más importante, esta es la encargada de poner en marcha el programa, llamada ProgramMain:
import com.mycompany.gestordetareasconprioridades.GestorTareas;
import com.mycompany.gestordetareasconprioridades.Tarea;
import com.mycompany.gestordetareasconprioridades.excepciones.MiExcepcion;
/*
Clase Main
Es la que ejecuta el programa.
Crea un GestorTareas.
Añade tareas con agregarTarea().
Muestra tareas con mostrarTareasOrdenadas().
Elimina una con eliminarTarea().
Lista de tareas ordenadas:
Tarea: Estudiar Java | Prioridad: 1
Tarea: Hacer ejercicio | Prioridad: 2
Tarea: Lavar los platos | Prioridad: 3
Tarea eliminada con éxito.
📌 Lista actualizada de tareas:
Tarea: Estudiar Java | Prioridad: 1
Tarea: Hacer ejercicio | Prioridad: 2
*/
public class programMain {
public static void main(String[] args) throws MiExcepcion {
// Creamos una nueva instancia de gestorTareas llamada Nueva tarea.
GestorTareas NuevaTarea = new GestorTareas();
// Agregamos la tarea, instancia + método (agregamos la tarea y su prioridad)
NuevaTarea.agregarTarea(new Tarea("Estudiar java",1));
NuevaTarea.agregarTarea(new Tarea("Estudiar MySQL", 2));
NuevaTarea.agregarTarea(new Tarea("Estudiar Python",3));
// Eliminamos la tarea:
NuevaTarea.eliminarTarea("Estudiar java");
// Mostrar la tarea:
NuevaTarea.mostrarTareasOrdenadas();
}
}
Resultado:

Resultado si la tarea que se intenta borrar no existe:
Primero la modificación del código:
public class programMain {
public static void main(String[] args) throws MiExcepcion { // Creamos una nueva instancia de gestorTareas llamada Nueva tarea. GestorTareas NuevaTarea = new GestorTareas(); // Agregamos la tarea, instancia + método (agregamos la tarea y su prioridad) NuevaTarea.agregarTarea(new Tarea("Estudiar java",1)); NuevaTarea.agregarTarea(new Tarea("Estudiar MySQL", 2)); NuevaTarea.agregarTarea(new Tarea("Estudiar Python",3)); // Eliminamos la tarea: NuevaTarea.eliminarTarea("Estudiar programacion java"); // Mostrar la tarea: NuevaTarea.mostrarTareasOrdenadas(); }
}
Ahora sí, el resultado:
Exception in thread "main" com.mycompany.gestordetareasconprioridades.excepciones.MiExcepcion: No se ha encontrado la tarea con la descripción Estudiar programacion java



Seguir leyendo:





