Segue a resolução do desafio proposto:
Classe Audio:
package br.com.alura.modelos;
public class Audio {
private String nome;
private int ano;
private String descricao;
private int totalCurtidas;
private int totalReproducoes;
private int duracaoSegundos;
public void setAno(int ano) {
this.ano = ano;
}
public int getAno() {
return ano;
}
public String getNome() {
return nome;
}
public String getDescricao() {
return descricao;
}
public int getTotalCurtidas() {
return totalCurtidas;
}
public int getTotalReproducoes() {
return totalReproducoes;
}
public int getDuracaoSegundos() {
return duracaoSegundos;
}
public void setNome(String nome) {
this.nome = nome;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public void setDuracaoSegundos(int duracaoSegundos) {
this.duracaoSegundos = duracaoSegundos;
}
public void curte(){
totalCurtidas++;
}
public void reproduz(){
totalReproducoes++;
}
}
Interface Classificavel:
package br.com.alura.interfaces;
public interface Classificavel {
int getClassificacao();
}
Classe Album:
package br.com.alura.modelos;
import br.com.alura.interfaces.Classificavel;
import java.util.Scanner;
public class Album implements Classificavel {
private String nome;
private int ano;
private Musica[] musicas = new Musica[3];
private String artista;
public void setAno(int ano) {
this.ano = ano;
}
public int getAno() {
return ano;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getMusicas() {
String faixas = "";
for (int i = 0; i < musicas.length; i++) {
if (musicas[i] != null) {
faixas.concat(musicas[i].getNome() + " ");
}
}
return faixas;
}
public void setMusicas(Musica[] musicas) {
this.musicas = musicas;
}
public String getArtista() {
return artista;
}
public void setArtista(String artista) {
this.artista = artista;
}
@Override
public int getClassificacao() {
int totalCurtidas = 0;
for (int j = 0 ; j < musicas.length; j++ ) {
totalCurtidas += musicas[j].getTotalReproducoes();
}
if (totalCurtidas > 10000){
return 10;
} else if (totalCurtidas > 5000){
return 5;
} else if (totalCurtidas > 1000){
return 3;
} else {
return 1;
}
}
}
Classe Musica:
package br.com.alura.modelos;
import br.com.alura.interfaces.Classificavel;
import br.com.alura.interfaces.Classificavel;
public class Musica extends Audio implements Classificavel {
private String Artista;
public String getArtista() {
return Artista;
}
public void setArtista(String artista) {
Artista = artista;
}
@Override
public int getClassificacao() {
if (this.getTotalReproducoes() > 10000){
return 10;
} else if (this.getTotalReproducoes() > 5000){
return 5;
} else if (this.getTotalReproducoes() > 1000){
return 3;
} else {
return 1;
}
}
}
Classe Podcast:
package br.com.alura.modelos;
import br.com.alura.interfaces.Classificavel;
public class Podcast extends Audio implements Classificavel {
private String host;
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
@Override
public int getClassificacao() {
if (this.getTotalCurtidas() > 10000){
return 10;
} else if (this.getTotalCurtidas() > 5000){
return 5;
} else if (this.getTotalCurtidas() > 1000){
return 3;
} else {
return 1;
}
}
}