Olá, Pedro. Como vai?
Parabéns pelo excelente trabalho no desafio! Seu código está muito bem estruturado, limpo e respeitando perfeitamente o princípio do encapsulamento ao utilizar os atributos como private e criar os métodos de acesso de forma consciente. O nome da sua classe principal, PedroFlix, ficou sensacional e deu uma identidade bem legal para o projeto.
Sua dúvida sobre onde e quando usar os métodos getters é super comum e a sua intuição foi cirúrgica: você usou exatamente onde era necessário. Vamos entender o conceito de forma mais profunda para te dar total segurança daqui para frente.
O papel do Get e do Set no Encapsulamento
Quando colocamos os atributos como private, estamos trancando essas variáveis dentro da classe para que ninguém de fora possa mexer nelas diretamente.
- Os métodos setters (set) funcionam como as portas de entrada. Eles servem para enviar dados para dentro da classe e preencher os atributos.
- Os métodos getters (get) funcionam como as janelas de visualização. Eles servem exclusivamente para o mundo externo conseguir ler um valor específico isoladamente.
Por que a sua abordagem está correta?
Você pensou de forma muito madura ao notar que o método ExibeFichaTecnica() já fazia o papel de imprimir a maior parte das informações na tela.
Em desenvolvimento de software, nós não somos obrigados a criar getters e setters para todas as variáveis automaticamente. A boa prática é criar apenas o que a aplicação realmente precisa.
Imagine o seguinte cenário: você precisa criar uma tela no seu sistema que liste apenas os nomes de 50 filmes em uma tabela. Se você não tivesse o getNome(), você seria obrigado a chamar o ExibeFichaTecnica() para os 50 filmes, o que traria um monte de informações indesejadas (ano, duração, sinopse) e poluídos a tela. É exatamente aí que o getNome() brilha: ele permite pegar apenas a informação que você quer, de forma isolada.
Uma dica sobre Convenções de Nomenclatura em Java
Analisando o seu código, notei que o método de exibição foi escrito assim: ExibeFichaTecnica().
Em Java, existe uma convenção muito forte chamada camelCase para nomes de métodos e variáveis. A regra diz que a primeira letra deve ser sempre minúscula e, se a palavra for composta, as demais iniciais ficam em maiúscula.
Para que seu código fique no padrão de mercado usado por grandes empresas, a recomendação é ajustar para:
public void exibeFichaTecnica() {
// seu código aqui
}
Apenas as Classes (como Filme e PedroFlix) devem começar com a primeira letra maiúscula (padrão PascalCase).
Você mandou super bem no exercício, entendeu o conceito de validação no método pegaMedia() para evitar divisões por zero e aplicou o encapsulamento de forma muito consciente. Continue assim!
Espero que possa ter lhe ajudado!