- Estrutura de Dados e POO: O projeto consiste no desenvolvimento de um protótipo de um sistema de gerenciamento de playlists de músicas, utilizando a linguagem Java. O foco é aplicar conceitos de programação orientada a objetos e o uso de estruturas de dados estáticas, como vetores, para organizar as informações.
O objetivo principal é criar um sistema funcional que permita a um usuário cadastrar músicas, organizá-las em playlists e simular sua reprodução. O projeto serve como um estudo prático sobre a modelagem de classes, instanciação de objetos e manipulação de coleções de dados.
Para a organização dos dados, foram utilizadas as seguintes estruturas:
Musica[] musicas: Um vetor (array) na classePlaylistpara armazenar as instâncias de objetosMusica. Esta estrutura foi escolhida por sua simplicidade e por representar uma coleção de tamanho fixo (embora grande) de músicas dentro de uma playlist.Playlist[] playlists: Embora não implementado como um vetor único na classe principal, a lógica de ter múltiplas instâncias dePlaylist(minhaPlaylist,playlistPop) simula uma coleção de playlists gerenciadas peloAppPlaylist.
O sistema foi modelado com as seguintes classes:
-
Musica: Representa uma canção. Seus atributos são:titulo(String): O nome da música.artista(String): O nome do artista ou banda.duracao(double): O tempo da música em minutos.genero(String): O gênero musical.
-
Usuario: Representa a pessoa que utiliza o sistema.nome(String): Nome do usuário.
-
Playlist: Representa uma lista de reprodução.nome(String): O título da playlist.musicas(Musica[]): Vetor que armazena as músicas.proximaPosicao(int): Contador para gerenciar a inserção de novas músicas no vetor.- Métodos principais:
adicionarMusica(Musica musica): Adiciona um objetoMusicaao final da lista.exibirPlaylist(): Mostra todas as músicas contidas na playlist.simularReproducao(): Percorre o vetor de músicas, exibindo uma mensagem de "Tocando agora" para cada uma, com uma pausa para simular a duração.
-
AppPlaylist: A classe principal que contém o métodomainpara executar o programa. Ela orquestra a criação dos objetos e a chamada dos métodos para demonstrar os cenários de uso.
O fluxo de execução no AppPlaylist.java demonstra os seguintes cenários:
-
Cadastrar Música no Sistema:
- São criadas várias instâncias da classe
Musica, cada uma representando uma canção diferente.
Musica musica1 = new Musica("Bohemian Rhapsody", "Queen", 5.55, "Rock");
- São criadas várias instâncias da classe
-
Criar Playlist:
- Uma instância da classe
Playlisté criada para umUsuario.
Playlist minhaPlaylist = new Playlist("Clássicos do Rock");
- Uma instância da classe
-
Adicionar Música na Playlist:
- O método
adicionarMusica()da playlist é chamado, passando um objetoMusicacomo argumento.
minhaPlaylist.adicionarMusica(musica1);
- O método
-
Exibir Playlist:
- O método
exibirPlaylist()é invocado para listar no console todas as músicas daquela playlist.
minhaPlaylist.exibirPlaylist();
- O método
-
Reproduzir Músicas da Playlist:
- O método
simularReproducao()é chamado para "tocar" as músicas em sequência.
minhaPlaylist.simularReproducao();
- O método
- Estrutura de Pastas:
/ # Raiz do projeto |-- src/ # Pasta para o código-fonte Java | |-- AppPlaylist.java | |-- Musica.java | |-- Playlist.java | `-- Usuario.java `-- .gitignore # Arquivo para ignorar arquivos do Git (ex: *.class, /bin)