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