2
respostas

[Projeto] CONTROLE DE TAREFAS

package classes.Tarefa.Enums;

public enum StatusTarefa {
    COMPLETO,
    EM_PROGRESSO,
    NAO_INICIADA,
    CANCELADO
}

package classes.Tarefa;

import classes.Tarefa.Enums.StatusTarefa;

public class Tarefa {
    protected String descricao;
    protected StatusTarefa status;

    public Tarefa(String descricao) {
        this.descricao = descricao;
        this.status = StatusTarefa.NAO_INICIADA;
    }

    public String formatar() {
        return "Descrição: " + descricao + " | Status: " + status;
    }
}

package classes.Tarefa;

import classes.Tarefa.Enums.StatusTarefa;

import java.util.ArrayList;
import java.util.List;

public class ListaDeTarefas {
    List<Tarefa> listaDeTarefas = new ArrayList<>();

    public void adicionarNaLista(Tarefa tarefa) {
        listaDeTarefas.add(tarefa);
    }

    public void mostrarLista() {
        for (Tarefa tarefa : listaDeTarefas) {
            System.out.println(tarefa.formatar());
        }
    }

    public void alterarParaConcluido(Tarefa tarefa) {
        tarefa.status = StatusTarefa.COMPLETO;
    }

    public void alterarParaEmProgresso(Tarefa tarefa) {
        tarefa.status = StatusTarefa.EM_PROGRESSO;
    }

    public void alterarParaCancelado(Tarefa tarefa) {
        tarefa.status = StatusTarefa.CANCELADO;
    }
}

import classes.Tarefa.ListaDeTarefas;
import classes.Tarefa.Tarefa;

public class MainExerciciosTarefas {
    public static void main(String[] args) {
        Tarefa tarefa1 = new Tarefa("Estudar Java"); //Por padrão é criado com status de NAO_INICIADA
        Tarefa tarefa2 = new Tarefa("Atualizar repositório");
        Tarefa tarefa3 = new Tarefa("Desistir de estudar");
        Tarefa tarefa4 = new Tarefa("Estudar Spring framework");
        ListaDeTarefas listaDeTarefas = new ListaDeTarefas();

        listaDeTarefas.adicionarNaLista(tarefa1);
        listaDeTarefas.alterarParaEmProgresso(tarefa1);

        listaDeTarefas.adicionarNaLista(tarefa2);
        listaDeTarefas.alterarParaConcluido(tarefa2);

        listaDeTarefas.adicionarNaLista(tarefa3);
        listaDeTarefas.alterarParaCancelado(tarefa3);

        listaDeTarefas.adicionarNaLista(tarefa4);

        listaDeTarefas.mostrarLista();
    }
}
2 respostas

Oi, Cauan! Como vai?

O seu projeto ficou muito bem estruturado, com o uso de enum para representar os status da tarefa e classes separadas para organizar a lógica da aplicação. A escolha de iniciar toda nova tarefa como NAO_INICIADA também ficou bem interessante, porque define um estado padrão claro para cada objeto criado.

Você aplicou bem os conceitos de orientação a objetos, trabalhando com classes, atributos, métodos, lista e alteração de estado dos objetos. Uma dica é pensar em criar um método único para alterar o status, recebendo o novo status como parâmetro, assim o código fica mais flexível e evita vários métodos parecidos. Qual próxima melhoria você adicionaria ao projeto: remover tarefas da lista ou buscar tarefas por status?

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Muito obrigado pelas dicas! A próxima melhoria que eu implementaria seria a de buscar tarefas por status, pois mesmo que tenham muitas tarefas na lista, ainda seria possível "filtra-las" para ter uma melhor organização. E logo após esta melhoria, implementaria a remoção de tarefas da lista.