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