1   /**
2    * TuntiRekisteri pitää kirjaa työntekijöiden tehdyistä työtunneista.
3    * @author Sami Kosonen
4    * @version 1.0, 9.3.2004
5    */
6   public class TuntiRekisteri1 {
7   
8     public class TaulukkoTaysiException extends Exception { }
9   
10    private Henkilo henkilot[];
11  
12    /**
13     * Konstruktori.
14     * @param maxAlkioita - kuinka isoksi henkilot-taulu alustetaan
15     */
16    public TuntiRekisteri1(int maxAlkioita) {
17  
18    }
19  
20    /**
21     * Lisää rekisteriin uuden henkilön.
22     * Jos rekisterissä on jo saman niminen henkilö, lisäystä ei tehdä.
23     * @param henkilo - lisättävä henkilö
24     * @throws TaulukkoTaysiException - jos taulukkoon ei mahdu uutta henkilöä
25     */
26    public void lisaaHenkilo(Henkilo henkilo) throws TaulukkoTaysiException {
27  
28    }
29  
30    /**
31     * Lisää rekisteriin yhdelle henkilölle työtunnit.
32     * @param nimi - kenelle tunnit lisätään
33     * @param tunnit - montako tuntia lisätään
34     */
35    public void lisaaTunnit(String nimi, int tunnit) {
36  
37    }
38  
39    /**
40     * Antaa henkilön työtunnit.
41     * @param nimi - kenenkä työtunnit annetaan
42     * @return työtunnit
43     */
44    public int getTunnit(String nimi) {
45      return 0;
46    }
47  
48    /**
49     * Poistaa henkilön rekisteristä.
50     * Algoritmi:
51     * Etsitään taulukon alkio, joka osoittaa poistettavaan henkilöön.
52     * Siirretään taulukon viimeinen alkio poistettavan alkion paikalle.
53     *
54     * @param nimi - poistettavan henkilön nimi
55     */
56    public void poistaHenkilo(String nimi) {
57  
58    }
59  
60    /**
61     * Etsii henkilön.
62     * @param nimi - etsittävän henkilön nimi
63     * @return Jos henkilö löytyy, palautetaan kyseinen henkilö.
64     *         Jos ei löydy, palautetaan null.
65     */
66    protected Henkilo etsiHenkilo(String nimi) {
67      return null;
68    }
69  
70    /**
71     * Testaa TuntiRekisteri-luokkaa.
72     * @param args komentoriviparametrit
73     */
74    public static void main(String args[]) {
75      TuntiRekisteri1 rekisteri = new TuntiRekisteri1(5);
76  
77      try{
78        rekisteri.lisaaHenkilo(new Henkilo("Marjaana"));
79        rekisteri.lisaaHenkilo(new Henkilo("Liisa"));
80        rekisteri.lisaaHenkilo(new Henkilo("Mikko"));
81  
82        rekisteri.lisaaTunnit("Marjaana", 7);
83        rekisteri.lisaaTunnit("Liisa", 6);
84        rekisteri.lisaaTunnit("Mikko", 9);
85  
86        rekisteri.lisaaTunnit("Marjaana", 5);
87  
88        //Piirrä kuva tästä vaiheesta
89  
90        Henkilo matti = new Henkilo("Matti");
91        rekisteri.lisaaHenkilo(matti);
92        matti = null;
93        rekisteri.lisaaTunnit("Matti", 8);
94  
95        rekisteri.poistaHenkilo("Liisa");
96        matti = new Henkilo("Liisa");
97        rekisteri.lisaaHenkilo(matti);
98  
99        rekisteri.lisaaTunnit("Matti", 8);
100 
101       System.out.println("Matin tunnit: " + rekisteri.getTunnit("Matti"));
102       System.out.println("Liisan tunnit: " + rekisteri.getTunnit("Liisa"));
103 
104       rekisteri.lisaaHenkilo(new Henkilo("Ville"));
105       rekisteri.lisaaHenkilo(new Henkilo("Kalle"));
106       System.out.println("Villen tunnit: " + rekisteri.getTunnit("Ville"));
107 
108     } catch(TaulukkoTaysiException e){
109       System.err.println("Taulukko on täynnä!");
110     }
111   }
112 }
113 
114