Boa tarde, colegas de estudo!
Gostaria de compartilhar uma observação relacionada à questão 2 do material, além de uma solução que pode ser útil. Estou estudando um pouco de Java e percebi que, salvo engano, não é possível atribuir uma nova propriedade a um objeto já instanciado nessa linguagem. Isso ocorre porque Java é uma linguagem mais rígida em relação a sua estrutura de objetos.
Por outro lado, em JavaScript, é possível adicionar dinamicamente propriedades ou métodos a objetos já criados. Pensando nisso, explorei como usar getters para criar uma propriedade dinâmica que utiliza outras propriedades do mesmo objeto. Nesse caso, aproveitei um getter para calcular o tempo de publicação de um livro, sem precisar definir essa propriedade diretamente no momento da criação do objeto.
No exemplo abaixo, a linha { livro.idadePublicação = anoAtual - livro.anoPublicacao; } está comentada porque a propriedade foi substituída pelo getter. Isso evita a necessidade de recalcular o valor manualmente e garante que ele sempre seja atualizado corretamente.
Segue o exemplo:
const anoAtual = new Date().getFullYear();
const livro = {
titulo: 'Os botões de Napoleão',
autor: ['Penny Le Couteur', 'Jay Burreson'],
anoPublicacao: 2006,
genero: 'Ciências',
get tempoPublicacao() {
return anoAtual - this.anoPublicacao;
}
};
//livro.idadePublicação = anoAtual - livro.anoPublicacao;
const palavra = livro.tempoPublicacao > 1 ? 'anos' : 'ano';
const mostrarDetalhes = `Descrição
Título: ${livro.titulo}
Autor: ${livro.autor}
Ano de Publicação: ${livro.anoPublicacao}
Gênero: ${livro.genero}
Tempo de Publicação: ${livro.tempoPublicacao} ${palavra}`;
console.log(mostrarDetalhes);
Perceba que o getter tempoPublicacao calcula dinamicamente a diferença entre o ano atual e o ano de publicação do livro toda vez que é acessado. Isso é uma prática útil em JavaScript para situações como essa.
Imagino que conceitos semelhantes serão abordados no curso de orientação a objetos em Java, mas achei interessante trazer essa possibilidade para reflexão e discussão.
Espero que este exemplo seja útil para os colegas!