1
resposta

PROJETO ENCAPSULAMENTO

Olá, tenho uma dúvida sobre esse exemplo do instrutor logo abaixo, **a dúvida seria por que ele criou o método: public int getTotalDeAvaliacoes()

e não colocou o método getsomaDasAvaliacoes() ? **

package br.com.alura.screenmatch.modelos;

public class Filme {

    private String nome;
    private int anoDeLancamento;
    private int duracaoEmMinutos;
    private boolean incluidoNoPlano;
    private double somaDasAvaliacoes;
    private int totalDeAvaliacoes;
    
    public void exibeFichaTecnica() {
        System.out.println("Nome do filme: " +nome);
        System.out.println("Ano de lançamento: " +anoDeLancamento);
        System.out.println("Duração em minutos: " +duracaoEmMinutos);
        System.out.println("Incluído no plano: " +incluidoNoPlano);
    }

    public void avalia(double nota) {
        somaDasAvaliacoes += nota;
        totalDeAvaliacoes++;
    }

    public double pegaMedia() {
        return somaDasAvaliacoes / totalDeAvaliacoes;
    }

    public String getNome() {
        return this.nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public int getAnoDeLancamento() {
        return this.anoDeLancamento;
    }

    public void setAnoDeLancamento(int anoDeLancamento) {
        this.anoDeLancamento = anoDeLancamento;
    }

    public boolean getIncluidoNoPlano() {
        return this.incluidoNoPlano;
    }

    public void setIncluidoNoPlano(boolean incluidoNoPlano) {
        this.incluidoNoPlano = incluidoNoPlano;
    }

    public int getDuracaoEmMinutos() {
        return this.duracaoEmMinutos;
    }

    public void setDuracaoEmMinutos(int duracaoEmMinutos) {
        this.duracaoEmMinutos = duracaoEmMinutos;
    }

    public int getTotalDeAvaliacoes() {
        return this.totalDeAvaliacoes;
    }

}
1 resposta

Oi, Ariadne! Tudo bem?

O conceito de encapsulamento na programação orientada a objetos é utilizado para proteger os dados de uma classe, permitindo que eles sejam acessados ou modificados apenas por meio de métodos específicos. No caso do exemplo apresentado, o instrutor optou por criar o método getTotalDeAvaliacoes() para expor apenas o número total de avaliações feitas sobre o filme.

A escolha de não criar um método getSomaDasAvaliacoes() pode ser intencional para manter a soma das avaliações como um detalhe interno da classe, o que significa que, fora da classe, só precisamos saber o total de avaliações ou a média delas, e não necessariamente a soma das notas. Assim, a soma das avaliações é usada internamente para calcular a média com o método pegaMedia(), que é provavelmente o dado mais útil para quem está utilizando a classe.

Espero ter ajudado!

Um forte abraço e bons estudos!