wiki:harjoitustyo/jasenharrastus
Last modified 10 months ago Last modified on 2017-02-19 10:46:04

Jos tulit tälle sivulle jostakin linkistä, kerro missä oli ko linkki, niin korjataan oikea viite.



























Ohjelmointi 2 / malliharjoitustyö 2014, Jäsenen ja harrastuksen välinen yhteistyö

Tällä sivulla on pohdittu sitä, miten Jäsenen ja Harrastuksen välinen yhteistyö toimii. Koodista leikattujen rivien rivinumerot ovat viitteellisiä ja ne voivat olla erilaisia oikeassa toteutuksessa.

Tämä sivu perustuun vaiheen 7.3 koodeihin.

Vastuut

  • Jasen ei tiedä harrastuksista
  • Harrastus tietää jäsenen tunnusnumeron, mutta ei jäseniä
  • Harrastukset osaa etsiä tietyn jäsenen kaikki harrastukset
  • Kerho osaa pyytää Harrastuksia etsimään tietyn jäsenen harrastukset
  • KerhoSwing pyytää Kerhoa tekemään hommia.

Harrastus

Harrastus.java

14  public class Harrastus implements Cloneable {
15      private int tunnusNro;
16      private int jasenNro;
...
245     /**
246      * Palautetaan mille jäsenelle harrastus kuuluu
247      * @return jäsenen id
248      */
249     public int getJasenNro() {
250         return jasenNro;
251     }

Harrastukset

Harrastukset.java

322    public List<Harrastus> annaHarrastukset(int tunnusnro) {
323        List<Harrastus> loydetyt = new ArrayList<Harrastus>();
324        for (Harrastus har : alkiot)
325            if ( har.getJasenNro() == tunnusnro ) loydetyt.add(har);
326        return loydetyt;
327    }

Kerho

Kerho.java

182     public List<Harrastus> annaHarrastukset(Jasen jasen) {
183         return harrastukset.annaHarrastukset(jasen.getTunnusNro());
184     }

KerhoSwing

KerhoSwing.java

Esimerkiksi Jasenen tulostamista varten haetaan jäsenen harrastukset

577    public void tulosta(PrintStream os, final Jasen jasen) {
578        os.println("----------------------------------------------");
579        jasen.tulosta(os);
580        os.println("----------------------------------------------");
581        List<Harrastus> harrastukset = kerho.annaHarrastukset(jasen); 
582        for (Harrastus har:harrastukset) 
583            har.tulosta(os); 
584    }

Jäsenen tietojen näyttämiseksi täytetään jäsenen tiedot omiin kenttiinsä ja sitten näytetään harrastuksen tiedot taulukkoon:

431    private void laitaJasen() {
432        if (jasenKohdalla == null) return;
433        for (int i = 0, k = jasenKohdalla.ekaKentta(); k < jasenKohdalla.getKenttia(); k++, i++) {
434            editJasenKentta[i].setText(jasenKohdalla.anna(k));
435            editJasenKentta[i].getEdit().setBackground(normaaliVari);
436            editJasenKentta[i].setToolTipText("");
437        }
438        naytaHarrastukset();
439    }

Yhden jäsenen harrastuksen näyttäminen:

306    protected void naytaHarrastukset() {
307        if ( jasenKohdalla == null ) return;
308        tableHarrastukset.clear();
309        tableHarrastukset.getTable().getColumnModel().getColumn(0).setMinWidth(100);
310        
311        List<Harrastus> harrastukset = kerho.annaHarrastukset(jasenKohdalla);
312        for (Harrastus har : harrastukset) {
313            int r = tableHarrastukset.addRow();
314            tableHarrastukset.setObjectAt(har, r);
315            for (int k = har.ekaKentta(); k < har.getKenttia(); k++) {
316                String jono = har.anna(k);
317                tableHarrastukset.setValueAtModel(jono, r, k - har.ekaKentta());
318            }
319        }
320    }

Harrastuksen lisääminen

291    public void uusiHarrastus() {
292        if ( jasenKohdalla == null ) return;
293        tarkistaMuutos(jasenKohdalla.getTunnusNro());
294        Harrastus harrastus = new Harrastus(jasenKohdalla.getTunnusNro());
295        harrastus.rekisteroi();
296        kerho.lisaa(harrastus);
297        naytaHarrastukset();
298        tableHarrastukset.selectCell(tableHarrastukset.getRowCount()-1, 0);
299    }

Tämän voisi viedä vielä pidemmällekin niin, että jäsenten tunnusnumeroista ei tarvitsisi tietää mitään:

291    public void uusiHarrastus() {
292        if ( jasenKohdalla == null ) return;
293        tarkistaMuutos(jasenKohdalla);
294        Harrastus harrastus = kerho.luoJaLisaaUusiHarrastus(jasenKohdalla);
297        naytaHarrastukset();
298        tableHarrastukset.selectCell(tableHarrastukset.getRowCount()-1, 0);
299    }