Criar Classe Relógio

5 respostas
uallace

Bem, olá a todos. Sou iniciante em java e gostaria de uma ajuda no seguinte programa:

Faça uma classe relógio. Deverá conter os métodos setHora, getHora, showHora e pulso. O relógio apenas andará um segundo quando for executado o método pulso. Faça um programa que o teste.

Eu tentei o seguinte mas não sai do jeito que o exercicio pede.

public class Relogio {
int hora;
int minuto;
int segundo;
String Hora;
public void setHora(int nHora, int nMinuto,int nSegundo){
    hora = nHora;
    minuto = nMinuto;
    segundo = nSegundo;
    Hora = hora+":"+minuto+":"+segundo;
}
public String getHora(){
    return Hora;
}
public String showHora(){
     return Hora;

}
public void getPulso(){
   segundo = segundo+1;
}
}

Obrigado a todos!!!

5 Respostas

Filipe_Chagas

Faltaram algumas coisinhas na sua classe.
De uma maneira MUITO simples (MUITO mesmo) sua classe Relogio poderia ficar assim:

public class Relogio {
    int hora = 0;
    int minuto = 0;
    int segundo = 0;

    public void setHora(int hora, int minuto,int segundo){
        //Aqui pego os valores absolutos, para evitar valores negativos
        hora = java.lang.Math.abs(hora);
        minuto = java.lang.Math.abs(minuto);
        segundo = java.lang.Math.abs(segundo);
        
        if (segundo < 60 && minuto < 60 && hora < 24){
            this.hora = hora;
            this.minuto = minuto;
            this.segundo = segundo;
        }else{
            //Aqui voce deveria lancar uma exception,
            //mas vamos apenas informar um erro via println
            System.out.println("Dados invalidos.");
        }

    }
    public String getHora(){
        return this.hora + ":" + this.minuto + ":" + segundo;
    }
    public void showHora(){
         System.out.println(this.getHora());
    }
    public void pulso(){
        segundo++;
        if (segundo > 59){
            segundo = 0;
            minuto++;
        }
        if (minuto > 59){
            minuto = 0;
            hora++;
        }
        if (hora > 23){
            hora = 0;
        }
    }
}

E a classe pra testa-la:

public class Main{
    public static void main(String [] args){
        Relogio relogio = new Relogio();
        relogio.setHora(23,59,59);
        relogio.showHora();
        relogio.pulso();
        relogio.showHora();
    }
}
uallace

Obrigado!!!Foi de grande ajuda. Agora só me falta resolver o seguinte passo:

Faça um método compara para a classe relógio. Desta forma a.compara(b); irá dizer se os objetos a e b possuem o mesmo estado interno.

Estou tentando fazer, mas qualquer resposta posem aqui.

Valeu.

Filipe_Chagas

Essa eu tenho certeza que você consegue fazer sozinho.
Pesquise sobre a implementação do método equals e depois saberá o que fazer.

uallace

Obrigado pela dica. Falou

uallace

Bem…isso foi o que fiz.

public boolean Compara(Relogio r){
    boolean resp =false;
    if(this.getHora().equals(r.getHora())){
        resp=true;
    }
    return resp;
}

Algo a ser melhorado ou estar bom? valeu

Criado 13 de junho de 2009
Ultima resposta 14 de jun. de 2009
Respostas 5
Participantes 2