kerho
Class Kerho

java.lang.Object
  extended by kerho.Kerho
All Implemented Interfaces:
Iterable<Jasen>

public class Kerho
extends Object
implements Iterable<Jasen>

Kerho-luokka, joka huolehtii jäsenistöstä. Pääosin kaikki metodit ovat vain "välittäjämetodeja" jäsenistöön.

Version:
1.0, 09.02.2003, 1.1, 23.02.2003, 1.2, 07.01.2008 / testit
Author:
Vesa Lappalainen

Constructor Summary
Kerho()
           
 
Method Summary
 List<Harrastus> annaHarrastukset(Jasen jasen)
          Haetaan kaikki jäsen harrastukset
 Jasen annaJasen(int i)
          Deprecated. ei ole hyvä käyttää, käytä iteraattoria mieluummin
 Jasen annaJasenId(int id)
          Etsii jäsenen id:n perusteella
 Collection<Jasen> etsi(String hakuehto, int k)
          Palauttaa "taulukossa" hakuehtoon vastaavien jäsenten viitteet
 String getBakNimi()
          Palauttaa varkopion nimen
 int getJasenia()
          Palautaa kerhon jäsenmäärän
 String getNimi()
          Palauttaa kerhon nimen
 String getTiedostonNimi()
          Palauttaa tiedoston nimen
 Iterator<Harrastus> harrastusIterator()
          Kaikkien harrastusten iteraattori
 Iterator<Harrastus> harrastusIterator(int jid)
          Tietyn jäsenen iteraattori
 Iterator<Jasen> iterator()
          Kaikien jäsenten iteraattori
 Iterator<Jasen> jasenIterator()
          Kaikien jäsenten iteraattori
 void korvaaTaiLisaa(Jasen jasen)
          Korvaa jäsenen tietorakenteessa.
 void lisaa(Harrastus har)
          Listään uusi harrastus kerhoon
 void lisaa(Jasen jasen)
          Lisää kerhoon uuden jäsenen
 void lueTiedostosta(String nimi)
          Lukee kerhon tiedot tiedostosta
static void main(String[] args)
          Testiohjelma kerhosta
 int poista(int id)
          Poistaa jäsenistöstä ja harrasteista ne joilla on nro.
 void poistaHarrastus(Harrastus harrastus)
          Poistaa tämän harrastuksen
 void setHarrastusMuutos()
          Laitetaan harrastukset muuttuneeksi, niin pakotetaan tallentamaan.
 void talleta()
          Tallettaa kerhon tiedot tiedostoon.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Kerho

public Kerho()
Method Detail

getNimi

public String getNimi()
Palauttaa kerhon nimen

Returns:
kerhon nimi

getJasenia

public int getJasenia()
Palautaa kerhon jäsenmäärän

Returns:
jäsenmäärä

poista

public int poista(int id)
Poistaa jäsenistöstä ja harrasteista ne joilla on nro. Kesken.

Parameters:
id - viitenumero, jonka mukaan poistetaan
Returns:
montako jäsentä poistettiin

poistaHarrastus

public void poistaHarrastus(Harrastus harrastus)
Poistaa tämän harrastuksen

Parameters:
harrastus - poistettava harrastus

getTiedostonNimi

public String getTiedostonNimi()
Palauttaa tiedoston nimen

Returns:
tiedoston nimi

getBakNimi

public String getBakNimi()
Palauttaa varkopion nimen

Returns:
varakopion nimi

lisaa

public void lisaa(Jasen jasen)
           throws SailoException
Lisää kerhoon uuden jäsenen

Parameters:
jasen - lisättävä jäsen
Throws:
SailoException - jos lisääminen ei onnistu
Example:
 #THROWS SailoException
 #PACKAGEIMPORT
 #import java.util.*;
 
 Kerho kerho = new Kerho();
 Jasen aku1 = new Jasen(), aku2 = new Jasen();
 kerho.getJasenia() === 0;
 kerho.lisaa(aku1); kerho.getJasenia() === 1;
 kerho.lisaa(aku2); kerho.getJasenia() === 2;
 kerho.lisaa(aku1); kerho.getJasenia() === 3;
 
 Iterator  i=kerho.iterator();
 i.next() == aku1  === true;
 i.next() == aku2  === true;
 i.next() == aku1  === true;
 i.next();  #THROWS NoSuchElementException

 

korvaaTaiLisaa

public void korvaaTaiLisaa(Jasen jasen)
                    throws SailoException
Korvaa jäsenen tietorakenteessa. Ottaa jäsenen omistukseensa. Etsitään samalla tunnusnumerolla oleva jäsen. Jos ei löydy, niin lisätään uutena jäsenenä.

Parameters:
jasen - lisätäävän jäsenen viite. Huom tietorakenne muuttuu omistajaksi
Throws:
SailoException - jos tietorakennen on jo täynnä

lisaa

public void lisaa(Harrastus har)
Listään uusi harrastus kerhoon

Parameters:
har - lisättävä harrastus

iterator

public Iterator<Jasen> iterator()
Kaikien jäsenten iteraattori

Specified by:
iterator in interface Iterable<Jasen>
Returns:
jäseniteraattori

jasenIterator

public Iterator<Jasen> jasenIterator()
Kaikien jäsenten iteraattori

Returns:
jäseniteraattori

harrastusIterator

public Iterator<Harrastus> harrastusIterator()
Kaikkien harrastusten iteraattori

Returns:
harrastusiteraattori

harrastusIterator

public Iterator<Harrastus> harrastusIterator(int jid)
Tietyn jäsenen iteraattori

Parameters:
jid - jäsenen viitenumero
Returns:
harrastusiteraattori yhdelle jäsenelle

annaJasen

@Deprecated
public Jasen annaJasen(int i)
                throws IndexOutOfBoundsException
Deprecated. ei ole hyvä käyttää, käytä iteraattoria mieluummin

Palauttaa i:n jäsenen

Parameters:
i - monesko jäsen palautetaan
Returns:
viite i:teen jäseneen
Throws:
IndexOutOfBoundsException - jos i väärin

lueTiedostosta

public void lueTiedostosta(String nimi)
                    throws SailoException
Lukee kerhon tiedot tiedostosta

Parameters:
nimi - jota käyteään lukemisessa
Throws:
SailoException - jos lukeminen epäonnistuu
Example:
 #THROWS SailoException 
 #import java.io.File;
 
  Kerho kerho = new Kerho();
  
  Jasen aku1 = new Jasen(); aku1.vastaaAkuAnkka(); aku1.rekisteroi();
  Jasen aku2 = new Jasen(); aku2.vastaaAkuAnkka(); aku2.rekisteroi();
  Harrastus pitsi21 = new Harrastus(); pitsi21.vastaaPitsinNyplays(aku2.getTunnusnro());
  Harrastus pitsi11 = new Harrastus(); pitsi11.vastaaPitsinNyplays(aku1.getTunnusnro());
  Harrastus pitsi22 = new Harrastus(); pitsi22.vastaaPitsinNyplays(aku2.getTunnusnro()); 
  Harrastus pitsi12 = new Harrastus(); pitsi12.vastaaPitsinNyplays(aku1.getTunnusnro()); 
  Harrastus pitsi23 = new Harrastus(); pitsi23.vastaaPitsinNyplays(aku2.getTunnusnro());
   
  String tiedNimi = "testikelmit";
  File ftied  = new File(tiedNimi+".dat");
  File fhtied = new File(tiedNimi+".har");
  ftied.delete();
  fhtied.delete();
  kerho.lueTiedostosta(tiedNimi); #THROWS SailoException
  kerho.lisaa(aku1);
  kerho.lisaa(aku2);
  kerho.lisaa(pitsi21);
  kerho.lisaa(pitsi11);
  kerho.lisaa(pitsi22);
  kerho.lisaa(pitsi12);
  kerho.lisaa(pitsi23);
  kerho.talleta();
  kerho = new Kerho();
  kerho.lueTiedostosta(tiedNimi);
  Iterator i = kerho.iterator();
  i.next().toString() === aku1.toString();
  i.next().toString() === aku2.toString();
  i.hasNext() === false;
  Iterator ih = kerho.harrastusIterator();
  ih.next().toString() === pitsi21.toString();
  ih.next().toString() === pitsi11.toString();
  ih.next().toString() === pitsi22.toString();
  ih.next().toString() === pitsi12.toString();
  ih.next().toString() === pitsi23.toString();
  ih.hasNext() === false;
  kerho.lisaa(aku2);
  kerho.lisaa(pitsi23);
  kerho.talleta();
  ftied.delete()  === true;
  fhtied.delete() === true;
  File fbak = new File(tiedNimi+".bak");
  File fhbak = new File(tiedNimi+".hbak");
  fbak.delete() === true;
  fhbak.delete() === true;
 

talleta

public void talleta()
             throws SailoException
Tallettaa kerhon tiedot tiedostoon. Vaikka jäsenten tallettamien epäonistuisi, niin yritetään silti tallettaa harrastuksia ennen poikkeuksen heittämistä.

Throws:
SailoException - jos tallettamisessa ongelmia

etsi

public Collection<Jasen> etsi(String hakuehto,
                              int k)
Palauttaa "taulukossa" hakuehtoon vastaavien jäsenten viitteet

Parameters:
hakuehto - hakuehto
k - etsittävän kentän indeksi
Returns:
tietorakenteen löytyneistä jäsenistä

annaJasenId

public Jasen annaJasenId(int id)
Etsii jäsenen id:n perusteella

Parameters:
id - tunnusnumero, jonka mukaan etsitään
Returns:
jäsen jolla etsittävä id tai null

annaHarrastukset

public List<Harrastus> annaHarrastukset(Jasen jasen)
Haetaan kaikki jäsen harrastukset

Parameters:
jasen - jäsen jolle harrastuksia haetaan
Returns:
tietorakenne jossa viiteet löydetteyihin harrastuksiin

setHarrastusMuutos

public void setHarrastusMuutos()
Laitetaan harrastukset muuttuneeksi, niin pakotetaan tallentamaan.


main

public static void main(String[] args)
Testiohjelma kerhosta

Parameters:
args - ei käytössä