1
resposta

Projeto ScremMatch

public class Principal {
    public static void main(String[] args) {
        Filme meuFilme = new Filme();
        meuFilme.nome = "O Poderoso Chefão ";
        meuFilme.codigoFilme = 1;
        meuFilme.anoDeLancamento = 1972;
        meuFilme.duracaoEmMinutos = 180;
        meuFilme.atorPrincipal = "Al Pacino";
        meuFilme.atorSecundario = "Marlon Brando";
        meuFilme.somaAvaliacoes = 0;
        meuFilme.incluido = true;

        meuFilme.exibeFichaTecnica();
        meuFilme.avalia(5);
        meuFilme.avalia(5);
        meuFilme.avalia(5);
        meuFilme.avalia(5);

        System.out.println("Somas das avaliações: " + meuFilme.somaAvaliacoes);
        System.out.println("Total de avaliaçõs recebidas: " + meuFilme.totalDeAvaliacoes);
        System.out.println("A Media das avaliaçõse é: " + meuFilme.mediaAvaliacoes());

        Filme filme = new Filme();
        filme.verFilme();

    }
}

//*/*/*/*/*/*/*/*/

import java.util.Scanner;

public class Filme {
    String nome;
    int codigoFilme;
    int anoDeLancamento;  // Corrigido o nome da variável
    boolean incluido;
    double somaAvaliacoes;
    int totalDeAvaliacoes;
    int duracaoEmMinutos;
    String atorPrincipal;  // Corrigido o nome da variável
    String atorSecundario; // Corrigido o nome da variável
    int acessoNivel1 = 2501; // Corrigido o nome da variável
    int acessoNivel2 = 0;

    void exibeFichaTecnica() {
        System.out.println("Nome do filme: " + nome);
        System.out.println("Código do filme: " + codigoFilme);
        System.out.println("Ano do lançamento: " + anoDeLancamento);
        System.out.println("Tempo de Duração: " + duracaoEmMinutos + " minutos");
        System.out.println("Ator Principal: " + atorPrincipal);
        System.out.println("Ator Secundário: " + atorSecundario);
        //System.out.println("Avaliação: " + somaAvaliacoes);
    }

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

    double mediaAvaliacoes() {
        return somaAvaliacoes / totalDeAvaliacoes;
    }

    void verFilme() {
        Scanner entrada = new Scanner(System.in);
        System.out.println("Digite seu código de acesso de 4 dígitos\ncodigo: ");
        int acesso = entrada.nextInt();
        if (acesso <= 2500) {
            System.out.println("**** Acesso aos filmes código 01 ******");
        } else {
            System.out.println("**** Acesso aos filmes código 02 ******");
        }
        entrada.close(); // Fechar o Scanner
    }

    public static void main(String[] args) {
        Filme filme = new Filme();
        filme.verFilme();
    }
}
1 resposta

Olá, Juliano! Tudo bem?

Ótimo código, parabéns! Deixo apenas algumas sugestões:

  1. Remover o método main da classe Filme: A classe Filme deve ser responsável apenas pelos atributos e métodos relacionados ao filme, dessa forma, o método main deve estar na classe Principal.

  2. Ajustar a classe Principal: A classe Principal deve criar uma instância de Filme, preencher seus atributos e chamar os métodos necessários.

Deixando o nosso código da seguinte maneira:

// Classe Principal
public class Principal {
    public static void main(String[] args) {
        Filme meuFilme = new Filme();
        meuFilme.nome = "O Poderoso Chefão";
        meuFilme.codigoFilme = 1;
        meuFilme.anoDeLancamento = 1972;
        meuFilme.duracaoEmMinutos = 180;
        meuFilme.atorPrincipal = "Al Pacino";
        meuFilme.atorSecundario = "Marlon Brando";
        meuFilme.somaAvaliacoes = 0;
        meuFilme.incluido = true;

        meuFilme.exibeFichaTecnica();
        meuFilme.avalia(5);
        meuFilme.avalia(5);
        meuFilme.avalia(5);
        meuFilme.avalia(5);

        System.out.println("Soma das avaliações: " + meuFilme.somaAvaliacoes);
        System.out.println("Total de avaliações recebidas: " + meuFilme.totalDeAvaliacoes);
        System.out.println("A média das avaliações é: " + meuFilme.mediaAvaliacoes());

        meuFilme.verFilme();
    }
}

// Classe Filme
import java.util.Scanner;

public class Filme {
    String nome;
    int codigoFilme;
    int anoDeLancamento;
    boolean incluido;
    double somaAvaliacoes;
    int totalDeAvaliacoes;
    int duracaoEmMinutos;
    String atorPrincipal;
    String atorSecundario;
    int acessoNivel1 = 2501;
    int acessoNivel2 = 0;

    void exibeFichaTecnica() {
        System.out.println("Nome do filme: " + nome);
        System.out.println("Código do filme: " + codigoFilme);
        System.out.println("Ano do lançamento: " + anoDeLancamento);
        System.out.println("Tempo de Duração: " + duracaoEmMinutos + " minutos");
        System.out.println("Ator Principal: " + atorPrincipal);
        System.out.println("Ator Secundário: " + atorSecundario);
    }

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

    double mediaAvaliacoes() {
        return somaAvaliacoes / totalDeAvaliacoes;
    }

    void verFilme() {
        Scanner entrada = new Scanner(System.in);
        System.out.println("Digite seu código de acesso de 4 dígitos\ncodigo: ");
        int acesso = entrada.nextInt();
        if (acesso <= 2500) {
            System.out.println("**** Acesso aos filmes código 01 ******");
        } else {
            System.out.println("**** Acesso aos filmes código 02 ******");
        }
        entrada.close(); // Fechar o Scanner
    }
}

Com essas mudanças, nosso código ficará mais organizado e aderente aos princípios de orientação a objetos!

Espero ter ajudado!

Um forte abraço e bons estudos!