Está correto? Código da classe Main:
package br.com.alura.desafio.streamingmusica;
import br.com.alura.desafio.streamingmusica.modelos.Musicas;
import br.com.alura.desafio.streamingmusica.modelos.Podcasts;
public class Principal {
public static void main(String[] args) {
Musicas musica1 = new Musicas();
musica1.setDuracao(6.09);
musica1.setTitulo("Infinite Dreams");
musica1.setAlbum("Seventh Son of a Seventh Son");
musica1.setArtista("Iron Maiden");
musica1.setGenero("Metal");
musica1.linhaOrganiza();
musica1.exibeDescricao();
musica1.reproduz();
musica1.curte();
musica1.linhaOrganiza();
Podcasts podcast1 = new Podcasts();
podcast1.setEpisodio(32);
podcast1.setDuracao(30.39);
podcast1.setTitulo("Carreira e Dia da Programação");
podcast1.setHost("Paulo Silveira");
podcast1.exibeDescricao();
podcast1.curte();
musica1.linhaOrganiza();
}
}
Código da Superclasse:
package br.com.alura.desafio.streamingmusica;
public class Audio {
//Atributos.
private double duracao;
private String titulo;
//Getters e Setters
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
public double getDuracao() {
return duracao;
}
public void setDuracao(double duracao) {
this.duracao = duracao;
}
//Métodos.
public void curte() {
System.out.println("Você curtiu este som!");
}
public void reproduz() {
System.out.println("Reproduzindo " + "\"" + titulo + "\"" + " ♫");
}
public void linhaOrganiza() {
System.out.println("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
}
}
Código da Subclasse 1:
package br.com.alura.desafio.streamingmusica.modelos;
import br.com.alura.desafio.streamingmusica.Audio;
import br.com.alura.desafio.streamingmusica.interfaces.Texto;
public class Musicas extends Audio implements Texto {
//Atributos.
String album;
String artista;
String genero;
//Getters e Setters.
public String getAlbum() {
return album;
}
public void setAlbum(String album) {
this.album = album;
}
public String getArtista() {
return artista;
}
public void setArtista(String artista) {
this.artista = artista;
}
public String getGenero() {
return genero;
}
public void setGenero(String genero) {
this.genero = genero;
}
//Métodos.
@Override
public void exibeDescricao() {
String descricaoMusicas = """
Título: %s Artista: %s
Álbum: %s Duração: %.2f
Gênero: %s
""".formatted(getTitulo(), artista, album, getDuracao(), genero);
System.out.println(descricaoMusicas);
}
}
Código da Subclasse 2:
package br.com.alura.desafio.streamingmusica.modelos;
import br.com.alura.desafio.streamingmusica.Audio;
import br.com.alura.desafio.streamingmusica.interfaces.Texto;
public class Podcasts extends Audio implements Texto {
//Atributos.
String host;
int episodio;
//Getters e Setters.
public void setHost(String host) {
this.host = host;
}
public void setEpisodio(int episodio) {
this.episodio = episodio;
}
//Métodos.
@Override
public void exibeDescricao() {
String descricaoPodcast = """
~ Hipsters Ponto Tech
Episódio #%d
%s
Host: %s
Duração: %.2f
""".formatted(episodio, getTitulo(), host, getDuracao());
System.out.println(descricaoPodcast);
}
public void curte() {
System.out.println("Você curtiu este podcast!");
}
@Override
public void reproduz() {
System.out.println("Reproduzindo " + "\"" + getTitulo() + "\"" + " ▶");
}
}
Código da Interface:
package br.com.alura.desafio.streamingmusica.interfaces;
public interface Texto {
void exibeDescricao();
}
Tentei fazer sozinho e ver os vídeos de sugestão após a conclusão, não quis implementar o "for" para "classifica" e "reprodução" e não consegui pensar numa maneira de apresentar os dados sem setar um valor absoluto. Apliquei os conceitos que aprendi sobre herança, polimorfismo e interface, queria saber se mais para frente em outros cursos vai ser abordado esses temas novamente senão poderia me sugerir algum conteúdo para que eu possa entender mais?