1
resposta

[Dúvida] Algumas dicas adicionais para melhorar meu entendimento?

Primeira Classe

public class Filme {
    String nome;
    int anoDeLancamento;
    double duracaoEmMinutos;
    boolean incluidoNoPlano;
    double somaDasAvaliacaoes;
    double totalAvaliacoes;

    void exibirFichaTecnica(){
        System.out.println("Nome do filme: " + nome);
        System.out.println("Duração em minutos: " + duracaoEmMinutos);
        System.out.println("Incluido no plano: " + incluidoNoPlano);
        System.out.println("Soma das avaliações: " + somaDasAvaliacaoes);
        System.out.println("Total das avaliações: " + totalAvaliacoes);
    }

    void avaliacaoDoFilme(double notaAvaliacao){
        somaDasAvaliacaoes += notaAvaliacao;
        totalAvaliacoes++;

    }

    double totalMediaAvaliações() {
        if (totalAvaliacoes == 0) {
            return 0;
        }
        return somaDasAvaliacaoes / totalAvaliacoes;
    }
}

Segunda Classe

import javax.swing.*;

public class InformacoesDoFilme {
    public static void main(String[] args) {
        Filme novoFilme = new Filme();

        novoFilme.nome = "King Kong";
        novoFilme.incluidoNoPlano = true;
        novoFilme.duracaoEmMinutos = 160;
        novoFilme.anoDeLancamento = 1995;
        novoFilme.somaDasAvaliacaoes = 10;
        novoFilme.totalAvaliacoes = 3;

        novoFilme.exibirFichaTecnica();
        novoFilme.avaliacaoDoFilme(8.9);
        novoFilme.avaliacaoDoFilme(9.5);
        novoFilme.avaliacaoDoFilme(6.2);

        System.out.println("Avaliação media do filme foi: " + String.format("%.2f", novoFilme.totalMediaAvaliações()));
    }
}

Retorno no terminal:
Nome do filme: King Kong
Duração em minutos: 160.0
Incluido no plano: true
Soma das avaliações: 10.0
Total das avaliações: 3.0
Avaliação media do filme foi: 5.77

Process finished with exit code 0

1 resposta

Olá, Sara!

Que satisfação ver seu progresso com a Orientação a Objetos. Seu código ficou muito bem estruturado e você foi além ao adicionar uma verificação para evitar a divisão por zero e formatar a saída da média. Isso demonstra uma ótima atenção aos detalhes.

Para ajudar a consolidar seu aprendizado, preparei algumas observações sobre conceitos fundamentais que você utilizou e como eles se conectam no mundo Java.

Entendendo a "Planta" e a "Construção"

Imagine que a classe Filme funciona como uma planta de arquitetura. Ela não é um filme real, mas define quais características todo filme deve ter e o que ele consegue fazer. Quando você usa o comando new Filme(), você está construindo uma casa baseada naquela planta.

  • Atributos: São as características (nome, duração, etc.).
  • Métodos: São os comportamentos (exibir ficha, avaliar).

Observações sobre o seu código

1. Tipagem e Semântica

No seu código, você definiu totalAvaliacoes como double. Embora funcione para o cálculo da média, semanticamente o total de avaliações costuma ser um número inteiro (int), já que não temos "meia avaliação" em termos de contagem de pessoas, apenas na nota em si.

2. Atribuição Direta vs. Métodos

Notei que na sua classe Principal, você preencheu somaDasAvaliacaoes e totalAvaliacoes manualmente:

novoFilme.somaDasAvaliacaoes = 10;
novoFilme.totalAvaliacoes = 3;

Uma boa prática na Orientação a Objetos é deixar que o próprio objeto gerencie seus dados internos através de seus métodos. O ideal seria usar apenas o método avaliacaoDoFilme para alimentar esses valores. No futuro, você aprenderá sobre Encapsulamento, que serve justamente para "esconder" esses atributos e evitar que sejam alterados por fora de forma indevida.

Dicas para Praticar

  • Estado Inicial: Tente pensar no que acontece se você chamar o método de média antes de qualquer avaliação. Você já tratou isso com o if (totalAvaliacoes == 0), o que foi excelente!
  • Organização de Nomes: No Java, seguimos a convenção camelCase. Seus nomes de métodos como totalMediaAvaliações estão corretos, mas evite usar caracteres especiais como o til (ç, õ) em nomes de variáveis ou métodos, pois isso pode causar problemas dependendo da configuração do ambiente ou do sistema operacional onde o código rodar. Prefira totalMediaAvaliacoes.

Seu raciocínio lógico está muito claro. Continue explorando como os objetos interagem entre si, pois esse é o coração do desenvolvimento em Java!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!