package br.com.gilvaneidemedeiros.modelos;
public class Titulo {
    private String nome;
    private int anoLancamento;
    private boolean incluidoNoPlano;
    private double somaDasAvaliacoes;
    private int totalDeAvaliacoes;
    private int duracaoEmMinutos;
    public String getNome() { return nome; }
    public int getAnoLancamento() { return anoLancamento; }
    public boolean isIncluidoNoPlano() { return incluidoNoPlano; }
    public int getDuracaoEmMinutos() { return duracaoEmMinutos; }
    public double getSomaDasAvaliacoes() {
        return somaDasAvaliacoes;
    }
    public int getTotalDeAvaliacoes() {
        return totalDeAvaliacoes;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }
    public void setAnoLancamento(int anoLancamento) {
        this.anoLancamento = anoLancamento;
    }
    public void setIncluidoNoPlano(boolean incluidoNoPlano) {
        this.incluidoNoPlano = incluidoNoPlano;
    }
    public void setDuracaoEmMinutos(int duracaoEmMinutos) {
        this.duracaoEmMinutos = duracaoEmMinutos;
    }
    public void exibeFichaTecnica() {
        System.out.println("Nome: " + nome);
        System.out.println("Ano de lançamento: " + anoLancamento);
        System.out.println("Duração em minutos: " + duracaoEmMinutos);
        if (incluidoNoPlano == true) {
            System.out.println("Incluído no plano: sim");
        } else {
            System.out.println("Não incluido no plano");
        }
    }
    public void avalia(double nota) {
        somaDasAvaliacoes += nota;
        totalDeAvaliacoes++;
    }
    public double pegaMedia() {
        return somaDasAvaliacoes / totalDeAvaliacoes;
    }
}
package br.com.gilvaneidemedeiros.modelos;
public class Filme extends Titulo {
    private String diretor;
    public String getDiretor() { return diretor; }
    public void setDiretor(String diretor) { this.diretor = diretor; }
}
package br.com.gilvaneidemedeiros.modelos;
public class Serie extends Titulo {
    private int temporadas;
    private int episodiosPorTemporada;
    private boolean ativa;
    private int minutosPorEpisodio;
    public int getTemporadas() { return temporadas; }
    public int getEpisodiosPorTemporada() { return episodiosPorTemporada; }
    public boolean isAtiva() { return ativa; }
    public int getMinutosPorEpisodio() { return minutosPorEpisodio; }
    public void setTemporadas(int temporadas) { this.temporadas = temporadas; }
    public void setEpisodiosPorTemporada(int episodiosPorTemporada) { this.episodiosPorTemporada = episodiosPorTemporada; }
    public void setAtiva(boolean ativa){ this.ativa = ativa; }
    public void setMinutosPorEpisodio(int minutosPorEpisodio) { this.minutosPorEpisodio = minutosPorEpisodio; }
    @Override
    public int getDuracaoEmMinutos() {
        return temporadas * episodiosPorTemporada * minutosPorEpisodio;
    }
}