1
resposta

Resultado Projeto Filme

Esse foi o resultado que cheguei:

public class buildMovie {
    public static void main(String[] args) {

        Movie newMovie = new Movie();
        newMovie.movieTitle = "The Chosen";
        newMovie.releaseYear = 2024;
        newMovie.season = 4;
        newMovie.chapters = 1;
        newMovie.durationInMinutes = 120;
        newMovie.includedInThePlan = false;
        newMovie.evaluateMovie(9);
        newMovie.evaluateMovie(10);
        newMovie.evaluateMovie(9.9);
        newMovie.displayDatasheet();
    }
}
public class Movie {
    String movieTitle;
    int releaseYear;
    int season;
    int chapters;
    int durationInMinutes;
    boolean includedInThePlan;
    double sumOfReviews;
    int totalRatings;
    String systemMessage;

    void displayDatasheet () {
        systemMessage = """
                Título: %s
                Ano de Lançamento: %s
                Temporada: %s
                Capítulo: %s
                Duração: %s
                Total de Avaliações: %s
                Avaliação: %s
                Incluso no Plano: %s
                """.formatted(movieTitle, releaseYear, season, chapters ,convertDurationToHours(), totalRatings, ratingAverage(), movieIncludedInThePlan());
        System.out.println(systemMessage);
    }

    String movieIncludedInThePlan () {
        if (includedInThePlan) {
            return systemMessage = "Este filme está incluso em seu plano";
        } else {
            return systemMessage = "Este filme NÃO está incluso em seu plano";
        }
    }

    String convertDurationToHours() {
        int hours = durationInMinutes / 60;
        int remainingMinutes = durationInMinutes % 60;
        return String.format("%d:%02d", hours, remainingMinutes);
    }

    void evaluateMovie (double rating) {
        sumOfReviews += rating;
        totalRatings++;
    }

    String ratingAverage() {
        if (totalRatings > 0) {
            return String.format("%.1f\n", sumOfReviews / totalRatings).replace("\n", "");
        } else {
            return "0.0";
        }
    }
}
1 resposta

Olá, Rodrigo.

Tudo bem?

Obrugado por compartilhar o seu código aqui com a gente. Seu código está muito bem estruturado e você está no caminho certo! Vou fazer algumas observações e sugestões para melhorar e ajustar o que você já fez.

  1. Nome das Classes: Em Java, é uma boa prática nomear as classes com a primeira letra maiúscula. Portanto, buildMovie deveria ser BuildMovie.

  2. Encapsulamento: É uma boa prática tornar os atributos das classes privados e fornecer métodos públicos para acessá-los (getters e setters). Isso ajuda a proteger os dados e a manter o controle sobre como eles são modificados.

  3. Ajuste dos Métodos: Vou ajustar os métodos conforme a orientação do exercício que você mencionou.

Aqui está uma versão ajustada do seu código:

public class BuildMovie {
    public static void main(String[] args) {
        Movie newMovie = new Movie();
        newMovie.setMovieTitle("The Chosen");
        newMovie.setReleaseYear(2024);
        newMovie.setSeason(4);
        newMovie.setChapters(1);
        newMovie.setDurationInMinutes(120);
        newMovie.setIncludedInThePlan(false);
        newMovie.evaluateMovie(9);
        newMovie.evaluateMovie(10);
        newMovie.evaluateMovie(9.9);
        newMovie.displayDatasheet();
    }
}

class Movie {
    private String movieTitle;
    private int releaseYear;
    private int season;
    private int chapters;
    private int durationInMinutes;
    private boolean includedInThePlan;
    private double sumOfReviews;
    private int totalRatings;

    public void displayDatasheet() {
        String systemMessage = """
                Título: %s
                Ano de Lançamento: %s
                Temporada: %s
                Capítulo: %s
                Duração: %s
                Total de Avaliações: %s
                Avaliação: %s
                Incluso no Plano: %s
                """.formatted(movieTitle, releaseYear, season, chapters, convertDurationToHours(), totalRatings, ratingAverage(), movieIncludedInThePlan());
        System.out.println(systemMessage);
    }

    private String movieIncludedInThePlan() {
        if (includedInThePlan) {
            return "Este filme está incluso em seu plano";
        } else {
            return "Este filme NÃO está incluso em seu plano";
        }
    }

    private String convertDurationToHours() {
        int hours = durationInMinutes / 60;
        int remainingMinutes = durationInMinutes % 60;
        return String.format("%d:%02d", hours, remainingMinutes);
    }

    public void evaluateMovie(double rating) {
        sumOfReviews += rating;
        totalRatings++;
    }

    private String ratingAverage() {
        if (totalRatings > 0) {
            return String.format("%.1f", sumOfReviews / totalRatings);
        } else {
            return "0.0";
        }
    }

    // Getters e Setters
    public String getMovieTitle() {
        return movieTitle;
    }

    public void setMovieTitle(String movieTitle) {
        this.movieTitle = movieTitle;
    }

    public int getReleaseYear() {
        return releaseYear;
    }

    public void setReleaseYear(int releaseYear) {
        this.releaseYear = releaseYear;
    }

    public int getSeason() {
        return season;
    }

    public void setSeason(int season) {
        this.season = season;
    }

    public int getChapters() {
        return chapters;
    }

    public void setChapters(int chapters) {
        this.chapters = chapters;
    }

    public int getDurationInMinutes() {
        return durationInMinutes;
    }

    public void setDurationInMinutes(int durationInMinutes) {
        this.durationInMinutes = durationInMinutes;
    }

    public boolean isIncludedInThePlan() {
        return includedInThePlan;
    }

    public void setIncludedInThePlan(boolean includedInThePlan) {
        this.includedInThePlan = includedInThePlan;
    }
}

Essas mudanças ajudam a seguir as boas práticas de programação em Java e tornam seu código mais robusto e fácil de manter.

Veja se faz sentido e faça as alterações. Valeu Rodrigo. Bons estudos!