1
resposta

[Projeto] JavaBeat - Implementando playlist

Olá Rede !

Resolvi compartilhar a atualização de um projeto meu anterior criado após o último desafio do curso [Java: aplicando a Orientação a Objetos].
Nele resolvi implementar playlist personalizadas agora que aprendi o uso do Arraylist neste curso e ter visto a documentação sobre.

  • Primeiramente fiz uma pequena alteração na SuperClasse:
package br.com.alura.javabeat.domain;

public class Audio {
    // Restante do código omitido
    public String getType() {
        return "Audio";
    }
}
E então as mudanças nas subclasses Music e Podcast:
  • Music
package br.com.alura.javabeat.domain;

public class Music extends Audio implements Classification {
    // Restante do código omitido
    @Override
    public String getType() {
        return "Música";
    }
}
  • Podcast
package br.com.alura.javabeat.domain;

public class Podcast extends Audio implements Classification {
    // Restante do código omitido
    @Override
    public String getType() {
        return "Podcast";
    }
}
Agora a implementação da classe Playlist
  • Playlist
package br.com.alura.javabeat.domain;

import java.util.ArrayList;
import java.util.List;

public class Playlist {
    private final String name;
    // Lista que vai guardar os objetos do tipo Audio
    private final List<Audio> audioList;

    // Ao criar a Playlist, ela inicia uma lista vazia
    public Playlist(String name) {
        this.name = name;
        this.audioList = new ArrayList<>();
    }

    public void addAudio(Audio audio) {
        this.audioList.add(audio);
        System.out.println("--- Adicionando Áudio ---");
        System.out.println(audio.getTitle() + " foi adicionado à playlist " + this.name);
        System.out.println();
    }

    public void showPlaylist() {
        System.out.println("--- Playlist: " + getName() + " ---");
        if (audioList.isEmpty()) {
            System.out.println("Essa playlist está vazia");
        } else {
            for (Audio audio : audioList) {
                System.out.println("[" + audio.getType() + "]" + " - " + audio.getTitle());
            }
        }
        System.out.println("=".repeat(30));
    }

    public String getName() {
        return name;
    }
}
Execução do código:
package br.com.alura.javabeat.app;

import br.com.alura.javabeat.domain.Music;
import br.com.alura.javabeat.domain.Playlist;
import br.com.alura.javabeat.domain.Podcast;

public class Principal {
    public static void main(String[] args) {
        // Restante do código omitido
        Playlist playlist = new Playlist("Favoritas");
        playlist.addAudio(anita);
        playlist.addAudio(alura);

        // Testes
        playlist.showPlaylist();
    }
}
  • Visão no console:
--- Adicionando Áudio ---
Show das Poderosas foi adicionado à playlist Favoritas

--- Adicionando Áudio ---
Aluracast foi adicionado à playlist Favoritas

--- Playlist: Favoritas ---
[Música] - Show das Poderosas
[Podcast] - Aluracast
==============================

Fico aberto a sugestões de melhorias e feedback de vocês.
Bons estudos!
Link do projeto: https://github.com/D4nN3t0/JavaBeat

1 resposta

Oii Daniel, tudo bem?

Obrigada por compartilhar o projeto aqui no fórum! A implementação ficou bem estruturada. Um ponto que merece destaque: usar List<Audio> como tipo da referência (em vez de ArrayList<Audio>) é uma boa prática em Java, justamente porque deixa o código mais flexível para trocar a implementação no futuro se precisar.

O uso de polimorfismo via getType() para diferenciar Música de Podcast na exibição da playlist ficou limpo e coerente com o que o curso propõe. A verificação de lista vazia no showPlaylist() também é um cuidado que faz diferença na experiência de uso.

Uma sugestão pensando em próximos passos: considere adicionar um método para remover áudio da playlist, usando audioList.remove(audio). Vai ser um exercício natural para explorar mais da API do ArrayList.

Conte com a Alura para evoluir seus estudos. Em caso de dúvidas, fico à disposição.

Bons estudos!

Sucesso

Imagem da comunidade