Código final do desafio, não consegui pensar em muita coisa para fazer e acabei refazendo algumas coisas de aulas anteriores. Aceito feedbacks
Main
import br.musica.calculo.Filtro;
import br.musica.modelo.Musica;
import br.musica.modelo.Podcast;
public class Main {
public static void main(String[] args) {
Musica musica = new Musica();
musica.setTitulo("Living on a prayer");
musica.setBanda("Bon Jovi");
musica.setGenero("Rock");
musica.setDuracao(320);
for (int i = 0; i <3000 ; i++) {
musica.curtir();
}
for (int i = 0; i < 10000; i++) {
musica.reproduzir();
}
System.out.println("Reproduções " + musica.getReproducoes() );
System.out.println("Curtidas " + musica.getCurtidas());
Podcast podcast = new Podcast();
podcast.setConteudo("Tecnologia");
podcast.setTitulo("Experiencia em programação");
podcast.setHost("Dev++");
for (int i = 0; i < 3000; i++) {
podcast.reproduzir();
}
for (int i = 0; i <1350; i++) {
podcast.curtir();
}
System.out.println("Reproduções " + podcast.getReproducoes() );
System.out.println("Curtidas " + podcast.getCurtidas());
Filtro filtro = new Filtro();
System.out.print("Música: " );
filtro.filtro(musica);
System.out.print("Podcast: ");
filtro.filtro(podcast);
}
}
Super Classe Aúdio
package br.musica.modelo;
public class Audio {
private String titulo;
private int duracao;
private int curtidas;
private int totalReproducoes;
public int getReproducoes() {
return totalReproducoes;
}
public void reproduzir(){
this.totalReproducoes++;
}
public void setTitulo(String titulo){
this.titulo = titulo;
}
public String getTitulo(){
return titulo;
}
public int getDuracao() {
return duracao;
}
public void setDuracao(int duracao) {
this.duracao = duracao;
}
public int getCurtidas(){
return curtidas;
}
public void curtir(){
this.curtidas += 1;
}
}
Classe música
package br.musica.modelo;
import br.musica.calculo.Classificacao;
public class Musica extends Audio implements Classificacao {
private String banda;
private String genero;
public String getBanda() {
return banda;
}
public void setBanda(String banda) {
this.banda = banda;
}
public String getGenero() {
return genero;
}
public void setGenero(String genero) {
this.genero = genero;
}
@Override
public int getClassificacao() {
if(getReproducoes() > 4000)
return 10;
else if(getReproducoes() < 4000 && getReproducoes() > 1000)
return 7;
else
return 5;
}
}
Classe podcast
package br.musica.modelo;
import br.musica.calculo.Classificacao;
public class Podcast extends Audio implements Classificacao {
private String conteudo;
private String host;
public String getConteudo(){
return conteudo;
}
public void setConteudo(String conteudo){
this.conteudo = conteudo;
}
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
@Override
public int getClassificacao() {
if (getCurtidas() > 1000)
return 10;
else if(getCurtidas() < 1000 && getCurtidas() > 500)
return 7;
else
return 5;
}
}
Classe filtro
package br.musica.calculo;
public class Filtro {
public void filtro(Classificacao c){
switch (c.getClassificacao()){
case(10):
System.out.println("Favorito da galera");
break;
case(7):
System.out.println("A galera curte");
case (5):
System.out.println("Recém lançadas");
}
}
}
Interface Classificacao
package br.musica.calculo;
public interface Classificacao {
int getClassificacao();
}