1
resposta

[Projeto] encapsulamento

package Com.Vn.screenmatch.models;

public class Movie {
    private String name;
    private  String movieGenre;
    private String releaseDate;
    private int ratingCount;
    private double sumOfRatings;
    private int minutesDuration;
    private boolean includePlan;

    public int getRatingCount() {
        return ratingCount;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setMovieGenre(String movieGenre) {
        this.movieGenre = movieGenre;
    }

    public void setReleaseDate(String releaseDate) {
        this.releaseDate = releaseDate;
    }

    public void setMinutesDuration(int minutesDuration) {
        this.minutesDuration = minutesDuration;
    }

    public void setIncludePlan(boolean includePlan) {
        this.includePlan = includePlan;
    }

    public double getSumOfRatings() {
        return sumOfRatings;
    }
    public void evaluate(double grade){
        sumOfRatings += grade;
        ratingCount++;
    }

    public void movieDescription(){
        System.out.println("Com.Vn.screenmatch.models.Movie name: "+name);
        System.out.println("Com.Vn.screenmatch.models.Movie genre: "+movieGenre);
        System.out.println("Com.Vn.screenmatch.models.Movie release date: "+releaseDate);
        System.out.println("Com.Vn.screenmatch.models.Movie minutes duration: "+minutesDuration);
        System.out.println("Com.Vn.screenmatch.models.Movie included? "+includePlan);
    }

    public double getAvarage() {
        if(ratingCount == 0) {
            return 0; // avoids division error
        }
        return sumOfRatings / ratingCount;
    }
}
import Com.Vn.screenmatch.models.Movie;

public class Main {
    public static void main(String[] args) {
    Movie mymovie = new Movie();
    mymovie.setName("The Amazing Spider-Man");
    mymovie.setReleaseDate("2012");
    mymovie.setMinutesDuration(136);
    mymovie.setMovieGenre("Action, Adventure, Fantasy");
        mymovie.setIncludePlan(true);

                mymovie.movieDescription();
        {
            mymovie.evaluate(10);
            mymovie.evaluate(8.3);
            mymovie.evaluate(9.7);
            mymovie.evaluate(8.1);
            System.out.println("Sum of ratings: " + mymovie.getSumOfRatings());
        }
        System.out.println("Number of ratings: " + mymovie.getRatingCount());

        System.out.println("Final rating: " + mymovie.getAvarage());
    }
}
1 resposta

Olá, Vinicius! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso de encapsulamento para organizar os atributos de um filme com Java, utilizou muito bem o método evaluate para acumular avaliações e ainda compreendeu a importância do cálculo da média para representar a nota final de forma consistente.

Uma dica interessante para o futuro é sobrescrever o método toString() em vez de criar um método específico para descrição. Assim:

@Override
public String toString() {
    return "Movie name: " + name +
           "\nMovie genre: " + movieGenre +
           "\nRelease date: " + releaseDate +
           "\nMinutes duration: " + minutesDuration +
           "\nIncluded? " + includePlan;
}

Isso faz com que a descrição seja exibida automaticamente quando o objeto for impresso, deixando o código mais elegante e reutilizável.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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