cami-la / desafio-poo-dio

897 stars 1.38k forks source link

Uso do bootcamp.getConteudos().add(curso1); #16

Closed moisescs closed 1 year ago

moisescs commented 1 year ago

Camila Bom dia, Não consegui entender por que no sétimo vídeo do desafio vc usa a linha "bootcamp.getConteudos().add(curso1);" para adicionar um curso no BootCamp, levando em consideração que os métodos Getters são apenas acessar os valores dos atributos da classe, enquanto os Setters são quem usamos para setar valores neles. Me corrija se estiver errado, mas o ideal não seria o usar método .setConteudos() para essa finalidade?

moisescs commented 1 year ago

Continando minha duvida, o ideal não seria fazer assim, usando no Setter?

Set conteudos = new LinkedHashSet<>(); conteudos.add(curso1); conteudos.add(curso2); bootcamp.setConteudos(conteudos);

cami-la commented 1 year ago

Oi, @moisescs. Tudo bem? Muito interessante sua dúvida, deixa eu te explicar:

Quando faz:

Set conteudos = new LinkedHashSet<>();
conteudos.add(curso1);
conteudos.add(curso2);
bootcamp.setConteudos(conteudos);

Note que você está criando um novo Set<Conteudo>. Se já existir umSet<Conteudo> neste Bootcamp já preenchido com alguns conteúdos, você vai acabar sobreescrevendo-o com esse novo Set que você está adicionando.

Fazendo desta forma:

bootcamp.getConteudos().add(curso1);

Você está pegando o Set<Conteudo> atual deste Bootcamp e está simplesmente adicionando mais um conteúdo neste Set. Assim você não sobreescreve nada, só acrescenta.

Deu para dar uma clareada?

moisescs commented 1 year ago

Muito obrigado Camila!