1
resposta

Declarando construtores

public Filme(String nome, int anoDeLancamento) { super(nome, anoDeLancamento); }

   public Serie(String nome, int anoDeLancamento) {
    super(nome, anoDeLancamento);
}

public Titulo(String nome, int anoDeLancamento) { this.nome = nome; this.anoDeLancamento = anoDeLancamento; }

package br.com.alura.screenmatch.modelos; import br.com.alura.screenmatch.calculos.CalculadoraDeTempo; import br.com.alura.screenmatch.calculos.FiltroRecomencao; import br.com.alura.screenmatch.modelos.Filme; import java.util.ArrayList;

public class Principal { private static Filme Serie; public static void main(String[] args) {

    Filme meuFilme = new Filme("Jonh Wick 4", 2023);
    meuFilme.setDuracaoEmMinutos(180);
    meuFilme.setIncluidoNoPlano(true);

    meuFilme.exibeFichaTecnica();
    meuFilme.avalia(8);
    meuFilme.avalia(5);
    meuFilme.avalia(10);
    
    System.out.println("Duração do Filme:" + meuFilme.getDuracaoEmMinutos());
    System.out.println("Quantidade de Avalições: " + meuFilme.getTotalDeAvaliacao());
    System.out.printf("Media das Avaliações: %.1f\n ", meuFilme.pegaMedia());
  
    System.out.println("");
    Serie lost = new Serie("Lost", 2000);
    lost.exibeFichaTecnica();
    lost.setTemporadas(10);
    lost.setEpisodiosPorTemporada(10);
    lost.setMinutosPorEpisodio(50);
    System.out.println("Tempo para Maratonar Lost:" +lost.getDuracaoEmMinutos() + " Minutos");

    Filme outroFilme = new Filme("Jonh Wick 3", 2021);
    outroFilme .setDuracaoEmMinutos(120);

    CalculadoraDeTempo calculadora = new CalculadoraDeTempo();
    calculadora.inclui(meuFilme);
    calculadora.inclui(outroFilme);
    calculadora.inclui(lost);
    System.out.println(calculadora.getTempoTotal());

    FiltroRecomencao filtro = new FiltroRecomencao();
    filtro.filtrar(meuFilme);
    Episodio episodio = new Episodio();
    episodio.setNumero(1);
    episodio.setSerie(lost);
    episodio.setTotalVizualizacoes(200);
    filtro.filtrar(episodio);

    var filmeDaRejane = new Filme("Escolha Perfeita",2015);
    filmeDaRejane.setDuracaoEmMinutos(180);
    filmeDaRejane.avalia(8);

    // CRIANDO UMA LISTA DE FILMES.
    ArrayList<Filme> listaDeFilmes = new ArrayList<>();

    listaDeFilmes.add(meuFilme);
    listaDeFilmes.add(outroFilme);
    listaDeFilmes.add(filmeDaRejane);
    System.out.println("Lista de Filmes: " + listaDeFilmes.size());
    System.out.println("Primeiro Filme. " + listaDeFilmes.get(0).getNome());
    System.out.println("toString do filme. " + listaDeFilmes.get(0).toString());
    System.out.println(listaDeFilmes);
}

}

1 resposta

Olá! Parece que você está com dúvidas sobre como declarar construtores em Java. Vamos lá!

Os construtores são métodos especiais que são utilizados para inicializar objetos. No seu código, você já declarou os construtores para as classes Filme, Serie e Titulo, que recebem como parâmetros uma String para o nome e um int para o ano de lançamento.

public Filme(String nome, int anoDeLancamento) {
    super(nome, anoDeLancamento);
}

public Serie(String nome, int anoDeLancamento) {
    super(nome, anoDeLancamento);
}

public Titulo(String nome, int anoDeLancamento) {
    this.nome = nome;
    this.anoDeLancamento = anoDeLancamento;
}

No caso das classes Filme e Serie, você está chamando o construtor da superclasse (classe pai) através do comando super(nome, anoDeLancamento);. Isso significa que a classe Filme e a classe Serie são subclasses de uma outra classe (que não foi mostrada no seu código) que possui um construtor que recebe um nome e um ano de lançamento.

Já na classe Titulo, você está inicializando as variáveis de instância nome e anoDeLancamento diretamente.

Depois, você está utilizando esses construtores para criar novos objetos das classes Filme e Serie:

Filme meuFilme = new Filme("Jonh Wick 4", 2023);
Serie lost = new Serie("Lost", 2000);

Portanto, parece que você está no caminho certo! Lembre-se, a declaração de um construtor segue a estrutura: public NomeDaClasse(parametros) { // código }. E para utilizar o construtor e criar um novo objeto, você usa: NomeDaClasse nomeDoObjeto = new NomeDaClasse(valoresDosParametros);.

Espero ter ajudado e bons estudos!