1   /**
2    * Luokka toteuttamaan sovitun julkisen rajapinnan
3    * @author  Vesa Lappalainen
4    * @version 1.0, 01.02.2003
5    */
6   public class AikaE implements AikaRajapinta {
7   
8     private int h, m;
9   
10    /**
11     * Asettaa uuden ajan ja pitää huolen että aika on aina oikeaa muotoa.
12     * @param h asetettavat tunnit
13     * @param m asetettavat minuutit
14     */
15    public void aseta(int h,int m) {
16      this.h = h; this.m = m; lisaa(0);
17    }
18  
19    public AikaE() { this.h = 0; this.m = 0; }
20  
21    /**
22     * Asettaa uuden ajan ja pitää huolen että aika on aina oikeaa muotoa.
23     * @param h asetettavat tunnit
24     */
25    public AikaE(int h) {
26      aseta(h,0);
27    }
28  
29    /**
30     * Alustaa ajan
31     * @param h tunnit
32     * @param m minuutit
33     */
34    public AikaE(int h,int m) { // Muodostaja
35      aseta(h,m);
36    }
37  
38    /**
39     * Tulostaa ajan muodossa 15:05
40     * @param lf tulostetaanko rivinvaihto vai ei
41     */
42    public void tulosta(boolean lf) {
43      System.out.print("" + h + ":" + (m<10?"0":"")+m);
44      if ( lf ) System.out.println();
45    }
46  
47    /**
48     * Tulostaa ajan muodossa 15:05 sekä aina rivinvaihdon
49     */
50    public void tulosta() {
51      tulosta(true);
52    }
53  
54    /**
55     * Lisää aikaan valitun minuuttimäärän
56     * @param lisa_min lisättävä minuuttimäärä
57     */
58    public void lisaa(int lisa_min)  {
59      int yht_min = h * 60 + m + lisa_min;
60      h = yht_min / 60;
61      m = yht_min % 60;
62    }
63  
64    public static void lisaa(AikaE aika,int lisa_min) {
65      int yht_min = aika.h * 60 + aika.m + lisa_min;
66      aika.h = yht_min / 60;
67      aika.m = yht_min % 60;
68    }
69  
70    public int getH() { return h; }
71    public int getM() { return m; }
72  
73  
74    public static void main(String[] args) {
75      AikaE a1 = new AikaE();
76      AikaE a2 = new AikaE(13);
77      AikaE a3 = new AikaE(14,25);
78  
79      a1.tulosta();  a2.tulosta();  a3.tulosta();
80      a1.aseta(12,15); a2.aseta(16,-15);
81      a1.tulosta(); a2.tulosta();
82  
83      lisaa(a1,55); a1.tulosta();
84  
85      System.out.println("Tunnit = " + a1.getH());
86    }
87  
88  }
89  
90