Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] Projeto Final

Agradeço sugestões de melhoria e feedbacks.

Classe Main:

import models.Favorites;
import models.Music;
import models.Podcast;

public class Main {
    public static void main(String[] args) {
        Music musicA = new Music();
        musicA.setTitle("Say yes");
        musicA.setGenre("Rock Indie");
        for (int i = 0; i < 834251; i++) {
            musicA.play();
            if (i % 2 == 0) {
                musicA.like();
            }
        }

        Podcast podcastB = new Podcast();
        podcastB.setTitle("Podepah Podpah");
        podcastB.setHost("Igão e Mítico");
        for (int i = 0; i < 487587; i++) {
            podcastB.play();
            if (i % 2 == 1) {
                podcastB.like();
            }
        }

        Favorites favorites = new Favorites();

        favorites.include(musicA);
        favorites.include(podcastB);
    }
}

Classe Audio:

package models;

public class Audio {
    private String title;
    private int reproductions;
    private int likes;
    private int rating;
    private String about;

    public void like() {
        this.likes++;
    }

    public void play() {
        this.reproductions++;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public int getReproductions() {
        return reproductions;
    }

    public int getLikes() {
        return likes;
    }

    public int getRating() {
        return rating;
    }

    public String getAbout() {
        return about;
    }

    public void setAbout(String about) {
        this.about = about;
    }
}

Classe Music:

package models;

public class Music extends Audio {
    private String album;
    private String artist;
    private String genre;

    public String getAlbum() {
        return album;
    }

    public void setAlbum(String album) {
        this.album = album;
    }

    public String getArtist() {
        return artist;
    }

    public void setArtist(String artist) {
        this.artist = artist;
    }

    public String getGenre() {
        return genre;
    }

    public void setGenre(String genre) {
        this.genre = genre;
    }

    @Override
    public int getRating() {
        if (this.getReproductions() > 300000) {
            return 5;
        } else if (this.getReproductions() > 250000) {
            return 4;
        } else if (this.getReproductions() > 150000) {
            return 3;
        } else if (this.getReproductions() > 100000) {
            return 2;
        } else {
            return 1;
        }
    }
}

Classe Podcast:

package models;

public class Podcast extends Audio {
    private String host;
    private String description;

    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    @Override
    public int getRating() {
        if (this.getLikes() > 300000) {
            return 5;
        } else if (this.getLikes() > 250000) {
            return 4;
        } else if (this.getLikes() > 150000) {
            return 3;
        } else if (this.getLikes() > 100000) {
            return 2;
        } else return 1;
    }
}

Classe Favorites:

package models;

public class Favorites {

    public void include(Audio audio) {
        if (audio.getRating() == 5) {
            audio.setAbout("Fantástico, está entre os melhores!");
        } else if (audio.getRating() == 4) {
            audio.setAbout("Entre os populares do momento!");
        } else if (audio.getRating() == 3) {
            audio.setAbout("Muito comentado ultimamente!");
        } else if (audio.getRating() == 2) {
            audio.setAbout("Vale a pena conferir!");
        } else if (audio.getRating() == 1) {
            audio.setAbout("Salve para assistir mais tarde!");
        } else {
            audio.setAbout("...");
        }

        String resume = String.format("""
                ````````````````````````````````````
                Título:                    %s
                Curtidas:                  %d
                Reproduções:               %d
                Classificação:             %s
                Sobre:                     %s
                ````````````````````````````````````
                 """, audio.getTitle(), audio.getLikes(), audio.getReproductions(), audio.getRating(), audio.getAbout());

        System.out.println(resume);
    }
}

Retorno: Console

1 resposta
solução!

Olá, Felipe!

Pelo código que você compartilhou, parece que você está desenvolvendo um projeto de reprodução de músicas e podcasts. Sua classe Favorites é responsável por incluir áudios na lista de favoritos e atribuir uma classificação a eles com base no número de reproduções ou curtidas.

Uma sugestão de melhoria para o seu projeto é adicionar uma funcionalidade que permita ao usuário visualizar os áudios favoritos de acordo com sua classificação. Por exemplo, você poderia criar um método na classe Favorites chamado showFavoritesByRating que exiba os áudios favoritos em ordem decrescente de classificação.

Para implementar essa funcionalidade, você pode utilizar a interface Comparable e o método Collections.sort() para ordenar a lista de favoritos. Aqui está um exemplo de como você poderia fazer isso:

import java.util.Collections;
import java.util.List;

public class Favorites {
    private List<Audio> favorites;

    // ...

    public void showFavoritesByRating() {
        Collections.sort(favorites);
        for (Audio audio : favorites) {
            System.out.println(audio.getTitle() + " - Classificação: " + audio.getRating());
        }
    }
}

Nesse exemplo, a classe Audio deve implementar a interface Comparable e sobrescrever o método compareTo() para que a ordenação seja feita com base na classificação. Por exemplo:

public class Audio implements Comparable<Audio> {
    // ...

    @Override
    public int compareTo(Audio other) {
        return Integer.compare(other.getRating(), this.getRating());
    }
}

Dessa forma, ao chamar o método showFavoritesByRating() na classe Favorites, os áudios favoritos serão exibidos em ordem decrescente de classificação.

Espero que essa sugestão seja útil para melhorar o seu projeto! Se tiver mais alguma dúvida, é só me dizer. Espero ter ajudado e bons estudos!