1
resposta

polimorfismo e herança

package Com.Vn.screenmatch.models;

public class  Title {
        private String name;
        private  String movieGenre;
        private String releaseDate;
        private int ratingCount;
        private double sumOfRatings;
        private int minutesDuration;
        private boolean includePlan;

        public int getRatingCount() {

            return ratingCount;
        }

    public String getName() {
        return name;
    }

    public String getReleaseDate() {
        return releaseDate;
    }

    public String getMovieGenre() {
        return movieGenre;
    }

    public void setRatingCount(int ratingCount) {
        this.ratingCount = ratingCount;
    }

    public void setSumOfRatings(double sumOfRatings) {
        this.sumOfRatings = sumOfRatings;
    }

    public boolean isIncludePlan() {
        return includePlan;
    }

    public int getMinutesDuration() {
        return minutesDuration;
    }

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

    public void setMovieGenre(String movieGenre) {
            this.movieGenre = movieGenre;
        }

        public void setReleaseDate(String releaseDate) {
            this.releaseDate = releaseDate;
        }

        public void setMinutesDuration(int minutesDuration) {
            this.minutesDuration = minutesDuration;
        }

        public void setIncludePlan(boolean includePlan) {
            this.includePlan = includePlan;
        }

        public double getSumOfRatings() {
            return sumOfRatings;
        }
        public void evaluate(double grade){
            sumOfRatings += grade;
            ratingCount++;
        }

        public void movieDescription(){
            System.out.println("Com.Vn.screenmatch.models.Movie name: "+name);
            System.out.println("Com.Vn.screenmatch.models.Movie genre: "+movieGenre);
            System.out.println("Com.Vn.screenmatch.models.Movie release date: "+releaseDate);
            System.out.println("Com.Vn.screenmatch.models.Movie minutes duration: "+minutesDuration);
            System.out.println("Com.Vn.screenmatch.models.Movie included? "+includePlan);
        }

        public double getAvarage() {
            if(ratingCount == 0) {
                return 0; // avoids division error
            }
            return sumOfRatings / ratingCount;
        }
    }
package Com.Vn.screenmatch.models;

public class Series extends Title {
    private int seasons;
    private int episodesPerSeason;
    private boolean active;
    private int minutesPerEpisodes;

    public int getSeasons() {
        return seasons;
    }

    public void setSeasons(int seasons) {
        this.seasons = seasons;
    }

    public int getEpisodesPerSeason() {
        return episodesPerSeason;
    }

    public void setEpisodesPerSeason(int episodesPerSeason) {
        this.episodesPerSeason = episodesPerSeason;
    }

    public boolean isActive() {
        return active;
    }

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

    public int getMinutesPerEpisodes() {
        return minutesPerEpisodes;
    }

    public void setMinutesPerEpisodes(int minutesPerEpisodes) {
        this.minutesPerEpisodes = minutesPerEpisodes;
    }

    @Override
    public int getMinutesDuration(){
        return seasons * episodesPerSeason * minutesPerEpisodes;
    }
}
package Com.Vn.screenmatch.calculate;

import Com.Vn.screenmatch.models.Title;

public class TimeCalculator {
    private int totalDuration;

    public int getTotalDuration() {
        return totalDuration;
    }
    
    public void included(Title title)
    {
        System.out.println("Duration Minutes:"+title);
        totalDuration += title.getMinutesDuration();
    }
}
1 resposta

Oi, Vinicius! Como vai?
Agradeço por compartilhar seu código com a comunidade Alura.

Ficou bem legal como você aplicou herança criando Series extends Title e usou @Override em getMinutesDuration() pra calcular a duração total da serie. Isso mostra bem a ideia de polimorfismo, porque o TimeCalculator trabalha com Title, mas ao receber uma Series, ele usa o método sobrescrito automaticamente.

Uma dica interessante para o futuro e ajustar o TimeCalculator pra exibir a duração corretamente (em vez de imprimir o objeto inteiro).


public void included(Title title) {
    int minutes = title.getMinutesDuration();
    System.out.println("Duration Minutes: " + minutes);
    totalDuration += minutes;
}

Esse codigo pega getMinutesDuration() (que pode vir de Title ou de uma classe filha como Series) e imprime os minutos calculados, somando no total.

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