1
resposta

[Projeto] Criando construtores

**TÍTULO **

package br.com.screenmatch.modelos;

public class Titulo {
private String nome;
private int anoDeLancamento;

public Titulo(String nome, int anoDeLancamento) {
    this.nome = nome;
    this.anoDeLancamento = anoDeLancamento;
}
public String getNome() {
    return nome;
}
public int getAnoDeLancamento() {
    return anoDeLancamento;
}
public void exibeFichaTecnica() {
    System.out.println("Nome: " + nome);
    System.out.println("Ano de lançamento: " + anoDeLancamento);
}
}

FILME

package br.com.screenmatch.modelos;

public class Filme extends Titulo {
private int duracaoEmMinutos;
public Filme(String nome, int anoDeLancamento) {
    super(nome, anoDeLancamento);
}
public void setDuracaoEmMinutos(int duracaoEmMinutos) {
    this.duracaoEmMinutos = duracaoEmMinutos;
}
public int getDuracaoEmMinutos() {
    return duracaoEmMinutos;
}
}

SÉRIE

package br.com.screenmatch.modelos;

public class Serie extends Titulo {

private int temporadas;
private int episodiosPorTemporada;
private int minutosPorEpisodio;
public Serie(String nome, int anoDeLancamento) {
    super(nome, anoDeLancamento);
}
public void setTemporadas(int temporadas) {
    this.temporadas = temporadas;
}
public void setEpisodiosPorTemporada(int episodiosPorTemporada) {
    this.episodiosPorTemporada = episodiosPorTemporada;
}
public void setMinutosPorEpisodio(int minutosPorEpisodio) {
    this.minutosPorEpisodio = minutosPorEpisodio;
}
public int getDuracaoEmMinutos() {
    return temporadas * episodiosPorTemporada * minutosPorEpisodio;
}
}

PRINCIPAL

package br.com.screenmatch.principal;

import br.com.screenmatch.modelos.Filme;
import br.com.screenmatch.modelos.Serie;

public class Principal {
public static void main(String[] args) {
    Serie lost = new Serie("Lost", 2000);
    lost.exibeFichaTecnica();
    lost.setTemporadas(10);
    lost.setEpisodiosPorTemporada(10);
    lost.setMinutosPorEpisodio(50);

    System.out.println("Duração para maratonar Lost: " 
            + lost.getDuracaoEmMinutos());

    System.out.println("----------");

    Filme meuFilme = new Filme("O poderoso chefão", 1970);
    meuFilme.setDuracaoEmMinutos(180);
    meuFilme.exibeFichaTecnica();

    System.out.println("Duração do filme: " 
            + meuFilme.getDuracaoEmMinutos());

    System.out.println("----------");

    Filme outroFilme = new Filme("Avatar", 2023);
    outroFilme.setDuracaoEmMinutos(200);
    Filme filmeDoPaulo = new Filme("Dogville", 2003);
    filmeDoPaulo.setDuracaoEmMinutos(200);
}
}
1 resposta

Oi, Giulia! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Gostei bastante da forma como você estruturou as classes usando herança e super(). Do jeito que você explicou, ficou bem claro como o Titulo serve de base para Filme e Serie, e a organização dos atributos e métodos está bem consistente. O método getDuracaoEmMinutos() na série ficou bem interessante, calculando tudo automaticamente.

Você pode utilizar sobrescrita de método com @Override para personalizar comportamentos nas classes filhas.


public class Filme extends Titulo {

    private int duracaoEmMinutos;

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

    @Override
    public void exibeFichaTecnica() {
        System.out.println("Filme: " + getNome());
        System.out.println("Ano: " + getAnoDeLancamento());
        System.out.println("Duracao: " + duracaoEmMinutos);
    }
}

Esse código mostra como mudar o comportamento de um método herdado para algo mais especifico na classe Filme.

Conteúdos relacionados
Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!