1   /**
2    * Luokan laajentaminen perimällä
3    * @author  Vesa Lappalainen
4    * @version 1.0, 01.02.2003
5    */
6   public class AikaSek8 extends Aika5 {
7   
8     private int s = 0;
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     * @param s asetettavat sekunnit
15     */
16    public void aseta(int h,int m, int s) {
17      this.s = s; super.aseta(h,m); lisaa(0,0);
18    }
19  
20    public AikaSek8() { }
21  
22    /**
23     * Alustaa ajan
24     * @param h tunnit
25     * @param m minuutit
26     * @param s sekunnit
27     */
28    public AikaSek8(int h,int m, int s) { // Muodostaja
29      aseta(h,m,s);
30    }
31  
32    public AikaSek8(int h,int m) { aseta(h,m,0); }
33    public AikaSek8(int h)       { aseta(h,0,0); }
34  
35    /**
36     * Tulostaa ajan muodossa 15:05
37     * @param lf tulostetaanko rivinvaihto vai ei
38     */
39    public void tulosta(boolean lf) {
40      super.tulosta(false);
41      System.out.print(":" + (s<10?"0":"")+s);
42      if ( lf ) System.out.println();
43    }
44  
45    /**
46     * Lisää aikaan valitun minuuttimäärän
47     * @param lisa_min lisättävä minuuttimäärä
48     * @param lisa_sek lisättävä sekunttimäärä
49     */
50    public void lisaa(int lisa_min,int lisa_sek)  {
51      s += lisa_sek;
52      super.lisaa(lisa_min+s/60);
53      s %= 60;
54    }
55  
56    public static void main(String[] args) {
57      Aika5 a1 = new Aika5();
58      Aika5 a2 = new Aika5(13);
59      Aika5 a3 = new Aika5(14,175);
60  
61      a1.tulosta();  a2.tulosta();  a3.tulosta();
62      a1.aseta(12,15); a2.aseta(16,-15);
63      a1.tulosta(); a2.tulosta();
64  
65      AikaSek8 a4 = new AikaSek8(14,55,45); a4.tulosta();
66      a4.lisaa(3,30); a4.tulosta();
67      AikaSek8 a5 = new AikaSek8();         a5.tulosta();
68      AikaSek8 a6 = new AikaSek8(12);       a6.tulosta();
69      AikaSek8 a7 = new AikaSek8(12,15);    a7.tulosta();
70  
71      Aika5 aika = a1;  aika.tulosta();  // Esimerkki polymorfismista
72      aika = a4;        aika.tulosta();
73      aika.lisaa(20);   aika.tulosta();
74    }
75  
76  }
77  
78