| Jasenet.java |
1 package kerho;
2
3 /**
4 * Kerhon jäsenistö joka osaa mm. lisätä uuden jäsenen
5 *
6 * @author Vesa Lappalainen
7 * @version 1.0, 22.02.2003
8 * @version 1.1, 19.02.2012
9 */
10 public class Jasenet {
11 private static final int MAX_JASENIA = 5;
12 private int lkm = 0;
13 private String tiedostonNimi = "";
14 private Jasen alkiot[] = new Jasen[MAX_JASENIA];
15
16
17 /**
18 * Oletusmuodostaja
19 */
20 public Jasenet() {
21 // Attribuuttien oma alustus riittää
22 }
23
24
25 /**
26 * Lisää uuden jäsenen tietorakenteeseen. Ottaa jäsenen omistukseensa.
27 * @param jasen lisätäävän jäsenen viite. Huom tietorakenne muuttuu omistajaksi
28 * @throws SailoException jos tietorakenne on jo täynnä
29 * @example
30 * <pre name="test">
31 * #THROWS SailoException
32 * #PACKAGEIMPORT
33 * Jasenet jasenet = new Jasenet();
34 * Jasen aku1 = new Jasen(), aku2 = new Jasen();
35 * jasenet.getLkm() === 0;
36 * jasenet.lisaa(aku1); jasenet.getLkm() === 1;
37 * jasenet.lisaa(aku2); jasenet.getLkm() === 2;
38 * jasenet.lisaa(aku1); jasenet.getLkm() === 3;
39 * jasenet.anna(0) === aku1;
40 * jasenet.anna(1) === aku2;
41 * jasenet.anna(2) === aku1;
42 * jasenet.anna(1) == aku1 === false;
43 * jasenet.anna(1) == aku2 === true;
44 * jasenet.anna(3) === aku1; #THROWS IndexOutOfBoundsException
45 * jasenet.lisaa(aku1); jasenet.getLkm() === 4;
46 * jasenet.lisaa(aku1); jasenet.getLkm() === 5;
47 * jasenet.lisaa(aku1); #THROWS SailoException
48 * </pre>
49 */
50 public void lisaa(Jasen jasen) throws SailoException {
51 if (lkm >= alkiot.length) throw new SailoException("Liikaa alkioita");
52 alkiot[lkm] = jasen;
53 lkm++;
54 }
55
56
57 /**
58 * Palauttaa viitteen i:teen jäseneen.
59 * @param i monennenko jäsenen viite halutaan
60 * @return viite jäseneen, jonka indeksi on i
61 * @throws IndexOutOfBoundsException jos i ei ole sallitulla alueella
62 */
63 public Jasen anna(int i) throws IndexOutOfBoundsException {
64 if (i < 0 || lkm <= i)
65 throw new IndexOutOfBoundsException("Laiton indeksi: " + i);
66 return alkiot[i];
67 }
68
69
70 /**
71 * Lukee jäsenistön tiedostosta. Kesken.
72 * @param tied tiedoston nimen alkuosa
73 * @throws SailoException jos lukeminen epäonnistuu
74 */
75 public void lueTiedostosta(String tied) throws SailoException {
76 tiedostonNimi = tied + ".dat";
77 throw new SailoException("Ei osata vielä lukea tiedostoa " + tiedostonNimi);
78 }
79
80
81 /**
82 * Tallentaa jäsenistön tiedostoon. Kesken.
83 * @throws SailoException jos talletus epäonnistuu
84 */
85 public void talleta() throws SailoException {
86 throw new SailoException("Ei osata vielä tallettaa tiedostoa " + tiedostonNimi);
87 }
88
89
90 /**
91 * Palauttaa kerhon jäsenten lukumäärän
92 * @return jäsenten lukumäärä
93 */
94 public int getLkm() {
95 return lkm;
96 }
97
98
99 /**
100 * Testiohjelma jäsenistölle
101 * @param args ei käytössä
102 */
103 public static void main(String args[]) {
104 Jasenet jasenet = new Jasenet();
105
106 Jasen aku = new Jasen(), aku2 = new Jasen();
107 aku.rekisteroi();
108 aku.vastaaAkuAnkka();
109 aku2.rekisteroi();
110 aku2.vastaaAkuAnkka();
111
112 try {
113 jasenet.lisaa(aku);
114 jasenet.lisaa(aku2);
115
116 System.out.println("============= Jäsenet testi =================");
117
118 for (int i = 0; i < jasenet.getLkm(); i++) {
119 Jasen jasen = jasenet.anna(i);
120 System.out.println("Jäsen nro: " + i);
121 jasen.tulosta(System.out);
122 }
123
124 } catch (SailoException ex) {
125 System.out.println(ex.getMessage());
126 }
127 }
128
129 }
130