///////////////////////////////////////////////////////////////////
//
// Nämä esimerkit ovat peräisin Kai Koskimiehen teoksesta Oliokirja, 
// Suomen Atk-kustannus Oy, 2000. Ne on tässä julkaistu Koskimiehen
// luvalla. Joitakin pieniä yksityiskohtia on paikoin muutettu. 
//
//                                              Arto Wikla 4.2.2004
/////////////////////////////////////////////////////////////////////


import java.util.*;

class Ruokakunta implements AvunKohde {

  private int lkm;
  private Collection jäsenet;
  
  public Ruokakunta() {
    jäsenet = new LinkedList();
    lkm = 0;
  }

  public void lisääJäsen(AvunKohde h) {
    if (!jäsenet.contains(h)) {
      jäsenet.add(h);
      lkm = lkm + h.koko();
    }
  }

  public void poistaJäsen(AvunKohde h) {
    if (jäsenet.remove(h))
      lkm = lkm - h.koko();
  }

  public int annaTarve() {
    int tarve = 0;
    Iterator iter = jäsenet.iterator();
    while (iter.hasNext()) {
      AvunKohde h = (AvunKohde)iter.next();
      tarve = tarve + h.annaTarve();
    }
    return tarve;
  }

  public void otaApu(int apu) {
    Iterator iter = jäsenet.iterator();
    double apuPerHenkilö = apu/this.koko();;    // <- tässä on pieni korjaus(?)
    while (iter.hasNext()) {                    //     Koskimiehen koodiin
      AvunKohde h = (AvunKohde)iter.next();     //
      h.otaApu((int)(h.koko()*apuPerHenkilö));; // <-        "

        /* testaukseen: */ 
        System.out.println("Per henkilö " + (int)(h.koko()*apuPerHenkilö));
                            
    }
  }

  public int koko() {
    return lkm;
  }

}
