HW2

247 views
Skip to first unread message

Mart Jõgi

unread,
Mar 17, 2015, 7:17:18 AM3/17/15
to iti...@googlegroups.com
Millal on plaanid teise kodutöö mallid välja panna ("testitav kood" alampunkti jaoks)?

Ago Luberg

unread,
Mar 17, 2015, 11:38:14 AM3/17/15
to iti...@googlegroups.com
Tere

Ma praegu toimetan nendega. Ma tahaks homse jooksul üles panna.
Suures osas jääb struktuur samaks eelmise aastaga. Interface'ide nimed muutuvad (endise "IName" asemele hakkab olema lihtsalt "Name").
Lisan veel, et mall on kohustuslik kõikidele. Sellel aastal pole see lisaülesanne. Aga loodetavasti homme saate juba täpsemalt lugeda.

Ago

Mart Jõgi

unread,
Mar 23, 2015, 6:17:45 AM3/23/15
to iti...@googlegroups.com
getActionsFromArguments()
Kas see peab iga käsu kohta eraldi Action objekti looma? (nt. kui on -sort author -search #party siis kas -sort ja -search peavad olema eraldi?)
kui jah, siis miks nii? miks on filterAction'il erinevate käskude omadused kõik sees kui ta ainult ühte võib hoida
Kui ei, siis miks on tegemist List<Action>'ga, kui tegelikult piisab ühest FilterAction'ist ja ühest QueryAction'ist?
note: Pole mõeldud kriitikana, ma olen lihtsalt natuke segaduses ja ei tea mida sellest meetodist oodatakse

---

executeAction()
Mida ta peab tegema?, kas lihtsalt uuendama parameetreid/filtreid järgmise päringu jaoks? - või kas ta peab tegema antud Actionite põhjal päringu ära ja salvestama oma tulemuse List<? extends Tweet>'i ära?


Ago Luberg

unread,
Mar 24, 2015, 9:22:04 AM3/24/15
to iti...@googlegroups.com
Vabandust, et varem ei vastanud.

getActionsFromArguments()
See peab iga käsu kohta looma eraldi Actioni. Sort ja search lähevad lahku. Mul on veel paar parandust, mis panen täna peale tunde üles.
Ehk siis kui on käivitus argumentidega: Tallinn -sort author -search #party siis peaks tekkima järgmised actionid: QueryAction (otsing Tallinna kohta), SortAction (järjestus autori järgi), SearchAction (otsing #party).
Kui tudeng realiseerib ära lisaosa, milles on interaktiivne käskude käivitamine, siis on eraldi olemas ka PrintAction. Põhiosas seda eraldi vaja pole, kuna alati prinditakse lõpus kõik tulemused välja.

executeAction()
võtab ette ühe actioni, näiteks QueryAction, ja paneb selle käima (ehk siis teeb reaalselt päringu ja salvestab tulemused setTweets() meetodiga). Ma täiendan natuke interface'e selliselt, et iga Action'i juures on ka valikuline execute meetod. Seega, kui see lahendus sobib paremini, et iga Action teab, kuidas ennast käivitada (analoog, et iga kujund teab, kuidas tema pindala arvutatakse), siis võib seda kasutada. Tuleb lihtsalt arvestada, et enamus Action tegevusi nõuab täiendavaid andmeid. Näiteks PrintAction peaks teadma, mis säutsud meil mälus on jne. Teil on võimalus Actionile kaasa anda näiteks viide TwitterApplication implementatsioonile ja sealtkaudu pärida vajalikku infot. Või annate iga Actioniga vajalikud parameetrid kaasa.


Ma selle nädala praktikumides seletan põhjalikumalt iga meetodi mõtet. Teen ka näite, mis jõuab täna õhtul/homme hommikul materjalide git'i. Ja ma kirjutan natuke seletust juurde, et inimesed, kes tunnis ei käi, saaksid ka täiendavat infot. Aga kõige parem on ehk näide, mille ma üles panen.

Üldiselt võib mõelda nii, et iga meetod on antud selleks, et sinna mingi sisu kirjutada (kuigi põhiosa jaoks kõiki pole vaja implementeerida). Üks lihtne tegevus on selle töö raames jagatud väikesteks osadeks. Seda peamiselt selleks, et saaksime teie lahendust põhjalikumalt testida. Aga ma panen üles näited, mida täna tunnis teen, ja siis täiendan ka juhendit vastalt, kus on väike seletus, mis on tehtud.

Ago

Ago Luberg

unread,
Mar 25, 2015, 10:28:42 AM3/25/15
to iti...@googlegroups.com
Ma panin üles uuema versiooni interface'idest (v0.2). Kirjutasin https://courses.cs.ttu.ee/pages/ITI0011:S%C3%A4uts#Mall lehel lahti ka selle, mis sai muudetud. Midagi väga põhjalikku pole. Kui teil on mõni probleem baasosa uuendamisega, andke märku.
Ma proovin eraldi wiki lehel kirjeldada seda, kuidas ülesannet võiks lahendada. See peaks sisaldama umbes sama infot, mida ma ka praktikumides olen püüdnud edasi anda. Arvatavasti jõuan valmis nädalavahetuseks. Eks annan märku.

Ago

Ago Luberg

unread,
Mar 27, 2015, 9:28:44 PM3/27/15
to iti...@googlegroups.com
Panin mõne sõnaga kirja, kuidas ülesande lahendamist võiks alustada: https://courses.cs.ttu.ee/pages/ITI0011:S%C3%A4uts_-_koodijuhend
Täiendan seda jooksvalt ka mõne konkreetsema koodinäitega. Aga seal on kirjas, mis meetoditesse tuleks miskit panna põhiosa puhul. Sama info rääkisin ära tegelikult ka praktikumis 15. Praktikum 15 kood on olemas ka materjalid.git'is.

Teste HW2 kohta hakkab laekuma esmaspäevast alates. Seega teisipäeval võiks saada juba osaliselt testida.

Lisapunkti (enne tähtaega tegemise eest) saab juhul, kui kood on gitis 3. aprilli seisuga. Kaitsmine toimub 7.- 8. aprillil.

Ago

Vootele Verrev

unread,
Mar 28, 2015, 6:43:24 AM3/28/15
to iti...@googlegroups.com
Kas uue malli kasutamine on kohustuslik või võib ka vana malli kasutava töö esitada/committida ? 

Ago Luberg

unread,
Mar 28, 2015, 7:34:35 PM3/28/15
to iti...@googlegroups.com
Uuel ja vanal mallil ei tohiks väga palju erinevusi olla. Ma soovitaks võimaluse korral ikka uue malli järgi teha. Testid hakkavad tekkima kõik uue malli kohta (kuigi arvatavasti mingid tulemused saab ka vana malliga).
Otseselt mingeid sanktsioone ei järgne, kui kasutusel on vana mall.

Täiendasin natuke juhendit: https://courses.cs.ttu.ee/pages/ITI0011:S%C3%A4uts_-_koodijuhend#Sammud_p.C3.B5hiosa_tegemiseks
Ehk siis proovisin sammhaaval kirja panna, mida oleks vaja teha, et põhiosa saaks valmis. LocationSearch ja TwitterSearch meetodid peate ise implementeerima. Juhend on ülejäänud koodi kohta, mis võib muidu fookuse valesse kohta viia - kulutate liiga palju aega selleks, et aru saada, kuidas etteantud malli komponendid töötavad/töötama peavad. Kui kellelgi on mõni küsimus või märkus selle juhendi kohta, andke teada, saan teiste jaoks ka ära muuta/parandada.

Ago

Mart Jõgi

unread,
Mar 29, 2015, 12:22:47 PM3/29/15
to iti...@googlegroups.com

2015-03-24 15:22 GMT+02:00 Ago Luberg <ago.l...@ttu.ee>:
executeAction()
võtab ette ühe actioni, näiteks QueryAction, ja paneb selle käima (ehk siis teeb reaalselt päringu ja salvestab tulemused setTweets() meetodiga). Ma täiendan natuke interface'e selliselt, et iga Action'i juures on ka valikuline execute meetod. Seega, kui see lahendus sobib paremini, et iga Action teab, kuidas ennast käivitada (analoog, et iga kujund teab, kuidas tema pindala arvutatakse), siis võib seda kasutada. Tuleb lihtsalt arvestada, et enamus Action tegevusi nõuab täiendavaid andmeid. Näiteks PrintAction peaks teadma, mis säutsud meil mälus on jne. Teil on võimalus Actionile kaasa anda näiteks viide TwitterApplication implementatsioonile ja sealtkaudu pärida vajalikku infot. Või annate iga Actioniga vajalikud parameetrid kaasa.

Kas siis järgmine käivitamine peaks tegema twitterile 4 päringut?
"myApp Tallinn -count 12 -sort author desc -search #party"

See, et iga action peaks teadma oma käivitamise kohta tundub natuke kahtlane, sest käivitamine kui selline eeldab mitme erineva actioni informatsiooni
näiteks Filter, Search, ja Sort sisaldavad kõik infot, mida ühes twitteri päringus vaja on, neid ei saa ju eraldi käivitada.

Mis aadressil materjalid.git on?, vaataks seda näitekoodi, võibolla sealt on paremini aru saada, aga kursuse lehelt ei leia seda üles.

Ago Luberg

unread,
Mar 30, 2015, 2:59:23 AM3/30/15
to iti...@googlegroups.com
Kui lahendada ainult põhiosa, siis peaks QueryAction'ist piisama - kõik info saab sinna kirja panna.

Näide:

"myApp Tallinn -count 12 -sort author desc -search #party"
ei pea tegema 4 päringut. Antud ülesande puhul, kui ta isegi teeb, siis väga hullu midagi pole. Sõltuvalt sellest, kas interaktiivne osa on lahendatud või mitte, võib lahendus olla järgmine:

1) Koos interaktiivse osaga:
Kuna käske saab eraldi ette anda ("query", "setcount", "sort", "search"), siis tulebki igat käsku eraldi täita. count ja query käivad läbi ühe actioni (eriti, kui need ühe käsuna ja/või käsurealt ette antakse). Kui käsud on eraldi "query" ja "setcount", siis "setcount" muudab näiteks mälus olevat count muutujat. Kui järgmine korda "query" käima pannakse, siis kasutatakse seda infot mälust. Ehk siis "setcount" ei peaks eraldi päringut tegema. "query" teeb päringu ja salvestab säutsud TwitterApplicationi külge (setTweets()). "sort" võtab saadud säutsud (getTweets()) ja rakendab sortimist nende peal. Mõistlik on tulemus salvestada uuesti (setTweets()). "search" käsk teeb jah uue päringu nende parameetritega, millega viimane päring koostati. "print" käsk lihtsalt prindib getTweets() tulemused välja. Täpsemalt on käsud ja nende kirjelduse siin: https://courses.cs.ttu.ee/pages/ITI0011:S%C3%A4uts#Lisaosa:_interaktiivne_juhtimine_.281-2p.29

2) Ilma interaktiivse osata:
Kui interaktiivne osa pole realiseeritud, siis saab käske ette anda käsurealt (ehk siis see näide, mis küsimuses oli). Siin on loogika sama, "sort" kindlasti ei peaks uut päringut tegema, kuna seda peab rakendama selle osa peale, mis on juba päritud. Asukoht ja säutsude kogus läheb ühte actionisse. "search" võiks mitte teha uue päringu. Sul on võimalus action listi läbivaatamisel uurida, mis seal sees on ning meelde jätta, kas otsing on või mitte. Kui otsing on seal olemas, siis ei hakka "query" actioni puhul üldse päringut tegema. Päring tehakse sellisel juhul "search" actioni juures (või vastupidi, kuidas tundub mugavam). See, kuidas seda olukorda lahendada, on tudengi otsustada. Lahendusi on mitmeid. Kui interaktiivne osa pole lahendatud, siis eraldi actionite listi etteandmist ei testita, pigem ikka käsurea argumentidena. Võimalik on teha ka üks action, mis implementeerib kõiki etteantud action interface'e. Sellisel juhul saab executeAction'is kontrollida: if (action instanceof QueryAction && action instanceof SearchAction) {.

Ma plaanin sellel nädalal rääkida praktikumides HW2 ülesande lahendamisest. Peamiselt küll sellest, kuidas põhiosa ära lahendada. Aga kindlasti räägin mõne sõnaga sellest, kuidas kõiki teisi osasid lahendada.

Materjalide kohta info: https://courses.cs.ttu.ee/pages/ITI0011:git#Kursuse_kood

Ago

Ago Luberg

unread,
Apr 1, 2015, 3:31:25 AM4/1/15
to iti...@googlegroups.com
Tere

Praeguseks on mõned põhiosa testid avalikud. Testitakse asukoha päringut ja käsurea argumentide korrektsust. Kui teil on interaktiivne tehtud, siis osad need kukuvad läbi. Kuigi kui argumendid on valesti sisestatud, näiteks
myApp tallinn -count -1
Siis peaks programm andma juhise programmi kasutamiseks ja väljuma koodiga 1. Ehk siis System.exit(1);

Teste tuleb kindlasti juurde.

Ago
--
Saite selle sõnumi, kuna olete liitunud Google'i gruppide grupiga "ITI0011".
Grupist eraldumiseks ja selle grupi meilide saamise peatamiseks saatke meil aadressile iti0011+u...@googlegroups.com.
Rohkem valikuid leiate lehelt https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages