You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Sep 30, 2022. It is now read-only.
Arviointi tehty hetkellä 4.10.2018 kello 16:38 ladatulle versiolle
Rakenne
Koodin vaikuttaa rakenteeltaan hyvältä ja järkevältä ja siinä käytetään tietorakenteiden perintää siististi.
Ongelmia
1.
Luokan PrimObjectHeapswap-funktio heittää ilmeisesti aina kutsuttaessa virheen. Tämä kuitenkin otetaan kiinni, mutta tästä seuraa satunnaisesti, että ruudukosta tulee epäyhtenäinen. Virheen aiheuttaa se, että luokassa MinHeap<T> luodaan taulukko tyyppiä Comparable[], joka tyyppimuunnetaan tyyppiin T[]. Java ei heitä tässä vaiheessa virhettä, mutta käytöstä voi seurata ongelmia näin tehtynä [1]. Ratkaisuksi ongelmaan toimisi ilmeisesti Javan Reflection API:n käyttäminen funktiolla Array.newInstance[2].
2.
Luokan MinHeap yksikkötestit vaikuttavat testaavan nyt vain erikoistapauksia: joko aidosti kasvavaa syötettä tai aidosti vähenevää syötettä. Varmuuden vuoksi olisi hyvä lisätä yleisempi tapaus testeihin. Kokeilin tällaisen testin lisäystä, ja sen jälkeen testit menivät läpi, joten luokka näyttäisi toimivan oikein. Sama pätee luokan PrimObjectHeap yksikkötesteihin.
3.
Luokassa RoomFactory on konstruktori, joka ottaa parametrikseen Random-tyypin olion. Tätä arvoa ei kuitenkaan käytetä mihinkään, sillä konstruktorin sisällä luodaankin uusi sellainen new-avainsanalla. Oletettavasti ideana on mahdollistaa tietyllä siemenluvulla alustetun Random:n käyttö?
4.
Luokan PrimObjectHeap funktio update ei toimi oikein. Tämän takia ohjelman generoimat luolastot eivät aina noudata pienintä virittävää puuta, kuten seuraavasta tulostuksesta näkee:
Puu olisi kevyempi yhdistämällä kaksi ylintä huonetta. Ongelman ratkaisuun auttanee seuraavan yksikkötestin lisääminen luokalle PrimObjectHeap:
Arviointi tehty hetkellä 4.10.2018 kello 16:38 ladatulle versiolle
Rakenne
Koodin vaikuttaa rakenteeltaan hyvältä ja järkevältä ja siinä käytetään tietorakenteiden perintää siististi.
Ongelmia
1.
Luokan
PrimObjectHeap
swap
-funktio heittää ilmeisesti aina kutsuttaessa virheen. Tämä kuitenkin otetaan kiinni, mutta tästä seuraa satunnaisesti, että ruudukosta tulee epäyhtenäinen. Virheen aiheuttaa se, että luokassaMinHeap<T>
luodaan taulukko tyyppiäComparable[]
, joka tyyppimuunnetaan tyyppiinT[]
. Java ei heitä tässä vaiheessa virhettä, mutta käytöstä voi seurata ongelmia näin tehtynä [1]. Ratkaisuksi ongelmaan toimisi ilmeisesti Javan Reflection API:n käyttäminen funktiollaArray.newInstance
[2].2.
Luokan
MinHeap
yksikkötestit vaikuttavat testaavan nyt vain erikoistapauksia: joko aidosti kasvavaa syötettä tai aidosti vähenevää syötettä. Varmuuden vuoksi olisi hyvä lisätä yleisempi tapaus testeihin. Kokeilin tällaisen testin lisäystä, ja sen jälkeen testit menivät läpi, joten luokka näyttäisi toimivan oikein. Sama pätee luokanPrimObjectHeap
yksikkötesteihin.3.
Luokassa
RoomFactory
on konstruktori, joka ottaa parametrikseenRandom
-tyypin olion. Tätä arvoa ei kuitenkaan käytetä mihinkään, sillä konstruktorin sisällä luodaankin uusi sellainennew
-avainsanalla. Oletettavasti ideana on mahdollistaa tietyllä siemenluvulla alustetunRandom
:n käyttö?4.
Luokan
PrimObjectHeap
funktioupdate
ei toimi oikein. Tämän takia ohjelman generoimat luolastot eivät aina noudata pienintä virittävää puuta, kuten seuraavasta tulostuksesta näkee:Puu olisi kevyempi yhdistämällä kaksi ylintä huonetta. Ongelman ratkaisuun auttanee seuraavan yksikkötestin lisääminen luokalle
PrimObjectHeap
:Nykyisin kyseinen testi palauttaa ensin arvon
1
ja vasta sen jälkeen arvon0
.Yleisesti ottaen työssä on lähes kaikki hyvän tavan mukaista ja sen tuottamat luolastot kiinnostavia! :)
The text was updated successfully, but these errors were encountered: