Olá, Pedro. Como vai?
Parabéns pela resolução do desafio! O seu projeto PedroFlix ficou excelente e a estrutura da classe Filme reflete muito bem os primeiros passos essenciais da Orientação a Objetos (OO).
Você mandou super bem em vários pontos:
- Modelagem da Classe: Criou os atributos certos para representar as características de um filme.
- Uso de Métodos: Separou os comportamentos (
ExibeFichaTecnica, avalia, pegaMedia) de forma muito coerente, fazendo com que o próprio objeto gerencie suas regras. - Uso de Text Blocks (As três aspas
"""): Excelente escolha para escrever a sinopse! Esse recurso do Java moderno deixa o código muito mais limpo para textos longos com várias linhas, evitando concatenações chatas com o operador +.
Para elevar ainda mais o nível técnico do seu código e deixá-lo totalmente alinhado com as boas práticas do mercado Java, trago três sugestões bem importantes de convenção e design de código:
1. Padrão de Nomenclatura CamelCase para Métodos
No Java, nós seguimos uma convenção comunitária muito forte chamada camelCase. Por essa regra, nomes de classes começam com letra maiúscula (como você fez muito bem em Filme e PedroFlix), mas nomes de variáveis e métodos devem sempre começar com letra minúscula.
Se o nome do método tiver mais de uma palavra, a partir da segunda palavra a letra inicial fica maiúscula. Portanto, o ideal é ajustar o seu método de exibição:
- De:
void ExibeFichaTecnica() - Para:
void exibeFichaTecnica()
2. Deixando os prints mais amigáveis e organizados
No seu método exibeFichaTecnica(), você imprimiu as variáveis cruas uma abaixo da outra. Para quem está rodando o programa no terminal, colocar etiquetas de texto ajuda a entender o que é cada informação. Veja a diferença:
void exibeFichaTecnica() {
System.out.println("--- FICHA TÉCNICA ---");
System.out.println("Nome do Filme: " + nome);
System.out.println("Ano de Lançamento: " + anoDeLancamento);
System.out.println("Duração: " + duracaoEmMinutos + " minutos");
System.out.println("Sinopse: " + sinopseDoFilme);
System.out.println("---------------------");
}
3. Cuidado com divisões por zero
A sua lógica no método pegaMedia() está perfeita matematicamente: somaDasAvaliacoes / totalAvaliacoes.
Contudo, imagine o cenário onde você cria um filme2 no seu método main e, por esquecimento, chama o método pegaMedia() antes de dar qualquer nota a ele. Como o totalAvaliacoes começará valendo 0, o Java tentará fazer uma divisão por zero, o que resultará em um valor esquisito no terminal chamado NaN (Not a Number).
Uma boa prática defensiva é adicionar uma verificação rápida para garantir a estabilidade do sistema:
double pegaMedia() {
if (totalAvaliacoes == 0) {
return 0.0; // Retorna zero se ninguém avaliou ainda
}
return somaDasAvaliacoes / totalAvaliacoes;
}
O seu início na trilha de Orientação a Objetos está fantástico. Continue expandindo o PedroFlix e aplicando esses conceitos estruturais!
Espero que possa ter lhe ajudado!