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