Kolmanda kodutöö kaitsmine paaristööna
- Avage oma kodutöö 3 IDEs, et seda oleks võimalik muuta ja
testida. Täna on testide töötamine teie arvutis oluline.
- Kui teil pole oma töö viimast seisu Bitbucketis (või
GitHubis), siis looge KOHE PRAKTIKUMI ALGUSES versioon (commit)
"Enne kaitsmist" ning laadige see üles. Vajadusel vaadake
esimese praktikumi materjale. Kindlasti peab versioonihalduses
olema testifail LongStackTest.java
- Õppejõud määrab teile paarilise selleks praktikumiks.
- Seletage oma paarilisele meetodi interpret
tööpõhimõtet. Näidake, et kõik Bitbucketis olevad testid lähevad
teie arvutis läbi ning et töö on esitatud tähtajaks ja kõik
"checklisti" punktid on täidetud. Paariline teeb sama ja siis
võrrelge lahendusi ning otsustage, kumb lahendus võtta aluseks
lisatööle.
- Edasi on kaks tööd, mida võite vabalt omavahel jagada: arendamine
ja testimine. Üks paariline ("arendaja") vastutab faili LongStack.java
eest, teine paariline ("testija") faili LongStackTest.java
eest.
- Arendamine: täiendage meetodit interpret nii,
et lisaks andmepinule kasutataks teist pinu – "pinumälu" (return
stack ehk R-pinu). Süsteem peab toetama uusi operatsioone
>R, R> ja R@ (Forth-keele selgitus).
Järgnevates kirjeldustes on pinu põhi vasakul ja pinu tipp
paremal, operatsiooni kirjeldab pinuseisude paar: ( enne
täitmist -- peale täitmist )
- >R (to return stack) lükkab elemendi
andmepinu tipust R-pinu tippu: andmepinus ( a -- ),
R-pinus ( -- a ) (kontrollida, et andmepinus leidub
element).
- R> (from return stack) toob elemendi
R-pinu tipust andmepinu tippu (eemaldades selle R-pinust):
andmepinus ( -- a ), R-pinus ( a -- )
(kontrollida, et R-pinus leidub element).
- R@ (fetch from return stack) kopeerib R-pinu
tipu andmepinu tippu ilma R-pinu muutmata: andmepinus (
-- a ), R-pinus ( a -- a ) (kontrollida, et
R-pinus leidub element).
Avaldise interpreteerimise lõpus peab R-pinu olema tühi.
Näited:
- "15 7 3 >R - R> -" peab andma tulemuseks 5
(arvutus: (15-7) - 3 ).
- "3 >R R@ R> *" peab andma tulemuseks 9
( 3*3 ).
- "2 5 >R 3 R@ * - R> -" peab andma
tulemuseks -18 (arvutus: 2- 3*5 - 5 ).
Realiseerige muudatused meetodis interpret. Kindlasti
proovige eelnevaid näiteid.
- Testimine: kirjutage eelmises punktis toodud näidete
kohta JUnit 4 testid (täiendage faili LongStackTest.java).
- Kasutage testides mittekommutatiivseid tehteid (-
ja /) ja erinevaid operande, et välistada testi
juhuslikku õnnestumist.
- Lisage asjakohased ja selgitavad veateated kõigile assertEquals
kontrollidele.
- Kontrollige alatäituvust: erind peab tekkima olukordades,
kus >R poole pöördumisel on andmepinu tühi või
kus R> või R@ poole pöördumisel on
R-pinu tühi.
- Tehke uus versioon (commit) "Arendaja: Perekonnanimi;
Testija: Perekonnanimi" ning laadige see
Bitbucketisse (või GitHubi). Mõlemal paarilisel peavad mõlemad
failid olema versioonihalduses.
- Näidake koos paarilisega see viimane commit ning testide
ja näidete töötamine õppejõule ette.
- Täitke Moodle's "Kodutöö 3 kaitsmine".
Jaanus Pöial