1
resposta

Desafio Audio

Segue código do meu desafio concluido.

package br.com.diogo.screenmatch.DesafioAudio;

public abstract class Audio {
    private String titulo;
    private int totalReproducoes;
    private int curtidas;

    public String getTitulo() {
        return titulo;
    }

    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    public void reproduz() {
        totalReproducoes++;
    }

    public void curte() {
        curtidas++;
    }

    public int getCurtidas() {
        return curtidas;
    }

    public int getTotalReproducoes() {
        return totalReproducoes;
    }

    public abstract int getClassificacao();
}
package br.com.diogo.screenmatch.DesafioAudio;

public class Musica extends Audio {
    private String artista;
    private String album;
    private String genero;


    public String getArtista() {
        return artista;
    }

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

    public String getAlbum() {
        return album;
    }

    public void setAlbum(String album) {
        this.album = album;
    }

    public String getGenero() {
        return genero;
    }

    public void setGenero(String genero) {
        this.genero = genero;
    }

    @Override
    public int getClassificacao() {
        if (getCurtidas() > 100) {
            return 5;
        } else {
            return 3;
        }
    }
}
package br.com.diogo.screenmatch.DesafioAudio;

public class Podcast extends Audio {
    private String titulo;
    private String apresentador;
    private String descricao;

    public String getTitulo() {
        return titulo;
    }

    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    public String getApresentador() {
        return apresentador;
    }

    public void setApresentador(String apresentador) {
        this.apresentador = apresentador;
    }

    public String getDescricao() {
        return descricao;
    }

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

    @Override
    public int getClassificacao() {
        if (getTotalReproducoes() >= 1000) {
            return 5;
        } else if (getTotalReproducoes() >= 500) {
            return 4;
        } else {
            return 2;
        }
    }
}
package br.com.diogo.screenmatch.DesafioAudio;

public class MinhasPreferidas {
    public void inclui(Audio audio) {
        if (audio.getClassificacao() >= 4) {
            System.out.println(audio.getTitulo() + " Está entre os preferidos do momento!");
        } else {
            System.out.println(audio.getTitulo() + " Pode melhorar :(");
        }
    }
}
package br.com.diogo.screenmatch.DesafioAudio;

public class Main {
    public static void main(String[] args) {
        Musica musica = new Musica();
        musica.setTitulo("Drown");
        musica.setArtista("Bring Me The Horizon");
        musica.setAlbum("That's the Spirit");
        musica.setGenero("Rock");

        for (int i = 0; i < 150; i++){
            musica.curte();
        }

        Podcast podcast = new Podcast();
        podcast.setTitulo("Podpah");
        podcast.setApresentador("Igão e Mitico");
        podcast.setDescricao("Assuntos variados");

        for (int i = 0; i < 800; i++){
            podcast.reproduz();
        }

        MinhasPreferidas minhasPreferidas = new MinhasPreferidas();
        minhasPreferidas.inclui(musica);
        minhasPreferidas.inclui(podcast);


    }
}

Gostei bastante de desenvolver pude consolidar mais os conceitos de Herança, Abstração, Polimorfismo e Encapsulamento

1 resposta

Olá, Diogo! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso de herança para estruturar diferentes tipos de áudio com Java, utilizou muito bem o polimorfismo para personalizar o comportamento de cada classe e ainda compreendeu a importância da abstração para organizar o código de forma clara e reutilizável.

Uma dica interessante para o futuro é sobrescrever o método toString() nas classes, para facilitar a exibição das informações dos objetos. Assim:

@Override
public String toString() {
    return "Título: " + getTitulo() + 
           ", Artista: " + artista + 
           ", Álbum: " + album + 
           ", Gênero: " + genero;
}

Isso faz com que, ao imprimir o objeto, você já veja seus principais atributos de forma organizada.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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