Harjoitteluosajärjestelmän modularisointi
Kuvassa on harjoitteluosajärjestelmä modularisoituna, niin että
uusien tehtävätyyppien lisääminen olisi mahdollisimman helppoa.
Kuvan osien selitykset
OStatusInfo
Tehtävälistan luova sivu.
TaskPresenter
Servletti vastaa harjoittelukäyttöliittymän yleisten osien
tulostamisesta ja oikean tehtäväkohtaisen luokan metodien kutsumisesta
käyttöliittymän tehtäväkohtaisen osan tulostamisen ja vastauksen
analysointiin. Metodit:
- doPost(HttpServletRequest req, HttpServletResponse res)
- Metodia kutsutaan, kun käyttäjä lähettää HTML-lomakkeen.
Parametrit: req::userId - käyttäjän tunniste, req::taskId -
tehtävän tunniste, req::groupId - tehtäväryhmän tunniste.
TaskTypeSpecificClass(es)
Tehtävätyyppikohtainen luokka, joka vastaa tehtäväkäyttöliittymän
tehtäväkohtaisesta osuudesta ja vastauksen analysoinninsta.
(Huom! analysaattori ja käyttöliittymän luova luokka
voivat olla eri luokkia).
Alla kuvattujen metodien lisäksi luokalla pitää olla parametriton
konstruktori. Metodit:
- analyze(Conection conn, Request req, Task task, PrintWriter out);
- Analysoi käyttäjän vastauksen ja tulostaa käyttöliittymään
käyttäjän vastauksen tuloksen (esim. SQL-kyselyn palauttamat
rivit) ja mahdolliset virheilmoitukset ja ohjeet. Metodi
palauttaa rajapinnan TaskAnalyzer mukaisen olion.
- createUI(Task task, PrintWriter out, int answerNbr);
- Luokka luo käyttäjälle tietyn tehtävätyypin mukaisen
käyttöliittymän yhden tehtävän tekemiseen. Mikäli parametri
answerNbr > 0 metodin on osattava alustaa käyttöliittymä vanhan
vastauksen tiedoilla. Metodin luoma käyttöliittymä tulee
FORM-elemntin sisään, mutta metodin ei tarvitse huolehtia, kuin
tehtävätyppin vaatimien syötekenttien ja mahdollisten ohjeiden
tulostamisesta.
Rajapinta TaskAnalyzer
Rajapinta kuvaa analysoidun tehtävän tietoja. Rajapinnan toteuttava
luokka toteuttaa seuraavat metodit:
- int getStatus()
- Metodi palauttaa tiedon tehtävän onnistumisesta
- String getAnswer()
- Metodi palauttaa käytäjän vastauksen sellaisessa muodossa,
että se voidaan tallettaa kantaan. (Tällä hetkellä 1000 merkkiä
pitkä String)