Tempos; } public int getNota() { return Nota; } public void setNota(int Nota) { this.Nota = Nota; } public double getSleep_timer() { return sleep_timer; } public void setSleep_timer(double sleep_timer) { this.sleep_timer = sleep_timer; } public int getTempoatual() { return tempoatual; } public void setTempoatual(int tempoatual) { this.tempoatual = tempoatual; } //fim dos metodos GET e SET //metodo principal que sera usado para iniciar o metronomo public void run() { //formula usada para transformar as Batidas por Minuto em um numero compativel com o timer setSleep_timer( 1.0 / getBPM() * 60000.0); //iniciando o timer pela classe BEEP, que executara o som a cada intervalo de tempo definido no comando acima timer.schedule(new beep(), 0, (long) getSleep_timer()); } //classe do beep public class beep extends TimerTask { public void run() { //se a variavel tempoatual for 0, some um tempo (comeca no 1o) e termine o metodo if (getTempoatual() == 0) { setTempoatual(getTempoatual() + 1); return; } // se for o primeiro tempo, o beep sera forte, caso o contrario, fraco if (getTempoatual() == 1) { //chama o metodo do beep forte(ver abaixo) BeepForte(); } else { //chama o metodo do beep fraco(ver abaixo) BeepFraco(); } //se o tempo atual atingir a quantidade de tempos de compasso definida pelo usuario, e zerado o compasso if (tempoatual == getTempos()) { // zerando o tempo setTempoatual(0); } // avancar um tempo setTempoatual(getTempoatual() + 1); } } //metodo para terminar a execucao do programa, simplismente cancela o timer declarado no inicio e ligado no metodo run() public void encerrar() { timer.cancel(); } //metodo do beep forte public void BeepForte() { try{ //comandos necessarios para tocar o som presente no arquivo 'beepforte.wav' //obs: acho que este arquivo fica fora do pacote .jar, o que esta dentro nao consegui executar ainda. File diretorio = new File("beepforte.wav"); InputStream in = new FileInputStream(diretorio); AudioStream as = new AudioStream(in); AudioPlayer.player.start(as); } catch(java.io.IOException e) { System.out.println(e); } } public void BeepFraco() { try{ //comandos necessarios para tocar o som presente no arquivo 'beepfraco.wav' //obs: acho que este arquivo fica fora do pacote .jar, o que esta dentro nao consegui executar ainda. File diretorio = new File("beepfraco.wav"); InputStream in = new FileInputStream(diretorio); AudioStream as = new AudioStream(in); AudioPlayer.player.start(as); } catch(java.io.IOException e) { System.out.println(e); } } }Fazendo uma rapida leitura, 'metronomo' e uma classe que tem como atributos: BPM: Velocidade em Batidas por MinutoTempos: Quantidade de tempos no compasso.Nota: Nota equivalente ao tempo. Nao tem utilidade nessa classe, ficando aberto a possiveis implementacoes.Sleep_timer: Valor que indica o intervalo de tempo entre os beeps. E gerado pela conversao do BPM.tempoatual: Indica em qual tempo esta o compasso durante a execucao.O metodo construtor pede BPM, Tempos e Nota. Isso significa que voce so podera criar um objeto da classe 'metronomo' se passar esses atributos. Faz sentido, pois para iniciar o metronomo precisaremos deles.Apos o construtor, estao os metodos GET/SET. E comum na programacao orientada a objetos 'encapsular' os atributos da classe dentro desses metodos. Nesse exemplo esses metodos sao praticamente 'inuteis', porem, poderia usa-los para limitar a velocidade BPM e os Tempos no compasso.Apos os metodos GET/SET, temos