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

[Projeto] Projeto Final - aplicação de músicas

Confesso que fiquei um pouco perdido neste desafio. Queria adicionar algumas coisas além do que a professora Jacqueline mostrou, mas foi difícil.

O que acabei adicionando foram as classes: PlayList e Tocador. E adicionei uma Interface chamada Reproduzivel.

A Interface Reproduzivel é apenas para garantir que seja implementado o método play().

Minha classe PlayList, fiz extender Audio e implentar a interface Reproduzivel, inclui um ArrayList de Audio para receber objetos do tipo Audio e assim receber tanto Músicas quanto Podcast.

Minha classe Tocador, possui o método iniciar que recebe como parâmetro um objeto que implemente Reproduzivel e assim posso executar o método play, que será executado quando receber objetos PlayList, Música ou Podcast.

Não sei nem se expliquei direito rsrsssss.

Vou deixar aqui apenas o código das classes que criei a mais (PlayList, Tocador e a Interface Reproduzivel), o resto esta igual ao código exibido pela professora Jacqueline.

Código da interface Reproduzivel:

package br.com.tocaaudio.modelos;

public interface Reproduzivel {
    public void play();	
}

Código da classe PlayList:

package br.com.tocaaudio.modelos;

import java.util.ArrayList;

public class PlayList extends Audio implements Reproduzivel {
    private ArrayList<Audio> listaAudios = new ArrayList<>();

    public ArrayList<Audio> getListaAudios() {
        return listaAudios;
    }
    
    public void adicionaNaPlayList(Audio audio) {
        listaAudios.add(audio);
    }

    @Override
    public void play() {
        int totalAudios = listaAudios.size();
        
        System.out.println("Reproduzindo a PlayList...");
        for(int i = 0; i < totalAudios; i++) {
            System.out.println("Reproduzindo " + listaAudios.get(i).getTitulo() + " ...");
            listaAudios.get(i).reproduz();
        }
    }
}

Código da classe Tocador:

package br.com.tocaaudio.modelos;

public class Tocador {
    public void iniciar(Reproduzivel reproduzivel) {	
        reproduzivel.play();
    }
}

E o código da classe Principal para fazer os testes:

package br.com.tocaaudio.principal;

import br.com.tocaaudio.modelos.MinhasPreferidas;
import br.com.tocaaudio.modelos.Musica;
import br.com.tocaaudio.modelos.PlayList;
import br.com.tocaaudio.modelos.Podcast;
import br.com.tocaaudio.modelos.Tocador;

public class Principal {

    public static void main(String[] args) {
        
        Musica minhaMusica = new Musica();
        
        minhaMusica.setTitulo("Forever");
        minhaMusica.setCantor("Kiss");
        minhaMusica.setDuracao(8);
        
        minhaMusica.reproduz();
        
        System.out.println();
        System.out.println("Musica " + minhaMusica.getTitulo() + " reproduções: " + minhaMusica.getTotalReproducoes());

        for (int i = 0; i < 1000; i++) {
            minhaMusica.reproduz();
        }

        for (int i = 0; i < 50; i++) {
            minhaMusica.curte();
        }
        
        Podcast podcast = new Podcast();
        podcast.setTitulo("BolhaDev");
        podcast.setApresentador("Marcus Mendes");
        
        for (int i = 0; i < 5000; i++) {
            podcast.reproduz();
        }

        for (int i = 0; i < 1000; i++) {
            podcast.curte();
        }
        
        
        MinhasPreferidas minhasPreferidas = new MinhasPreferidas();
        minhasPreferidas.inclui(podcast);
        minhasPreferidas.inclui(minhaMusica);

        
        PlayList playList = new PlayList();
        playList.adicionaNaPlayList(minhaMusica);
        playList.play();
        System.out.println();
        System.out.println("Musica " + minhaMusica.getTitulo() + " reproduções: " + minhaMusica.getTotalReproducoes());
        
        System.out.println("Reproduzindo direto pelo objeto PlayList: ");
        playList.adicionaNaPlayList(podcast);
        playList.play();
        
        System.out.println("Reproduzindo a PlayList pelo tocador: ");
        Tocador tocador = new Tocador();
        
        tocador.iniciar(playList);
        
    }

}
                                       
2 respostas

Oii, Carlos! Tudo bem?

Obrigada por compartilhar conosco o seu código aqui no fórum! É legal saber que você até foi procurar mais a adicionar nos seus códigos. É importante buscar esse conhecimento além do que nos é dado, pois assim vamos saindo da zona de conforto e aprendendo mais e mais! ^_^

Se alguma dúvida surgir, estamos aqui!

Abraços!

solução!

Obrigado Maria.

Achei que não deveria usar a classe ArrayList, pois não aprendemos neste curso ainda, mais sem ela a minha classe PlayList ficaria muito estranha.

Vamos para o próximo curso da formação Java, aprender mais um pouco.

Abs,