Classe Orario #1

Dovendo progettare una classe per svolgere elaborazioni con orari

10:15:37
07:06:45
23:59:59

si possono usare tre attributi separati per ore, minuti e secondi

public class Orario
{
   final int SEC_MIN=60;
   final int MIN_ORA=60;
   final int ORE_GIO=24;
   final int SEC_ORA=SEC_MIN*MIN_ORA;
   final int SEC_GIO=SEC_ORA*ORE_GIO;

   private int ore, minuti, secondi;

   public Orario(int Ore, int Minuti, int Secondi)
   {
      ore    =Ore;
      minuti =Minuti;
     secondi=Secondi;
   }
   public int getOre()     { return ore;     }
   public int getMinuti()  { return minuti;  }
   public int getSecondi() { return secondi; }

   public boolean uguale(Orario altroOrario)
   {
      return ore     == altroOrario.getOre()    &&
             minuti  == altroOrario.getMinuti() &&
             secondi == altroOrario.getSecondi();
   }

   public void incrementa(int quantiSecondi)
   {
      secondi += quantiSecondi;
      if(secondi >= SEC_MIN)
      {
         minuti  += (secondi/SEC_MIN);
         secondi %= SEC_MIN;
         if(minuti >= MIN_ORA)
         {
            ore    += (minuti/MIN_ORA);
            minuti %= MIN_ORA;
            if(ore >= ORE_GIO)
              ore %= ORE_GIO;
         }
      }
   }

   public void incMinuti(int quantiMinuti)
   {
      incrementa(quantiMinuti*SEC_MIN);
   }
}

Esercizi

Realizza i metodi

  • incOre(), decrementa(), decMinuti(), decOre()
  • precede(), segue(), confronta()
  • toString()