582334 TDD-ohjelmointimenetelmä ja koodin suunnittelu (5 op), syksy 2009
582334 TDD programming technique and designing code (5 cr), autumn 2009

Kurssiesittely Luennot Harjoitukset

Harjoitus 5: AddressBook #2 (GUI+TDD). Extract Class.

AddressBook-harjoitustyö

Katso ohjeet edellisistä harjoituksista.

Kotitehtävät

max 7 pistettä

  1. Refaktoroi tämän projektin luokkaa net.orfjackal.weenyconsole.CommandExecuter siten, että irrotat sen sisäluokan Possibility omaksi erilliseksi luokakseen ja siirrät siihen kaikki metodit, jotka ovat siellä parhaiten kotonaan. Eli tee Extract Class -refaktorointi. Tulosta muutamia refaktorointisi välivaiheita ja lopputulos paperille, jotta tehtävää olisi helpompi käsitellä laskuharjoitustilaisuudessa.

    1 piste: Kyseinen sisäluokka on erotettu omaksi luokakseen. Kaikki testit menevät läpi.
    2 pistettä: Lisäksi sen jäseniksi on siirretty metodit, jotka ovat siellä parhaiten kotonaan. Kaikki testit menevät läpi.
    3 pistettä: Lisäksi koodi on refaktoroitu mahdollisimman siistiksi. Kaikki testit menevät läpi.

  2. AddressBook #2: Toteuta ohjelmaan graafinen käyttöliittymä käyttäen TDD:tä ja Passive View -suunnittelumallia. Ohjelman pitää olla käyttökelpoinen, niin että sen käyttöliittymän kautta pystyy lisäämään, muokkaamaan ja hakemaan osoitekirjassa olevia henkilöitä.

    Vihjeitä: Etenkin mikäli käytettävä GUI-kirjasto (Swing) ei ole entuudestaan tuttu, voi olla helpointa tehdä GUI ensin, minkä jälkeen on helpompi nähdä, että millaiset rajapinnat sen ja kontrollerin välille kannattaa tehdä. Näkymän test double lienee helpointa kirjoittaa käsin, eikä mock object -kirjaston avulla, koska näkymä ja kontrolleri kommunikoivat keskenään hyvin tiiviisti ja mock objectien konfiguroinneista tulisi valtavia. Javassa pystyy tarkkailemaan tekstikentän muutoksia kirjain kerrallaan JTextField.getDocument().addDocumentListener() avulla. Siitä voi olla hyötyä hakukentän toteuttamisessa. Editoitava taulukko, jossa näkyy osoitekirjan henkilöt, on helpointa toteuttaa JTable-komponentilla.

    1 piste: Passive View'n kontrolleri on osittain valmis. Kaikki testit menevät läpi.
    2 pistettä: Passive View'n kontrolleri on täysin valmis. Kaikki testit menevät läpi.
    3 pistettä: Graafinen käyttöliittymä on osittain valmis. Kaikki testit menevät läpi.
    4 pistettä: Graafinen käyttöliittymä on täysin valmis. Kaikki testit menevät läpi.

Harjoitustilaisuudessa keskustellaan luokkien refaktoroinnista ja tutustutaan seuraavissa harjoituksissa muutettavaan legacy-koodiin.


Viimeksi muokattu 01.12.2010 21:04 Copyright © 2009 Esko Luontola