1
resposta

Desafio: hora da prática - Programação orientada a objetos - Classe Musica

3 - Crie uma classe Musica com atributos titulo, artista, anoLancamento, avaliacao e numAvaliacoes, e métodos para exibir a ficha técnica, avaliar a música e calcular a média de avaliações.

Classe Música

public class Musica {

    String titulo;
    String artista;
    int anoLancamento;
    double somaAvaliacao;
    int totalAvaliacao;


    //Metodos
    void fichaTecnica(){ // Use void quando o metodo apenas executa uma ação (ex: salvar, imprimir)
        System.out.println(" Nome do Album: " + titulo);
        System.out.println(" Ano de Lançamento: " + anoLancamento);
        System.out.println(" Nome do Artista: " + artista);
    }
    void avalia(double nota){
        somaAvaliacao += nota;
        totalAvaliacao++;
    }
    double pegaMedia(){ // Use double quando o metodo precisa calcular e retornar (ex: calcular média, salário, preço)
        return somaAvaliacao / totalAvaliacao;
    }

}

Classe Principal

public class Principal {

 public static void main(String[] args) {

  Musica album1 = new Musica(); // objeto
  album1.titulo = "Acústico MTV"; // atributo
  album1.anoLancamento = 2001;
  album1.artista = "Roberto Carlos";


  album1.fichaTecnica();

  album1.avalia(8);
  album1.avalia(9);
  album1.avalia(7);

  System.out.println(" **************************** ");
  System.out.println(" Soma das Avaliações: " + album1.somaAvaliacao);
  System.out.println(" Avaliações Recebidas: " + album1.totalAvaliacao);
  System.out.println(" Média das Avaliações: " + album1.pegaMedia());




 }
}
1 resposta

Olá, Arthur! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso de classes para criar objetos com Java, utilizou muito bem o método void para exibir informações no console e ainda compreendeu a importância do cálculo de média para avaliar corretamente os dados.

Uma dica interessante para o futuro é inicializar os atributos numéricos com valores padrão, evitando possíveis erros de divisão por zero. Assim:

public class Musica {
    String titulo;
    String artista;
    int anoLancamento;
    double somaAvaliacao = 0; // inicializado
    int totalAvaliacao = 0;   // inicializado

    void fichaTecnica() {
        System.out.println("Nome do Álbum: " + titulo);
        System.out.println("Ano de Lançamento: " + anoLancamento);
        System.out.println("Nome do Artista: " + artista);
    }

    void avalia(double nota) {
        somaAvaliacao += nota;
        totalAvaliacao++;
    }

    double pegaMedia() {
        if (totalAvaliacao == 0) {
            return 0; // evita divisão por zero
        }
        return somaAvaliacao / totalAvaliacao;
    }
}

Isso faz com que o programa seja mais robusto e evite falhas caso a música seja consultada antes de receber avaliações.

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!