/**
 * Trieda CiselnyDisplej reprezentuje jednu cislicu zobrazovanu
 * na displeji ciselnych hodin. Stara sa o zvysovanie svojej
 * hodnoty po kazdom prijati spravy "krok". Po dosiahnuti
 * nastavenej hornej hranice sa opat nastavi na hodnotu 0.
 * 
 * Implementacia sa stara aj o formatovanie hodnoty do tvaru
 * dvojciferneho cisla.
 */
public class CiselnyDisplej
{
    private int aHornaHranica;
    private int aHodnota;
    
    /**
     * Vytvori novy ciselny displej. Hodnotu automaticky
     * nastavi na 0. Horna hranica hodnoty je dana parametrom.
     */
    public CiselnyDisplej(int paHornaHranica)
    {
        aHornaHranica = paHornaHranica;
        aHodnota = 0;
    }
    
    /**
     * Vrati aktualnu hodnotu na ciselnom displeji ako cele
     * cislo.
     */
    public int dajHodnotu()
    {
        return aHodnota;
    }
    
    /**
     * Nastavi hodnotu danu parametrom. Ak je hodnota mensia
     * ako 0, alebo vacsia ako horna hranica, nic sa nespravi.
     */
    public void nastavHodnotu(int paHodnota)
    {
        if ((paHodnota >= 0) && (paHodnota < (aHornaHranica +1))) {
            aHodnota = paHodnota;
        }
    }
    
    /**
     * Vrati aktualnu hodnotu na ciselnom displeji vo
     * formate dvojciferneho celeho cisla. V pripade ze je
     * cislo mensie ako 10 (ma iba jednu cifru), na zaciatok
     * sa vlozi uvodna nula.
     */
    public String dajRetazcovuHodnotu()
    {
        if (aHodnota < 10) {
            return "0" + aHodnota;
        } else {
            return "" + aHodnota;
        }
    }
    
    /**
     * Zvacsi hodnotu na displeji o 1. Ak hodnota dosiahne hornu
     * hranicu, automaticky sa prestavi na 0.
     */
    public void krok()
    {
        aHodnota = (aHodnota + 1) % (aHornaHranica +1);
    }
}
