Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Projeto] Desafio para consolidar o conhecimento de interface e POO.

Oi pessoal deixo aqui minha sugestão de como resolvi meu desafio, e um spoiler de meus gostos musicais e de esporte hue hue Interface

package primeirosPassos.Desafio.Final.Poo;
public interface AcoesDeMidia {
    void curtir(int curtida);
    void reproduzir(boolean pausa);
}

Classe mãe Audio

package primeirosPassos.Desafio.Final.Poo;
public class Audio implements AcoesDeMidia {
    private String titulo;
    private int duracao;
    protected int totalCurtidas = 0;
    protected int totalReproducoes = 0;
    protected int contCurtidas = 0;
    protected int contReproducoes = 0;
    private boolean pausado = true;
    public String getTitulo() {
        return titulo;
    }
    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }
    public int getDuracao() {
        return duracao;
    }
    public void setDuracao(int duracao) {
        this.duracao = duracao;
    }
    @Override
    public void curtir(int curtida) {
        totalCurtidas += curtida;
        contCurtidas++;

    }
    public void ExibirCurtidas() {
        if (contCurtidas > 0) {
            int avaliacaoFinal = totalCurtidas / contCurtidas;
            System.out.println("Total da nota: " + totalCurtidas + ". Avaliado " + contCurtidas + " vezes. Avaliação média: " + avaliacaoFinal);}  else {System.out.println("Ainda sem curtidas registradas");}}
    @Override
    public void reproduzir(boolean pausa) {
        this.pausado = pausa;
        if (pausado) {
            System.out.println("Pausado");
        } else {
            totalReproducoes++;
            System.out.println("Play");
        }
    }


    public void contagemRepro() {
        if (contReproducoes > 0) {
            System.out.println("Play");
        } else {
            System.out.println("Pausado");
        }

        System.out.println("Foi escutado " + totalReproducoes + " " + (totalReproducoes == 1 ? "reprodução" : "reproduções"));
    }

}

Classes filhas Musica e Podcast

package primeirosPassos.Desafio.Final.Poo;

public class Musica extends Audio{
    private String autor;
    private String produtora;
    private String album;
    private String genero;

    public String getAutor() {
        return autor;
    }

    public void setAutor(String autor) {
        this.autor = autor;
    }

    public String getProdutora() {
        return produtora;
    }

    public void setProdutora(String produtora) {
        this.produtora = produtora;
    }

    public String getAlbum() {
        return album;
    }

    public void setAlbum(String album) {
        this.album = album;
    }

    public String getGenero() {
        return genero;
    }

    public void setGenero(String genero) {
        this.genero = genero;
    }
    public void ficha(){
        System.out.println("| Artista: " + getAutor());
        System.out.println("| Música: " + getTitulo());
        System.out.println("| Produtora: " + getProdutora());
        System.out.println("| Album: " + getAlbum());
        System.out.println("| Duração: " + getDuracao());
        System.out.println("| Genero: " + getGenero());
        ExibirCurtidas();
        contagemRepro();
    }
}
package primeirosPassos.Desafio.Final.Poo;

public class Podcast extends Audio {
    private String host;
    protected String descricao;

    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }
    public void ficha(){
        System.out.println("| Titulo: " + getTitulo());
        System.out.println("| Host: " + getHost());
        System.out.println("| Duração: " + getDuracao());
        System.out.println("| Descrição: " + getDescricao());
        ExibirCurtidas();
        contagemRepro();

    }
}
2 respostas

Classe de execução

package primeirosPassos.Desafio.Final.Poo;

public class Principal {
    public static void main(String[] args) {
        Podcast flow = new Podcast();
        flow.setTitulo("A historia do automobilismo");
        flow.setHost("Igor");
        flow.setDuracao(180);
        flow.setDescricao("Vamos falar com Rubens Barrichello, Estágiario da F1 e Rodrigo do Splash And Go");
        flow.curtir(5);
        flow.curtir(5);
        flow.curtir(5);
        flow.reproduzir(false);
        flow.reproduzir(true);
        flow.reproduzir(false);
        flow.ficha();


        Musica dubstep = new Musica();
        dubstep.setAutor("Zomboy");
        dubstep.setTitulo("Immunity");
        dubstep.setProdutora("Never Say Die");
        dubstep.setAlbum("The Outbreak");
        dubstep.setDuracao(5);
        dubstep.setGenero("Dubstep");
        dubstep.curtir(6);
        dubstep.curtir(8);
        dubstep.curtir(8);
        dubstep.reproduzir(true);
        dubstep.reproduzir(true);
        dubstep.reproduzir(true);
        dubstep.reproduzir(true);
        dubstep.reproduzir(false);
        dubstep.reproduzir(false);
        dubstep.reproduzir(false);
        dubstep.reproduzir(false);
        dubstep.reproduzir(false);
        dubstep.ficha();

    }
}

Exemplo de saida

Play
Pausado
Play
| Titulo: A historia do automobilismo
| Host: Igor
| Duração: 180
| Descrição: Vamos falar com Rubens Barrichelo, Estágiario da F1 e Rodrigo do Splash And Go
Total da nota: 15. Avaliado 3 vezes. Avaliação média: 5
Pausado
Foi escutado 2 reproduções
Pausado
Pausado
Pausado
Pausado
Play
Play
Play
Play
Play
| Artista: Zomboy
| Música: Immunity
| Produtora: Never Say Die
| Album: The Outbreak
| Duração: 5
| Genero: Dubstep
Total da nota: 22. Avaliado 3 vezes. Avaliação média: 7
Pausado
Foi escutado 5 reproduções
solução!

Bom dia, Mathues!

Parabéns pelo resultado na resolução do desafio, ficou ótimo!

Também agradeço por compartilhar seu código com os demais estudantes, com certeza vai ajudar nos estudos de todas as pessoas que estão aprendendo este mesmo assunto.

Continue mergulhando em tecnologia e se tiver dúvidas, conte com o fórum.

Abraços e bons estudos!