• +34 685 967 885
  • +34 695 898 191
  • antgarprats@gmail.com
  • Antonio García Prats

gestor de tareas en java

Gestor de tareas personal

Crearemos un gestor de tareas personal en Java que ayudará a los usuarios a organizar su día a día al registrar, listar y marcar tareas como completadas. Este software es útil y, además, cubre conceptos fundamentales del lenguaje Java, como la creación de clases, sobrecarga de métodos, herencia y otras características del lenguaje.

A continuación, te presento el código con explicaciones detalladas.

Desarrollo de un gestor de tareas personal escrito en Java

Paso 1: Crear las Clases Base

Clase Tarea

La clase Tarea representa una tarea básica.

public class Tarea {
    private String titulo; // Título de la tarea
    private String descripcion; // Descripción de la tarea
    private boolean completada; // Estado de la tarea

    // Constructor básico
    public Tarea(String titulo) {
        this.titulo = titulo;
        this.descripcion = ""; // Sin descripción por defecto
        this.completada = false; // Por defecto, la tarea no está completada
    }

    // Constructor sobrecargado con descripción
    public Tarea(String titulo, String descripcion) {
        this.titulo = titulo;
        this.descripcion = descripcion;
        this.completada = false;
    }

    // Método para marcar la tarea como completada
    public void completar() {
        this.completada = true;
    }

    // Método para mostrar detalles de la tarea
    public void mostrarDetalles() {
        System.out.println("Título: " + titulo);
        System.out.println("Descripción: " + descripcion);
        System.out.println("Estado: " + (completada ? "Completada" : "Pendiente"));
    }

    // Métodos getter y setter (opcional si se quieren atributos modificables desde fuera)
    public String getTitulo() {
        return titulo;
    }

    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }
}

Paso 2: Extender la Funcionalidad con Herencia

Clase TareaPrioritaria

Creamos una subclase para tareas que tienen prioridad.

public class TareaPrioritaria extends Tarea {
    private int prioridad; // Prioridad de la tarea (1-5)

    // Constructor que extiende la funcionalidad del padre
    public TareaPrioritaria(String titulo, String descripcion, int prioridad) {
        super(titulo, descripcion); // Llamamos al constructor de la clase padre
        this.prioridad = prioridad;
    }

    // Sobrecarga del método para mostrar detalles
    @Override
    public void mostrarDetalles() {
        super.mostrarDetalles(); // Mostramos los detalles básicos
        System.out.println("Prioridad: " + prioridad);
    }
}

Paso 3: Crear la Lógica Principal

Clase GestorDeTareas

Esta clase gestionará la lista de tareas.

import java.util.ArrayList;

public class GestorDeTareas {
    private ArrayList<Tarea> listaDeTareas; // Lista para almacenar las tareas

    // Constructor
    public GestorDeTareas() {
        listaDeTareas = new ArrayList<>();
    }

    // Método para añadir una nueva tarea
    public void agregarTarea(Tarea tarea) {
        listaDeTareas.add(tarea);
        System.out.println("Tarea añadida: " + tarea.getTitulo());
    }

    // Método para mostrar todas las tareas
    public void mostrarTareas() {
        if (listaDeTareas.isEmpty()) {
            System.out.println("No hay tareas en la lista.");
        } else {
            for (int i = 0; i < listaDeTareas.size(); i++) {
                System.out.println("\nTarea #" + (i + 1));
                listaDeTareas.get(i).mostrarDetalles();
            }
        }
    }

    // Método para completar una tarea
    public void completarTarea(int indice) {
        if (indice >= 0 && indice < listaDeTareas.size()) {
            listaDeTareas.get(indice).completar();
            System.out.println("Tarea completada: " + listaDeTareas.get(indice).getTitulo());
        } else {
            System.out.println("Índice inválido.");
        }
    }
}

Paso 4: Crear la Interfaz Principal

Clase Main

Es la entrada principal de nuestro programa.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        GestorDeTareas gestor = new GestorDeTareas(); // Creamos el gestor
        Scanner scanner = new Scanner(System.in);

        System.out.println("Bienvenido al Gestor de Tareas en Java");

        while (true) {
            System.out.println("\nOpciones:");
            System.out.println("1. Añadir tarea");
            System.out.println("2. Listar tareas");
            System.out.println("3. Completar tarea");
            System.out.println("4. Salir");

            System.out.print("Seleccione una opción: ");
            int opcion = scanner.nextInt();
            scanner.nextLine(); // Limpiar buffer

            switch (opcion) {
                case 1:
                    System.out.print("Ingrese el título de la tarea: ");
                    String titulo = scanner.nextLine();
                    System.out.print("Ingrese una descripción (opcional): ");
                    String descripcion = scanner.nextLine();

                    System.out.print("¿Es una tarea prioritaria? (S/N): ");
                    String esPrioritaria = scanner.nextLine();

                    if (esPrioritaria.equalsIgnoreCase("S")) {
                        System.out.print("Ingrese la prioridad (1-5): ");
                        int prioridad = scanner.nextInt();
                        scanner.nextLine(); // Limpiar buffer
                        gestor.agregarTarea(new TareaPrioritaria(titulo, descripcion, prioridad));
                    } else {
                        gestor.agregarTarea(new Tarea(titulo, descripcion));
                    }
                    break;

                case 2:
                    gestor.mostrarTareas();
                    break;

                case 3:
                    System.out.print("Ingrese el número de la tarea a completar: ");
                    int indice = scanner.nextInt();
                    gestor.completarTarea(indice - 1); // Ajuste para índice 0
                    break;

                case 4:
                    System.out.println("Saliendo del Gestor de Tareas en Java...");
                    scanner.close();
                    return;

                default:
                    System.out.println("Opción no válida.");
            }
        }
    }
}

Explicación del Proyecto de gestor de tareas personal

Clases y Objetos:

La clase Tarea muestra cómo se crean objetos con atributos y métodos específicos.

La clase TareaPrioritaria ejemplifica herencia y polimorfismo.

Sobrecarga de Métodos:

Se utilizan varios constructores en Tarea para mostrar sobrecarga.

Gestión de Datos:

El uso de ArrayList en GestorDeTareas facilita la manipulación de una colección dinámica de tareas.

Interfaz Básica:

El menú en la clase Main permite a los usuarios interactuar con el programa.


El Gestor de Tareas en Java es un proyecto ideal para iniciarse en la programación orientada a objetos. Además de ser útil, enseña cómo estructurar código de manera modular y reutilizable. Con este ejmplo mostramos el potencial tan grande que tiene este lenguaje para crear software de escritorio que puede ser aplicado en la vida real. Utilizando JavaFX podremos, además, crear una interfaz de usuario amigable con la que complementar este programa.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *