| Jasenet.java |
1 import java.io.*;
2 import java.util.*;
3 import fi.jyu.mit.ohj2.*;
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 * @version 1.1, 20.03.2003
10 */
11 public class Jasenet {
12 private static final int MAX_JASENIA = 5;
13 private int lkm = 0;
14 private boolean muutettu = false;
15 private String tiedoston_nimi = "";
16 private String bak_nimi = "";
17 private String koko_nimi = "";
18 private Jasen alkiot[] = new Jasen[MAX_JASENIA];
19
20 public Jasenet() { }
21
22 /**
23 * Poikkeusluokka tietorakenteesta aiheutuville poikkeuksille.
24 * @author Vesa Lappalainen
25 * @version 1.0, 22.02.2003
26 */
27 public class SailoException extends Exception {
28 public SailoException(String viesti) { super(viesti); }
29 }
30
31 /**
32 * Lisää uuden jäsenen tietorakenteeseen. Ottaa jäsenen omistukseensa.
33 * @param jasen lisätäävän jäsnen viite. Huom tietorakenne muuttuu omistajaksi
34 * @throws SailoException jos tietorakennen on jo täynnä
35 */
36 public void lisaa(Jasen jasen) throws SailoException {
37 if ( lkm >= alkiot.length ) throw new SailoException("Liikaa alkioita");
38 alkiot[lkm] = jasen;
39 lkm++;
40 }
41
42
43 /**
44 * Palauttaa viitteen i:teen jäseneen.
45 * @param i monennenko jäsenen viite halutaan
46 * @return viite jäseneen, jonka indeksi on i
47 * @throws SailoException jos i ei ole sallitulla alueella
48 */
49 public Jasen anna(int i) throws SailoException {
50 if ( i < 0 || lkm <= i ) throw new SailoException("Laiton indeksi " + i);
51 return alkiot[i];
52 }
53
54
55
56
57
58 /**
59 * Lukee jäsenistön tiedostosta. Kesken.
60 * @param tied tiedoston nimen alkuosa
61 * @throws SailoException jos lukeminen epäonnistuu
62 */
63 public void lue_tiedostosta(String tied) throws SailoException {
64 tiedoston_nimi = tied + ".dat";
65 koko_nimi = "Kelmien kerho";
66 }
67
68 /**
69 * Tallentaa jäsenistön tiedostoon. Kesken.
70 * @throws SailoException jos talletus epäonnistuu
71 */
72 public void talleta() { }
73
74 /**
75 * Palauttaa Kerhon koko nimen
76 * @return Kerhon koko nimi merkkijononna
77 */
78 public String getKoko_nimi() { return koko_nimi; }
79
80 /**
81 * Palauttaa kerhon jäsenten lukumäärän
82 * @return jäsenten lukumäärä
83 */
84 public int getLkm() { return lkm; }
85
86 /**
87 * Palauttaa tiedoston nimen, jota käytetään tallennukseen
88 * @return tallennustiedoston nimi
89 */
90 public String getTiedoston_nimi() { return tiedoston_nimi; }
91
92 /**
93 * Palauttaa varakopiotiedoston nimen
94 * @return varakopiotiedoston nimi
95 */
96 public String getBak_nimi() { return bak_nimi; }
97
98 /**
99 * Tekee nykyisestä tiedostosta varakopiotiedoston. Kesken.
100 * @param bak_tark tarkennin varakopioiedostoille
101 * @return onnistuiko (true) vai ei (false)
102 */
103 public boolean TeeBak(String bak_tark) { bak_nimi = bak_tark; return true; }
104
105 /**
106 * Iteraattorin implementointi.
107 * @author Vesa Lappalainen
108 * @version 1.0, 20.03.2003
109 */
110 public class JasenetIterator implements Iterator {
111 private int kohdalla = -1;
112
113 public boolean hasNext() {
114 // if ( kohdalla + 1 >= lkm ) return false;
115 // return true;
116 return kohdalla + 1 < lkm;
117 }
118
119 public Object next() throws NoSuchElementException {
120 if ( !hasNext() ) throw new NoSuchElementException("Ei oo");
121 kohdalla++;
122 return alkiot[kohdalla];
123 }
124
125 public void remove() throws UnsupportedOperationException {
126 throw new UnsupportedOperationException("Me ei poisteta");
127 }
128 }
129
130 /**
131 * Palauttaa iteraattorin jolla kaikki jäsenet voidaan käydä lävitse
132 * @return iteraattori kaikkien läpikäymiseen
133 */
134 public Iterator iterator() {
135 return new JasenetIterator();
136 }
137
138
139
140 /**
141 * Testiohjelma jäsenistölle
142 * @param args ei käytössä
143 */
144 public static void main(String args[]) {
145 Jasenet jasenet = new Jasenet();
146
147 Jasen aku = new Jasen(), aku2 = new Jasen();
148 aku.rekisteroi(); aku.vastaa_aku_ankka();
149 aku2.rekisteroi(); aku2.vastaa_aku_ankka();
150
151 try {
152 jasenet.lisaa(aku);
153 jasenet.lisaa(aku2);
154
155 System.out.println("============= Jäsenet testi =================");
156
157 // for (int i=0; i<jasenet.getLkm(); i++) {
158 for (Iterator i=jasenet.iterator(); i.hasNext(); ) {
159 // Jasen jasen = jasenet.anna(i);
160 Jasen jasen = (Jasen)i.next();
161 System.out.println("Jäsen nro: " + i);
162 jasen.tulosta(System.out);
163 }
164
165 } catch ( Jasenet.SailoException ex ) {
166 System.out.println(ex.getMessage());
167 }
168 }
169
170 }
171
172
173 | Jasenet.java |