1
resposta

[Projeto] ScreenMatch com herança

import br.com.jp.ScreenMatch.Behindtscenes.Movie;
import br.com.jp.ScreenMatch.Behindtscenes.Series;
import br.com.jp.ScreenMatch.Calculator.TimeCalculator;

public class Main {
public static void main(String[] args) {
Movie Superman = new Movie();

    Superman.setName("superman");
    Superman.setLaunchYear(2025);
    Superman.setDuration(129);
    //Superman.reviews = 83;
    //Superman.totalrevies = 378;
    Superman.setIncluded(true);
    Superman.setDirector("james gunn");

    Superman.showtecSheet();
     Superman.overall(3);
    Superman.overall(5);
    Superman.overall(3);
    System.out.println(Superman.getTotalReviews());
    System.out.println(Superman.takeAverage());

    Series Breakingbad = new Series();

    Breakingbad.setName("Breaking Bad");
    Breakingbad.setLaunchYear(2008);
    Breakingbad.setSeasons(5);
    Breakingbad.setEpisodeForSeason(10);
    Breakingbad.setMinuteForEpisode(47);
    Breakingbad.showtecSheet();
    System.out.println(Breakingbad.getDuration());


    Movie Batman = new Movie();
    Batman.setName("Batman");
    Batman.setLaunchYear(2021);
    Batman.setDuration(180);

    TimeCalculator calc = new TimeCalculator();

    calc.include(Batman);
    System.out.println(calc.getTotaltempo());

}

}package br.com.jp.ScreenMatch.Behindtscenes;

public class MainForTitles {
private String name;
private int LaunchYear;
private boolean Included;
private float reviews;
private int totalReviews;
private int Duration;

//variable declarations

public int getTotalReviews() {
    return totalReviews;
}

public String getName() {
    return name;
}

public int getLaunchYear() {
    return LaunchYear;
}

public boolean isIncluded() {
    return Included;
}

public float getReviews() {
    return reviews;
}

public int getDuration() {
    return Duration;
}


//in here is the end of the getters

public void setName(String name) {
    this.name = name;
}

public void setLaunchYear(int launchYear) {
    LaunchYear = launchYear;
}

public void setIncluded(boolean included) {
    Included = included;
}

public void setReviews(float reviews) {
    this.reviews = reviews;
}

public void setTotalReviews(int totalReviews) {
    this.totalReviews = totalReviews;
}

public void setDuration(int duration) {
    Duration = duration;
}

// end of the setters

public void showtecSheet() {
    System.out.println(name);
    System.out.println(LaunchYear);
    System.out.println(Included);
    System.out.println(Duration);
}

public void overall(float overallgrade) {
    reviews += overallgrade;
    totalReviews++;

}

public double takeAverage() {
    return reviews / totalReviews;
}

}package br.com.jp.ScreenMatch.Behindtscenes;

public class Movie extends MainForTitles {
private String Director;

public String getDirector() {
    return Director;
}

public void setDirector(String director) {
    Director = director;
}

}
package br.com.jp.ScreenMatch.Behindtscenes;

public class Series extends MainForTitles{

private int Seasons;
private int EpisodeForSeason;
private boolean active;
private int MinuteForEpisode;

public int getEpisodeForSeason() {
    return EpisodeForSeason;
}

public boolean isActive() {
    return active;
}

public int getMinuteForEpisode() {
    return MinuteForEpisode;
}

public int getSeasons() {
    return Seasons;
}

public void setSeasons(int seasons) {
    Seasons = seasons;
}

public void setEpisodeForSeason(int episodeForSeason) {
    EpisodeForSeason = episodeForSeason;
}

public void setActive(boolean active) {
    this.active = active;
}

public void setMinuteForEpisode(int minuteForEpisode) {
    MinuteForEpisode = minuteForEpisode;
}

@Override
public int getDuration() {
    return Seasons*EpisodeForSeason*MinuteForEpisode;
}

}
package br.com.jp.ScreenMatch.Calculator;

import br.com.jp.ScreenMatch.Behindtscenes.MainForTitles;
import br.com.jp.ScreenMatch.Behindtscenes.Movie;

public class TimeCalculator {
private int Totaltempo;

public int getTotaltempo() {
    return Totaltempo;
}

public void include(MainForTitles Titles){
    Totaltempo += Titles.getDuration();
}

}

1 resposta

Oi, Joao! Como vai?

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

Achei muito legal como você aplicou os conceitos de herança e polimorfismo criando a superclasse MainForTitles e reutilizando os métodos nas classes Movie e Series. Isso mostra um bom entendimento da estrutura orientada a objetos proposta no projeto.

Uma dica interessante para o futuro é usar o método toString() para exibir as informações do objeto de forma personalizada. Isso evita múltiplos System.out.println() e facilita o debug.


@Override
public String toString() {
    return getName() + " (" + getLaunchYear() + ")";
}

Com esse método, você pode usar System.out.println(Superman); e ele já imprime o nome e o ano.
A palavra @Override indica que você está sobrescrevendo um método herdado da classe Object.

Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!

Alura

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