1
resposta

Projeto final do desafio [Reprodutor de Músicas] - Primeira Parte

Segue a resolução do desafio proposto:
Classe Audio:

package br.com.alura.modelos;

public class Audio {
    private String nome;
    private int ano;
    private String descricao;
    private int totalCurtidas;
    private int totalReproducoes;
    private int duracaoSegundos;

    public void setAno(int ano) {
        this.ano = ano;
    }
    public int getAno() {
        return ano;
    }

    public String getNome() {
        return nome;
    }

    public String getDescricao() {
        return descricao;
    }

    public int getTotalCurtidas() {
        return totalCurtidas;
    }

    public int getTotalReproducoes() {
        return totalReproducoes;
    }

    public int getDuracaoSegundos() {
        return duracaoSegundos;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public void setDuracaoSegundos(int duracaoSegundos) {
        this.duracaoSegundos = duracaoSegundos;
    }

    public void curte(){
        totalCurtidas++;
    }

    public void reproduz(){
        totalReproducoes++;
    }
}

Interface Classificavel:

package br.com.alura.interfaces;

public interface Classificavel {
    int getClassificacao();
}

Classe Album:

package br.com.alura.modelos;

import br.com.alura.interfaces.Classificavel;

import java.util.Scanner;

public class Album implements Classificavel {
    private String nome;
    private int ano;
    private Musica[] musicas = new Musica[3];
    private String artista;

    public void setAno(int ano) {
        this.ano = ano;
    }

    public int getAno() {
        return ano;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getMusicas() {
        String faixas = "";
        for (int i = 0; i < musicas.length; i++) {
            if (musicas[i]  != null) {
                faixas.concat(musicas[i].getNome() + " ");
            }
        }
        return faixas;
    }

    public void setMusicas(Musica[] musicas) {
        this.musicas = musicas;
    }

    public String getArtista() {
        return artista;
    }

    public void setArtista(String artista) {
        this.artista = artista;
    }

    @Override
    public int getClassificacao() {
        int totalCurtidas = 0;
        for (int j = 0 ; j < musicas.length; j++ ) {
            totalCurtidas += musicas[j].getTotalReproducoes();
        }
        if (totalCurtidas > 10000){
            return 10;
        } else if  (totalCurtidas > 5000){
            return 5;
        } else if  (totalCurtidas > 1000){
            return 3;
        } else {
            return 1;
        }
    }
}

Classe Musica:

package br.com.alura.modelos;

import br.com.alura.interfaces.Classificavel;
import br.com.alura.interfaces.Classificavel;

public class Musica extends Audio implements Classificavel {
    private String Artista;

    public String getArtista() {
        return Artista;
    }

    public void setArtista(String artista) {
        Artista = artista;
    }

    @Override
    public int getClassificacao() {
        if (this.getTotalReproducoes() > 10000){
            return 10;
        } else if  (this.getTotalReproducoes() > 5000){
            return 5;
        } else if  (this.getTotalReproducoes() > 1000){
            return 3;
        } else {
            return 1;
        }
    }
}

Classe Podcast:

package br.com.alura.modelos;

import br.com.alura.interfaces.Classificavel;

public class Podcast extends Audio implements Classificavel {
    private String host;

    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }
    @Override
    public int getClassificacao() {
        if (this.getTotalCurtidas() > 10000){
            return 10;
        } else if  (this.getTotalCurtidas() > 5000){
            return 5;
        } else if  (this.getTotalCurtidas() > 1000){
            return 3;
        } else {
            return 1;
        }
    }
}
1 resposta

Oi, Raoni! Como vai?
Agradeço por compartilhar seu código com a comunidade Alura.

Com base no que você explicou, chamou atenção a forma como você organizou as classes usando herança e interfaces, principalmente a reutilização da classe Audio e a implementação consistente do método getClassificacao(), o que mostra um bom entendimento de orientação a objetos.

Uma dica interessante para o futuro é usar StringBuilder ao montar textos em loops, evitando criação desnecessária de objetos String. Veja este exemplo:


StringBuilder faixas = new StringBuilder();
for (int i = 0; i < musicas.length; i++) {
    if (musicas[i] != null) {
        faixas.append(musicas[i].getNome()).append(" ");
    }
}
System.out.println(faixas.toString());

Esse código cria um texto com os nomes das músicas de forma mais eficiente.

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