desafio-poo-dio icon indicating copy to clipboard operation
desafio-poo-dio copied to clipboard

Melhorias nas Classes `Bootcamp`, `Curso`, `Mentoria` e `Dev`

Open lukaspersy opened this issue 7 months ago • 0 comments

Melhorias e Atualizações nas Classes Bootcamp, Curso, Mentoria e Dev

Olá!

Realizei algumas melhorias e atualizações nas classes Bootcamp, Curso, Mentoria e Dev. Abaixo estão as principais modificações realizadas e os testes realizados para garantir que as mudanças funcionam corretamente.

Modificações Realizadas

1. Classe Bootcamp

  • Construtor Adicionado: Adicionamos um construtor para inicializar nome e descricao diretamente. Isso torna a criação de um Bootcamp mais intuitiva e garante que todos os atributos obrigatórios sejam fornecidos na criação.
  • Método toString() Adicionado: Adicionada uma representação em string do Bootcamp para facilitar a visualização dos dados em logs e prints.
  • Remoção dos Métodos setNome e setDescricao: Tornamos nome e descricao imutáveis para garantir que esses atributos não sejam alterados após a criação do Bootcamp.
  • Atualização do equals() e hashCode(): Atualizados para considerar apenas os atributos imutáveis (nome e descricao) para garantir a consistência na comparação e na geração de hash.

Código Atualizado:

public class Bootcamp {
    private final String nome;
    private final String descricao;
    private final LocalDate dataInicial;
    private final LocalDate dataFinal;
    private final Set<Dev> devsInscritos = new HashSet<>();
    private final Set<Conteudo> conteudos = new LinkedHashSet<>();

    public Bootcamp(String nome, String descricao) {
        this.nome = nome;
        this.descricao = descricao;
        this.dataInicial = LocalDate.now();
        this.dataFinal = dataInicial.plusDays(45);
    }

    public String getNome() {
        return nome;
    }

    public String getDescricao() {
        return descricao;
    }

    public LocalDate getDataInicial() {
        return dataInicial;
    }

    public LocalDate getDataFinal() {
        return dataFinal;
    }

    public Set<Dev> getDevsInscritos() {
        return devsInscritos;
    }

    public Set<Conteudo> getConteudos() {
        return conteudos;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Bootcamp bootcamp = (Bootcamp) o;
        return nome.equals(bootcamp.nome) && descricao.equals(bootcamp.descricao);
    }

    @Override
    public int hashCode() {
        return Objects.hash(nome, descricao);
    }

    @Override
    public String toString() {
        return "Bootcamp{" +
                "nome='" + nome + '\'' +
                ", descricao='" + descricao + '\'' +
                ", dataInicial=" + dataInicial +
                ", dataFinal=" + dataFinal +
                ", devsInscritos=" + devsInscritos +
                ", conteudos=" + conteudos +
                '}';
    }
}

lukaspersy avatar Jul 13 '24 19:07 lukaspersy