wiki:harjoitustyo
Last modified 2 years ago Last modified on 2015-12-26 21:56:12

Ohjelmointi 2 / Harjoitustyön teko-ohjeet 2015

Ehdottoman tärkeitä asioita

  • ÄLÄ KOPIOI! Mallia voit katsoa, mutta sitten tee sama itse "keksien".
  • jokainen ohjelmaan kirjoitettu rivi pitää pystyä perustelemaan ja ymmärtämään (tätä ei voi tehdä jos kopioi)
  • vaiheen 4 kuva pitää olla aina esillä ja pääteohjauksissa paperille tulostettuna.
  • vaiheen 4. jälkeen katso aina kuvasta algoritmi mitä olet tekemässä, muista kurssin alukuosa algoritmeistä. Jos ei 100% varmasti tiedä mitä haluaa tehdä, ei sitä voi tehdä Javallakaan.
  • tee työtäsi etuajassa, alla olevat takarajat ovat takarajoja ja niitä noudattamalla on pahasti jäljessä siitä, missä luennoilla ollaan menossa. Aloita oman vaiheesi tekeminen heti kun asiaa on käsiteltu luennoilla. Silloin työmäärä on pienempi ja pysyt kärryillä.

Harjoitustyöohje

Aihe:

Keksitään itse, vaikeustaso: kerhon jäsenrekisteri (kerhon jäsenrekisteri ei kuitenkaan kelpaa aiheeksi, koska se tehdään kurssin malliohjelmana)

Ryhmän koko:

Mielellään pareittain

Ohjausajan varaaminen:

Korpista

Aiheen hyväksyminen (ja myöhemmin ht:n vaiheen):

Harjoitustyön vaihe on hyväksytty, kun vaihe on näytetty henkilökohtaisesti ohjaajalle ja ohjaaja on merkinnyt hyväksynnän Korppiin. Tämä siis tehtävä aina ennen alla mainittuja takarajoja. Siksi kukin vaihe on näytettävä reilusti ennen vaiheen dead lineä, jotta ehtii tehdä myös mahdolliset korjaukset. Kun vaihe on hyväksytty, tehdään siitä versionhallintaan tägi: ks. ohjeet sekä NettiDemoWWW:hen vaihe.

Aikataulun suhteen poikkeuksen tekee Vaihe 1, jolle on annettu enemmän aikaa näyttöön (ks. Demo 1) ohjaajakapasiteetista riippuvista syistä.

Ohjausten paikka:

Vesa Lappalainen Ag C418.3, Muut ohjaajat Ag C417.1 tai pääteohjausluokat pääteohjausten yhteydessä

Aikataulu

Myöhästyminen -0.5 pistettä/päivä

Vaihe:  Aihe                           Valmis ja hyväksytty viimeistään
-------------------------------------------------------------------
1   Ohjelman toiminnan esisuunnitelma demoissa  ma  19.1.2015
    HUOM! Suunnitelman tiedostot vaiheen 2 
    mallin mukaan (eli monta tiedostoa!).
    Vaiheen tulisi olla valmis annettuna 
    päivämääränä, mutta poikkeuksellisesti sen 
    voi hyväksyttää pe 23.1. asti.
-------------------------------------------------------------------
2   Suunnitelma hyväksyttynä ja käyttöliittymä
    WindowBuilderillä tehtynä.                  pe  6.2.2015
-------------------------------------------------------------------
3   "Toimiva" kommentoitu ohjelma
    jossa on kaikki suunnitellut ikkunat
    mutta toiminnoista tulee: "ei toimi".       pe  20.2.2015
-------------------------------------------------------------------
4   Tietorakenteet ja luokat
    suunniteltu ja hyväksytty                   pe  27.2.2015
-------------------------------------------------------------------
5   Tietorakenteet koodattu ja testattu.
    Ohjelma ilman muuta oikeaoppisesti
    jaettuna osiin ja kommentoitu sekä
    testattu.
    Mielellään myös käyttöliittymä
    jossa toimivat tietorakenteet               pe  20.3.2015 (Korpin aikaraja, 
    ja kaikki toiminnot mukana,                                jos tähän tekee miinukset  
    toimintojen alakohtien ei vielä                            nollaantuvat)
    tarvitse toimia.                            pe  27.3.2015
-------------------------------------------------------------------
6   Ainakin toimiva tiedoston luku
    ja tiedostoon talletus.
    Viimeistään nyt tietorakenteet
    toimivat ohjelman käyttöliittymän           pe  10.4.2015
    kanssa.
-------------------------------------------------------------------
7   Toimiva ja dokumentoitu ohjelma.            pe  17.4.2015 (Korpin aikaraja, 
    Ohjelmasta voi puuttua ohjaajan                            jos tähän tekee miinukset nollaantuvat)  
    kanssa sovittuja toimintoja.                pe  24.4.2015
-------------------------------------------------------------------

Mikä harjoitustyö on?

Harjoitustyö ei ole työnäyte!

Harjoitustyö on oppimistilaisuus, jossa opiskelija yrittää omaamansa tiedon pohjalta tehdä jotakin. Tätä yritystä näytetään työn ohjaajalle, joka sitten tutkii mikä työssä on oikein ja mikä väärin, huonosti tai kömpelösti toteutettu. Näin jo opiskelun alkuvaiheessa päästään korjaamaan vääriä tottumuksia, joita jälkeenpäin piintyneinä tapoina voi olla mahdoton muuttaa.

Tämän takia harjoitustyötä pitää käydä esittämässä ohjaajille riittävän usein. Punakynämerkintä ei ole häpeä, vaan osoitus siitä, mitä pitäisi pohtia uudelleen (ja osoitus siitä, että ohjaaja on kiinnostunut opiskelijan työstä!).

Kirjoita heti oikealla tyylillä! Kun kirjoitat harjoitustyötä, käytä heti oikeaoppista sisennystä, muuttujien nimien valintaa yms. On liian aikaa vievää ensin kirjoittaa jonkinlainen sotku ja työn loppuvaiheessa käyttää 10 tuntia tyylin muuttamiseen. Kun oikean tyylin oppii, on sillä aivan yhtä nopea kirjoittaa kuin suttutyylilläkin.

Harjoitustyö on hyvä tehdä ryhmätyönä. Ryhmäläisillä voi olla kaikilla joko sama aihe jota he tekevät yhdessä tai sitten kullakin oma aihe, jota yhdessä voidaan työstää. Esimerkiksi yhden tekemät aliohjelmat kelpaavat muillekin, yksi ymmärtää ja selostaa muille. Kaikki voivat testata toistensa suunnitelmia ristiin.

Erillisissä töissä on se etu, että jonkin ryhmäläisen lopettaessa voidaan työ saattaa yksin loppuun.

Aihe keksitään itse

Opiskelijan kannalta on tietysti motivoivampaa valita itse aiheensa, josta haluaa tehdä ohjelman. Aihe voi olla esimerkiksi opettajilla jokin opetusohjelma, urheilijoilla jokin pistelasku tai päiväkirja, koti-isillä reseptivarasto jne.

Ehdotettua aihetta voidaan sitten ohjaajien kanssa muokata vastaamaan tasoltaan kurssin vaatimuksia.

Tavoitteena on ensin saada itseä miellyttävä aihe, jonka käyttötarpeen, toiminnan ja hyödyllisyyden ymmärtää. Tämän jälkeen aihe kiinnitetään ja ruvetaan harjoittelemaan ohjelman suunnittelua ja ohjelmointia tähän aiheeseen.

Vaatimukset

Harjoitustyössä pitäisi saada harjoiteltua seuraavat asiat:

  • ohjelman suunnittelu
  • käyttöliittymän suunnittelu ja toteutus
  • tietorakenteiden ja olioluokkien suunnittelu
  • ohjelman jako osiin (metodit, ohjelmamodulit)
  • tiedostojen käyttö
  • dynaamiset tietorakenteet (toteutuksen minimi: yksi itse, yksi valmis)
  • tietorakenteen läpikäyminen (haku, etsiminen, lajittelu)

Siis aihe tulisi valita siten, että siinä käsiteltävä aineisto pitäisi ohjelman käyttökertojen välillä tallettaa tiedostoon. Aineiston tarpeen pitäisi olla niin suuri, ettei sille välttämättä osata sanoa ennakolta tarkkaa ylärajaa. Lisäksi aiheen tulee olla sellainen että tarvitaan vähintään 2 tietorakennetta (3-4 on ok, mielellään ei kuitenkaan kymmentä :-). Tyypillisiä tällaisia ohjelmia ovat erilaiset rekisteriohjelmat, esim. mallina oleva kerhon jäsenrekisteri.

Mitä pitää pohtia harjoitustyötä tehdessä

Ohjelman helppokäyttöisyys ja loogisuus

Ohjelman tulisi olla sellainen, että sitä osaa käyttää kuka tahansa. Ammattimaisempaan käyttöön tehty ohjelma voi sisältää vähemmän ohjeita kuin yleiseen käyttöön tehty ohjelma.

Kuka käyttää ohjelmaa

Harjoitustyön tehtävän määritys on varsin epämääräinen. Jotta aiheesta saa järkevän, kannattaa ennen muuta jäsentämistä pohtia sitä, missä vastaavalla ohjelmalla olisi käyttöä.

Esimerkiksi olkoon tehtävänä tehdä ohjelma, jolla voidaan tutkia elokuvateatterin kävijöiden ikä ja sukupuolijakaumaa.

Missä tällaisella ohjelmalla olisi käyttöä? Tietysti elokuvateatterin johto voisi tämän perusteella valita mitä teatterissa kannattaa esittää ja milloin näytöksiä pidetään.

Mistä tiedot saadaan? Tiedot voitaisiin saada suoraan ovelta kävijöiden mennessä teatteriin. Mikro olisi ovella ja jokainen kävijä näppäilisi kysytyt tiedot koneeseen. Tällöin tämän osan ohjelmasta tulisi olla todella idioottivarman. Kun kaikki ovat menneet sisälle, kävisi teatterin johto jollakin salasanalla lopettamassa syötön ja ottaisi tarvitsemansa analyysin sekä tallettaisi tulokset tiedostoon myöhempää käyttöä varten! Tulevaisuudessa käyttäjän näppäily voitaisiin korvata vaikka siten, että ohjelma hakee ohimenevän henkilön kännykästä Bluetooth-yhteydellä tarvittavat tiedot.

Yleisyys ja muutettavuus

Esimerkiksi tehtävänä naisten telinevoimistelun pistelasku. Telineet, niiden nimet ja niiden määrä täytyy olla jälkeenpäin helposti muutettavissa, koska tuskinpa muuten ohjelmassa on isoa ero siinä lasketaanko miesten vai naisten kilpailua.

VAROITUKSEN SANA

Varoituksen sana vuoden 2011 kurssilaisilta: Älä tee liian haastavaa suunnitelmaa. Käytettävä Swing-kirjasto aiheuttaa omat ongelmansa. Tosin nykyään on käytössä hieman enemmän apuja lista- ja taulukko-komponenttien ansiosta.

Ohjaukset

Harjoitustyön ohjausta annetaan mielihyvin kaikille niille, jotka tulevat apua ja/tai ohjausta pyytämään.

Ohjaukseen tulee varata aika (Korpista) avulla vähintään päivää ennen ohjausaikaa. Jos et pääse paikalle varaamanasi ohjausaikana, peru se (jos Korppi ei anna perua aikaa, peru aika lähettämällä ohjaajalle sähköpostia). Vapaina aikoina saa toki käydä katsomassa, josko ohjaukseen pääsisi.

Ohjaukseen tultaessa pitää olla varustautunut seuraavasti:

  • Tarkista ettei työssäsi ole yleisiä vikoja
  • valmiilla kysymyksillä joihin vastausta haetaan
  • aina alkuperäisen suunnitelman ja tietorakenteen kuvan kanssa
  • harjoitustyön kaikkien tehtyjen vaiheiden sekä myös työn alla olevan vaiheen täytyy olla NettiDemoWWW:ssä, ohje on verkossa
  • muistiinpanovälineet (kynä ja paperi) valmiina
  • edellisten ohjauskertojen muistiinpanot mukana
  • ryhmätyössä kaikki ryhmän jäsenet mukana
  • kännykkä suljettuna/äänettömänä!

Kaikki edellä mainittu kaivetaan esiin jo ennen ohjaajan huoneeseen astumista; ei ole ystävällistä kaivaa kassiaan 5 minuuttia ohjausajasta ja näin viedä muiden ohjattavien aikaa

Ohjauksessa:

  1. ei ole mitään pelättävää
  2. esitettävä kritiikki ja korjausehdotukset on tarkoitettu positiiviseksi opetukseksi
  3. kirjoitetaan muistiin oma-aloitteisesti ohjaajan esittämät muutokset

Kirjoitustyyli ja kommentointi

Harjoitustyö kirjoitetaan ja kommentoidaan samaan tyyliin kuin monisteen loppuosassa esitetyt esimerkkiohjelmat. Myös muut selkeät ja perustellut tyylit käyvät. Erityisesti harjoitustyöstä tarkastetaan

  • muuttujien nimien käyttö ja kuvaavuus
  • kommenttien riittävyys
  • mikäli käytetään sellaisenaan kurssin esimerkkiohjelmia, on se ok. Mikäli niitä muutetaan, on kommentoitava mitä on muutettu.
  • sisennysten loogisuus (4 välilyöntiä/sisennys riittää, mutta tärkeintä on yhtenäinen tyyli)
  • vakioiden käyttö, eli ohjelmakoodissa ei saa esiintyä hämäräperäisiä numeerisia tai tekstivakioita, joita joskus mahdollisesti voisi joutua muuttamaan
  • viitteiden oikea käyttö
  • ohjelma kääntyy täysin ilman varoituksia tai virheitä
  • tietojen syöttö toimii
  • ohjelmassa on vähintään joitakin oikeellisuustarkistuksia
  • ohjelmassa on jonkinlainen avustus
  • ohjelmassa on toteutettu itse vähintään yksi tietorakenne taulukkojen avulla
  • ohjelmassa on vähintään yksi tietorakenne tehtynä Javan Vector, ArrayList tms. luokalla
  • ohjelmassa on toteutettu vähintään yksi tietorakenteen läpikäynti ("etsiminen") ja mielellään esim. Javan algoritmien avulla toimiva lajittelu

Harjoitustyön vaiheet

Harjoitustyö tehdään aikataulun mukaan.

Ohjelman koodin kehityksen vaiheet näet: Malliharjoitustyö

1. Esisuunnitelma

Harjoitustyön 1. vaihe on esisuunnitelma. Tässä vaiheessa on tarkoitus tutkia tehtävän määritys tarkemmin ja yrittää määritellä siitä minkälainen ohjelman tulisi olla. Tässä tehdään monisteen/Kerho-ohjelman mallin mukainen (tai parempi) suunnitelma siitä mitä ohjelma tekee.

Erityisesti mietitään kaikki ne kohdat, joita näyttöön tulostuu, mitä käyttäjä vastaa ja miten ohjelman tulisi eri vastauksiin reagoida!

Koska Kerho-ohjelma jaetaan kurssilla mallina, saattaa ohjaaja tehdä suunnitelmaan muutoksia tai lisäyksiä, jottei työ synny pelkästään vaihtamalla malliohjelmassa sanoja Kerho sanoiksi Kauppa ja sanoja Jäsen sanoiksi Tuote.

Käyttöliittymä kannattaa ohjelmointivaiheessa eristää muusta koodista, jotta käyttöliittymän vaihtaminen olisi helpompaa (vrt. kerho -malliohjelmat).

Suunnitelmassa PITÄÄ olla kirjoitettuna ohjelman tarvitsemat tiedostot vaiheen 2 mallin mukaan, eli tiedostoja pitää olla useampia ja ne ovat tavalla tai toisella relaatiossa keskenään (ei kuitenkaan 1-1 -suhteella).

Katso https://www.mit.jyu.fi/demowww/ohj2/ht15/vesal

2. Käyttöohje tai suunnitelma

Viimeistään tässä vaiheessa käyttöliittymät piirretään käyttöliittymän suunnittelutyökalulla.

Ohjaajan ehdottamat muutokset on tehty suunnitelmaan ja suunnitelma on puhtaaksi kirjoitettu ja kaikki ohjelman ikkunat piirretty suunnittelutyökaluilla. Jatkossa ohjelmaa kehitetään tämän suunnitelman pohjalta.

Tietysti mikäli myöhemmin keksii selviä parannuksia, niin näitä voidaan suunnitelmaan tehdä. Parannukset on kuitenkin hyväksytettävä ohjaajalla.

3. Ohjelman käyttöliittymä

Tässä vaiheessa toteutetaan ohjelman käyttöliittymä. Tarkoitus olisi että kaikki 2. vaiheen aikana piirretyt ikkunat tulisivat jostakin näkyville. Eli "asiakas" voisi katsella ja kokeilla "toimivaa" prototyyppiä. Mitään varsinaista datan kanssa toiminnallisuutta ei tarvitse olla, mutta jokaisen käyttöliittymäkohdan tulee reagoida jollakin tavalla. Esimerkiksi avaamalla toinen dialogi (joka tehty 2. vaiheessa) tai jos pitäisi tulla varsinaista toiminnallisuutta, jota ei ole järkevä vielä toteuttaa, tuomalla näyttöön viesti: "Ei toimi vielä!". Tässä voi olla käyttää JOptionPane-luokan valmiita dialogeja.

Vaiheen tarkoitus asiakkaan ilostuttamisen lisäksi on se, että ohjelmoijalle tulee valmis runko, jossa jokainen aliohjelma on valmiiksi paikallaan (mutta tuottaa ehkä tuon "Ei toimi vielä"). Sitten jatkossa aliohjelmia voi lähteä täydentämään toimivaksi yksi kerrallaan.

Eli tapahtumankäsittelijät ovat tyyliin:

KerhoGUI.java:

239         mntmPoistaJasen.addActionListener(new ActionListener() {
240             @Override
241             public void actionPerformed(ActionEvent arg0) {
242                 kerhoswing.poistaJasen();
243             }
244         });

tai Lambda-funktioina esitettynä:

239         mntmPoistaJasen.addActionListener( (e) -> kerhoswing.poistaJasen() );

ja vastaavasti (esimerkki harrastusten poistamiselle):

KerhoSwing.java:

168    public void poistaHarrastus() {
169        int ind = getTableHarrastukset().getSelectedRow();
170        if (ind < 0) return;
171        String har = (String) (getTableHarrastukset().getValueAt(ind, 0));
172        JOptionPane.showMessageDialog(kerhoGUI, "Vielä ei osata poistaa harrastusta " + har);
173    }

tai aluksi jopa:

168    public void poistaHarrastus() {
172        JOptionPane.showMessageDialog(kerhoGUI, "Vielä ei osata poistaa harrastusta " + har);
173    }	

Huomattakoon, että ohjelma pitää olla aina kommentoitu. Erityisesti kukin tarvittava .java-tiedosto pitää varustaa tekijöiden nimillä ja teko- sekä muutospäivämäärillä!

4. Tietorakenteet ja luokat I

Ohjelman jatkokehittelyn kannalta on välttämätöntä kiinnittää ainakin jonkinlainen osa ohjelman tarvitsemista tietorakenteista. Tietorakenteista piirretään aluksi kuvat ja ne hyväksytetään ohjaajalla.

Kuvan voi tehdä halutessaan Visiolla (löytyy mikroluokan Windows 7 -koneilta). Pohjan mallista löytää osoitteesta kerhohar.vsd. Pohja aukeaa myös uudehkoilla LibreOfficen versioilla, mutta ainakin Linuxilla pitää varmistaa, että libvisio-paketti on asennettuna.

Tietorakenteiden ei välttämättä tarvitse olla samanlaiset kuin Kerho-ohjelmassa, mutta useisiin harjoitustöihin tämä rakenne käy lähes sellaisenaan tai pienin muutoksin.

Samalla suunnitellaan ohjelman luokkajako. Luokkajako kirjoitetaan CRC-korteille tai piirretään UML-luokkakaavioksi, jotka näytetään ohjaajalle.

Tämä vaihe kannattaa tehdä kunnolla ja ajatuksella! Aiemmilla kursseilla on havaittu, että jos tämän vaiheen tekee huolimattomasti, seuraava vaihe on yleensä yhtä vaikeuksien kanssa painimista.

Vertaa oikeata ja virheellistä kuvaa

5. Tietorakenteet ja luokat II

Seuraavaksi toteutetaan vaiheessa 4 suunnitellut tietorakenteet ja luokat. Toteutetaan yksittäisiä tiedonpaloja hallinnoivat luokat (vrt. Kerho-ohjelman Jasen ja Harrastus) ja testataan ne.

Tässä vaiheessa tulee jokainen luokka olla omassa Java-tiedostossaan ja kukin luokka sille sopivassa paketissa. Ohjelman täytyy olla hyvin kommentoitu: jokaisen luokan ja metodin tarkoitus ja käyttö tulee olla hyvin dokumentoitu kommenteissa.

Viimeistään tässä vaiheessa (ja myöhemmissäkin) ohjaajat tenttaavat suullisesti tekijän ymmärtävän jokaisen ohjelmaansa kirjoittaman lauseen merkityksen (oma listaus saa olla mukana ja siinähän täytyy olla kommentteja).

Esimerkiksi Jasen-luokan toteutus kirjoitetaan Jasen.java-tiedostoon. Toteutustiedostoon tehdään testit (ComTest tai JUnit) , joilla luokan toimivuus voidaan testata. Seuraavaksi toteutetaan säiliöluokat (vrt. Kerho-ohjelman Jasenet) ja testataan ne. Esimerkissä Jasenet.java.

Tietysti toteutetaan esimerkissä myös vastaavat harrastuksiin liittyvät luokat. Lopuksi vielä luokat yhteen rajapintaa kapseloiva Kerho.java. Ainakin yksi tietorakenne pitää toteuttaa itse taulukkomaisesta rakenteesta lähtien (vrt. Jasenet) ja ainakin yksi käyttäen Javan valmiita luokkia (vrt. Harrastukset).

Käyttöliittymän osalta riittää, että esimerkiksi toiminta vastaa malliohjelman tapaan tulosta-toiminto eli tulostetaan kaikki jäsenet ja heidän harrastuksensa tulostusikkunaan. Lisää Jäsen-nappi lisää yhden "Aku Ankan" ja lisää harrastus yhden harrastuksen aina vaikka viimeksi lisätylle jäsenelle. Tulostuksesta voidaan kokeilla että tämä toimii. Missään tapauksessa ei vielä tarvitse tietoja pystyä syöttämään. Jos rakenteita on enemmän, ei muiden tarvitse vielä toimia käyttöliittymästä (mutta saa toimia).

6. Tiedostonkäsittely ja luokkien välinen yhteistyö

Tässä vaiheessa Kerho-ohjelman tapauksessa ohjelma osaa tulostaa jäsenet kunkin harrastusten kanssa, jäsenen lisäyksessä kysytään ja tallennetaan myös harrastukset.

Vaihe kannattaa aloittaa tekemällä esimerkin vaihe5 mukainen luokkien välinen "yhteistyö" käyttöliittymäluokkaan kaikkien ohjaajan kanssa sovittavien tietorakenteiden osalta. Samoin viimeistään nyt on tietorakenteiden koon osattava kasvaa "rajattomasti".

Seuraavaksi toteutetaan tiedostonkäsittely. Katso luentomonisteen luku 15. Tiedostot.

Ohjelma on paras rakentaa niin, että ohjelman käynnistyessä luetaan mahdollisesti olemassa olevasta tiedostosta tiedot ja ainakin sammutettaessa ne tallennetaan. Lienee helpointa toteuttaa ensin tiedostosta lukeminen ja testata se, ja sitten vasta tiedostoon tallentaminen ja testata se (tai päinvastoin).

Vaiheessa 6 pitää siis olla tiedostojen lukeminen ja kirjoittaminen sekä luokkien välinen "yhteistyö" käyttöliittymäluokan puolella (esim. osaa tulostaa yhden jäsenen kaikki harrastukset).

7. Toimiva ohjelma

Nyt ohjelmaan täydennetään alkuperäisen suunnitelman mukaisia toimintoja pala kerrallaan koko ajan testaten. Näin saadaan lopuksi aikaan valmis ja toimiva ohjelma.

Harjoitustyössä ei välttämättä kaikkien alavalintojen tarvitse toimia, kunhan opiskelija on käynyt kaikki oleelliset ohjelmointiin ja käytettyyn kieleen liittyvät asiat läpi. Ohjaajan kanssa on sovittu edellisen vaiheen hyväksymisen yhteydessä mitkä kohdat ohjelmasta voidaan jättää toteuttamatta.

Toivottavaa olisi, että vähintään jokin yksinkertainen etsiminen (haku) toimisi, samoin lajittelu esimerkiksi Javan valmiita algoritmeja käyttäen.

Pääosin harjoitustyön tulee tasoltaan vastata luentomonisteen malliohjelmana olevaa kerhon jäsenrekisteriä ja sen tulee toimia alkuperäisen suunnitelman mukaisesti!

Tässäkään vaiheessa ei kannata matkia sokeasti kurssin malliohjelman toteutuksia, koska jokainen ohjelmassa oleva rivi pitää pystyä perustelemaan ohjaajalle.

Vaiheessa 7 täytyy siis olla valmiina ainakin seuraavat asiat (sovittava ohjaajan kanssa henkilökohtaisesti)

  • Tiedon lukeminen käyttäjän syötteistä ("lomakkeet") (joillakin oikeellisuustarkistuksilla).
  • Jokin etsiminen tai vastaava (esim. valikoiva listaus/tulostus), jossa koko tietorakenne täytyy käydä valikoiden läpi.
  • Jokin oma (selvästi itse tehty) toiminto malliohjelmaan nähden.
  • Kommentit ainakin jokaisen tiedoston alussa ja kunkin metodin alussa JavaDocin mukaisesti. Laittakaa kunkin tiedoston alkukommentteihin myös tekijöiden email, jos pitää olla yhteydessä.
  • Ohjelman käännöksessä ei saa tulla yhtään virhettä eikä varoitusta Vesan asetuksilla. Tätä ei pidä korjata siten, että viljelee kaikkialle SuppressWarnings-annotaatiota. Vain joihinkin kohtiin voi olla perusteltua laittaa se.
  • Tiedostojen alkukommenteissa on lueteltava ne asiat, jotka kustakin tiedostosta on tekemättä. Sen tiedoston alussa, jossa on pääohjelmakin (mallissa esim. KerhoGUI tai KerhoSwing), on kerrottava, mitkä ohjelman osat eivät toimi.