Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Faça como eu fiz: criando mais classes

Para esta tarefa, o primeiro passo foi modelar todas as classes já existentes, analisando sua estrutura e relações, a fim de compreender como novas classes poderiam ser integradas de forma consistente ao sistema.

Em seguida, criei a classe ReprodutorMusical, responsável por representar o momento em que o usuário seleciona uma música e inicia sua reprodução dentro do sistema.

Posteriormente, implementei a classe GeneroMusical, com o objetivo de classificar as músicas de maneira mais específica, permitindo organizá-las de acordo com seus respectivos gêneros musicais.

Por fim, desenvolvi a classe representativa do usuário do sistema. No entanto, durante esse processo, identifiquei a necessidade de um mecanismo de autenticação que permitisse ao usuário acessar o sistema de forma controlada. Assim, projetei também a classe Login, responsável por receber as credenciais do usuário e validá-las com base em uma lista de usuários previamente cadastrados no sistema.

É um sistema bem simples feito apenas para testar a realização de algumas ligações entre classes.
Deixei o sistema salvo no github: https://github.com/diegotassodev/SoundON-OO

Segue também a modelagem de classes realizada.

/*
====================================================================================
Musica
+ Nome: string
+ Artista: Banda
+ Duracao: int
+ Disponivel: bool
+ Slogan: string

+ Musica(string nomeMusica, Banda banda): Construtor que recebe: nome e banda.
+ ExibirFichaTecnica(): Exibe todas as informações presentes na classe.
====================================================================================
Banda
- ListaAlbum = List<Album>
+ NomeBanda = string

+ Banda(string nomeBanda): Construtor que recebe: nome da banda.
+ AdicionarAlbum(Album album): Adiciona um album para a lista de albuns da banda.
+ ExibirDiscografia(): Exibe todos os albuns da banda.
====================================================================================
Album
- ListaMúsicas = List<Musica>
+ Nome = string
+ DuracaoTotal = int

+ AdicionarMusica(Musica musica): Adiciona música a lista de músicas do album.
+ ExibirMusica(): Exibe todas as músicas do album.
====================================================================================
ReprodutorMusical
+ MusicaTocada: Musica
- volumeMusica: int {0 - 10}
- pausa: bool
- momentoMusica: int {0 - momentoFinalMusica}
- momentoFinalMusica: int
- Usuario: usuario

+ ReprodutorMusical(Musica musica): Classe construtora que recebe como parâmetros a música tocada + usuario reprodutor e exibe a reprodução.
+ ExibirReproducao(): Exibe a reprodução da música com o nome dela e os segundos tocando.
+ Pausar(): Pausa a reprodução da música
+ Despausar(): Despausa a música
+ Avançar(int quantiaTempo): Avança alguns segundos da música
+ Retroceder(int quantiaTempo): Retrocede alguns segundos da música
+ DiminuirVolume(): Diminui o volume em 1 por vez da música.
+ AumentarVolume(): Aumenta o volume em 1 por vez da música.
+ TerminarMusica(): Termina a execução do programa.
====================================================================================
GeneroMusical
+ Nome: string
+ DescricaoGenero: String
- Lista de Bandas: List<Banda>

+ GeneroMusical(): Recebe o nome e a descrição do gênero.
+ AdicionarBanda(Banda banda): Adiciona Bandas a lista de bandas do gênero.
+ ExibirBandas(): Exibe a lista de bandas do gênero com a descrição do gênero
====================================================================================
Usuario
+ NomeUsuario: string
+ Email: string
+ Senha: string
+ GeneroFavorito: Genero
- listaBandasFavoritas: List<Banda>
- musicasReproduzidas: List<ReproducaoMusical>

+ Usuario(string nome, string email, string senha): Construtora do usuário que recebe nome, email e senha em sua criação.
====================================================================================
Login
- listaUsuarios: List<Usuario>
- usuarioEncontrado: bool

+ CadastrarUsuario(Usuario usuario): Recebe o nome de um usuário específico a cadastra na lista de Logins
+ Logar(Usuario usuario): Valida o login de um usuário caso ele exista no sistema.
*/
1 resposta
solução!

Oi, Diego! Como vai?

Agradeço por compartilhar seu codigo com a comunidade Alura.

Gostei da forma como você pensou na modelagem das classes antes de implementar. Isso mostra uma visão bem estruturada de orientação a objetos, principalmente ao separar responsabilidades entre ReprodutorMusical, GeneroMusical, Usuario e Login. Essa organização ajuda a manter o sistema mais claro e facilita futuras expansões, como adicionar novas funcionalidades ao reprodutor ou ao controle de usuários.

Continue firme nos estudos.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!