1.2 - Classe Tempo

            package br.aiec;

/**
 * 
 * Historicamente, até o ano de 1954, o segundo era entendido como 1/86400 de um
 * dia solar médio (ou 1/3600 de uma hora, ou 1/60 de um minuto), sendo assim
 * definido em relação às dimensões e a rotação da Terra.
 * 
 * Essa classe abstrai uma das possíveis formas de representação do tempo
 * (hora:minuto:segundo) de um dia solar médio no calendário gregoriano.
 * 
 * 
 * 
 */
public class Tempo implements ITempo {

    private int hora;
    private int minuto;
    private int segundo;

    public Tempo(int hora, int minuto, int segundo) {
        setHora(hora);
        setMinuto(minuto);
        setSegundo(segundo);
    }

    public Tempo(ITempo tempo) {
        this(tempo.getHora(), tempo.getMinuto(), tempo.getSegundo());
    }

    @Override
    public int getHora() {
        return hora;
    }

    @Override
    public void setHora(int hora) {
        if (hora >= 0 && hora <= 23) {
            this.hora = hora;
        }
    }

    @Override
    public int getMinuto() {
        return minuto;
    }

    @Override
    public void setMinuto(int minuto) {
        if (minuto >= 0 && minuto <= 59) {
            this.minuto = minuto;
        }

    }

    @Override
    public int getSegundo() {
        return segundo;
    }

    @Override
    public void setSegundo(int segundo) {
        if (segundo >= 0 && segundo <= 59) {
            this.segundo = segundo;
        }
    }

    @Override
    public boolean ehUltimoSegundoDoTempo() {
        return this.hora == 23 && this.minuto == 59 && this.segundo == 59;
    }

    @Override
    public void incrementaHora(int hora) {
        int h = this.hora + hora;

        if (h > 23) {
            h = h % 24;
        }

        this.hora = h;
    }

    @Override
    public void incrementaMinuto(int minuto) {

        int m = this.minuto + minuto;

        if (m > 59) {
            incrementaHora(m / 60);
            m =  m % 60;
        }

        this.minuto = m;
    }

    @Override
    public void incrementaSegundo(int segundo) {
        int s = this.segundo + segundo;

        if (s > 59) {
            incrementaMinuto(s / 60);
            s =  s % 60;
        }

        this.segundo = s;
    }

    @Override
    public String toString() {
        return String.format("%02d:%02d:%02d", this.hora, this.minuto,
                this.segundo);
    }
}

        
Copyright © 2016 AIEC.