1   /**
2    * Tarkemmin mietityt muodostajat
3    * @author  Vesa Lappalainen
4    * @version 1.0, 01.02.2003
5    */
6   public class AikaB {
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 AikaB() { 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 AikaB(int h) {
26      aseta(h,0);
27    }
28  
29    /**
30     * Alustaa ajan
31     * @param h tunnit
32     * @param m minuutit
33     */
34    public AikaB(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(AikaB 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  
71    public static void main(String[] args) {
72      AikaB a1 = new AikaB();
73      AikaB a2 = new AikaB(13);
74      AikaB a3 = new AikaB(14,25);
75  
76      a1.tulosta();  a2.tulosta();  a3.tulosta();
77      a1.aseta(12,15); a2.aseta(16,-15);
78      a1.tulosta(); a2.tulosta();
79  
80      lisaa(a1,55); a1.tulosta();
81    }
82  
83  }
84  
85