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(); }