Antes de mais nada, fiquei bastante perdido no que colocar na Classe Audio, e o que colocar na Interface Controlador, estou meio confuso, outra coisa na superclasse, eu pensei em colocar Private String criador, mas optei por colocar apresentador,cantor,autor, cada uma em uma subclasse referente, nao sei o que seria melhor, definir o criador do audio na classe audio, ou colocar assim nas subclasse.
//Main.java
package dev.gustavocristovam.modulo;
import dev.gustavocristovam.modulo.musicas.*;
import dev.gustavocristovam.modulo.podcast.Podcast;
public class Main {
public static void main(String[] args) {
Musica devinho = new Musica();
AudioBook pequeno = new AudioBook();
Podcast thenews = new Podcast();
devinho.setTitulo("Mexeu Comigo");
devinho.setDuracao(160);
devinho.curtir();
devinho.addTotalReproducoes();
devinho.setCantor("Devinho Novaes");
devinho.setAlbum("No Grale!");
devinho.setGenero("Sofrência");
devinho.exibeFichaTecnica();
System.out.println("\n \n \n");
pequeno.setTitulo("Little Prince");
pequeno.setDuracao(250);
for (int i = 0; i <15; i++) {
pequeno.curtir();
pequeno.addTotalReproducoes();
}
pequeno.addTotalReproducoes();
pequeno.setAutor("Rodrigo Paiva");
pequeno.setIdioma("Inglês");
pequeno.exibeFichaTecnica();
System.out.println("\n \n \n");
thenews.setTitulo("Assassino do Zodiaco");
thenews.setDuracao(156);
thenews.curtir();
thenews.addTotalReproducoes();
thenews.setApresentador("Daniel Tavares");
thenews.setEpisodio(9);
thenews.setSerie("Casos Criminais");
thenews.exibeFichaTecnica();
System.out.println("\n \n \n");
}
}
//Audio.java
package dev.gustavocristovam.modulo;
public class Audio {
private String titulo;
private int duracao; // Ems segundos
private int totalReproducoes;
private int curtidas;
private int classificacao;
protected void exibeFichaAudio() {
System.out.println("Nome: " + getTitulo());
System.out.println("Duracao: " + getDuracao() + "min");
System.out.println("Reproduções: " + getTotalReproducoes());
System.out.println("Curtidas: " + getCurtidas());
}
//get e setters omitidos
public void addTotalReproducoes() {
this.totalReproducoes++;
}
public void curtir() {
this.curtidas = this.curtidas +1;
}
public void descurtir() {
this.curtidas = this.curtidas -1;
}
}
//Podcast.java
package dev.gustavocristovam.modulo.podcast;
import dev.gustavocristovam.modulo.Audio;
import dev.gustavocristovam.modulo.Controlador;
public class Podcast extends Audio implements Controlador {
private String apresentador;
private String convidados;
private int episodio;
private String serie;
@Override
public void exibeFichaTecnica() {
exibeFichaAudio();
System.out.println("Apresentador: "+ getApresentador());
System.out.println("Convidados: "+ getConvidados());
System.out.println("Episódio: "+ getEpisodio());
System.out.println("Série: " + getSerie());
}
//get e setters omitidos
public String getConvidados() {
if (convidados == null) {
return "Não existem Convidados neste Podcast";
}
return convidados;
}
}
//Musica.java
package dev.gustavocristovam.modulo.musicas;
import dev.gustavocristovam.modulo.Audio;
import dev.gustavocristovam.modulo.Controlador;
public class Musica extends Audio implements Controlador {
private String cantor;
private String genero;
private String album;
@Override
public void exibeFichaTecnica() {
exibeFichaAudio();
System.out.println("Cantor: "+ getCantor());
System.out.println("Album: "+ getAlbum());
System.out.println("Genero: "+ getGenero());
}
//get e setters omitidos
}
//AudioBook.java
package dev.gustavocristovam.modulo.musicas;
import dev.gustavocristovam.modulo.Audio;
import dev.gustavocristovam.modulo.Controlador;
public class Musica extends Audio implements Controlador {
private String cantor;
private String genero;
private String album;
@Override
public void exibeFichaTecnica() {
exibeFichaAudio();
System.out.println("Cantor: "+ getCantor());
System.out.println("Album: "+ getAlbum());
System.out.println("Genero: "+ getGenero());
}
//get e setters omitidos
}
//Controlador.java
package dev.gustavocristovam.modulo;
public interface Controlador {
void exibeFichaTecnica();
}