/**
 * Istruzione packege che sancisce dove sar reperibile questa classe
*/
package esercitazioni.orologio;
/**
 * come rendere accessibile la classe Counter che abbiamo situato
 * in un packege differente da quello corrente ?
 */

public class Orologio {
    /**
     * dichiarazione di un oggetto di classe Counter con
     * la funzione di mantenere memorizzato il valore delle ore
    */
    private esercitazioni.counter.Counter ora;

    /**
     * dichiarazione di un oggetto di classe Counter con
     * la funzione di mantenere memorizzato il valore dei minuti
    */
    private Counter minuti;

    /**
     * Si sfrutta la caratteristica dei metodi costruttore per compiere
     * la creazione esplicita degli attributi ore e minuti
     */
    public Orologio() {
           //creazione dell'oggetto ora
           ora= new Counter(10);
           //creazione dell'oggetto minuti
           minuti=new Counter();

    }
    /**
     * Dichiarare qui di seguito un costruttore che permetta di inizializzare
     * ad un certo orario l'orologio in fase d inizializzazione
     */
     //?????????????????????????

     /**
     * metodo che consente l'avanzamento dell'ora un minuto alla volta
     */
     public void ticM(){
            minuti.inc();
            if(minuti.getValue()==60){
                /*se i minuti hanno raggiunto il
                valore di 60 azzero i minuti e incremento
                il valore dell'ora
                */
                minuti.reset();
                //incremento l'ora
                ora.inc();
            }
            /*controllo se l'ora  arrivata a 24*/
            if(ora.getValue()==24){
                ora.reset();
            }
     }

     /**
     * Overloading del metodo ticM  che imposta direttamente il valore dei minuti
     */
     public void ticM(int m){
     }

     /**
     * metodo che consente l'avanzamento dell'ora un'ora alla volta
     */
     public void ticH(){
            ora.inc();
            if(ora.getValue()==24){
                ora.reset();
            }
     }

     /**
     * Overloading del metodo ticH che consente di impostare direttamente
     * il valore dell'ora
     */
     public void ticH(int h){
     }

     /**
      * metodo che permette l'azzeramento dei valori dell'orologio
      */
     public void reset(){
            //azzera l'ora
            ora.reset();
            //azzera i minuti
            minuti.reset();
     }

     /**
      * metodo che permette di conoscere il valore delle ore
      */
      public int getOre(){
             return ora.getValue();
      }

      /**
       * metodo che permette di conoscere il valore dei minuti
       */
      public int getMinuti(){
             return minuti.getValue();
      }
}