Palaute

Julkaistu

Alla kunkin harjoituksen osalta tehtävien tarkistajien terveiset. Vastuuopettaja on muokannut raportit yhtenäiseen muotoon keskeisimmät havainnot säilyttäen.

Harjoitus 1

Huonoon ohjelmointitapaa ei tartuttu ensimmäisissä harjoituksissa ellei aivan kaikki tavat olleet unohtuneet. Keskeneräisiä (”keltaisia”) palautuksia ilmeni jonkin verran. Palautus pitäisi muistaa sulkea, jotta opettajan aikaa ei menee turhaan Submit-napin klisutteluun opiskelijan puolesta.

2) Oppilaitos, Rama

Pisteeseen tarvittiin tehtävänannossa kuvattu testaus. Oppilaitos-luokassa oli toiveissa, että siinä käytettäisiin luokassa määriteltyjä vakioita. Piste annettiin, vaikka vakiot olivat jääneet huomiotta, niin kuin monessa ratkaisussa oli käynyt. Keneltäkään ei vähennetty pisteitä.

4) Poliisi, Albert

Pisteen edellytyksenä oli suurin osa tehtävänannossa kuvatusta testauksesta. Pieniä puutteita hyväksyttiin. Rittämättömästä testaus tuotti muutaman nollan. Jokunen ”keltainen” palautus palautettiin opiskelijan puolesta.

5) Kaivuri, Ilmari

Pisteeseen tarvittiin jonkinlainen kommentti korjauksista ja pieniä korjauksia, koska ongelmien korjaus ei edellyttänyt laajoja muutoksia. Ratkaisuissa ei ollut suurempia ongelmia ja kaikki palauttajat saivat pisteen. Muutama ”keltainen” palautus tässäkin tehtävässä.

Harjoitus 2

Myös hyvä ohjelmointitapa arviointiin. Piste nollattiin, jos hyvät tavat olivat pahasti hukassa.

1) Tiedosto, Ilmari

Jonkinlainen kommentti korjauksista tarvittiin. Ratkaisusta ei saanut pistettä, jos Tiedosto-luokan koodia oli muutettu muuten kuin lisäämällä luokkaan oletusrakentaja ja kommentteja. Nollia tuli molemmista syistä, mutta ei montaa. Korjauksista on hyvä mainita luokan yleisissä kommenteissa, mutta kommentteja tulisi kirjoittaa myös paikkaan, jossa korjauksia on tehty.

5) Pipo, Albert

Nolla tuli, jos korjauskommentit puuttuivat tai jos Pipo-luokan metodeja on muutettu, poistettu tai lisätty. Nollia annettiin muutama. Syynä joko puuttuvat kommentit tai tarpeettomat muutokset lähdekoodissa. Tässäkin toiveena kommentteja myös korjauspaikassa.

6) Poliisi, Rama

Rakentajien kirjoittaminen ei juuri näyttänyt tuottavan ongelmia, mutta kommenttien ja muuttujien nimeämisen kanssa olisi jonkin verran parantamisen varaa. Nollat tulivat riittämättömän kommentoinnin takia. Pisteitä ei nollattu testauksen vuoksi: kaikissa tarkistetuissa ratkaisuissa oli pääosin tehtävänannossa kuvattu testaus.

Harjoitus 3

Myös hyvä ohjelmointitapa ja oma testaus arvioitiin.

1) Rosvo, Rama

Rosvo-luokan hyvis-attribuutin julkisessa asetusmetodissa ei ole tarpeen tarkistaa onko parametrin arvo true tai false. Koska parametri on tyypiltään boolean, se on true tai false joka tapauksessa, sillä boolean-tyyppi ei voi saada muita arvoja. Muista kirjoittaa muuttujien nimet pienellä alkukirjaimella, vaikka kyseessä olisikin lennokas erisnimi karskille rosvolle. Ratkaisuja hylättiin noin yhden käden sormien verran kommentoinnin puutteen tai kokonaan puuttuvan kommentoinnin vuoksi.

5) Karhu, Ilmari

Pisteeseen tarvittiin pääosin tehtävänannossa kuvattu testaus, joka olikin hyvin tehty. Vain pari ratkaisua hylättiin puutteellisen testiluokan vuoksi.

6) Omat luokat, Albert

Tehtävässä tarkistettiin opettajan toimesta hyvät tavat, testaus ja tehtävässä pyydetty metodin korvaus tai toteutus. Suurin osa ratkaisuista hyväksyttiin. Nollia tuli, koska metodin korvaus tai hyvä ohjelmointitapa oli unohtunut.

Tyyliin liittyen: kun kommentoit koodia, kaksi peräkkäistä kommenttia ei sisenny. Jos haluat eritellä osioita, käytä lohkokommenttia. Esimerkiksi:

// osio 1
   // ensimmäinen asia

-->

/*
 * osio 1
 *
 */

// ensimmäinen asia

Harjoitus 4

Myös hyvä ohjelmointitapa ja oma testaus arvioitiin.

3) TiedostonKäpistelyä, Albert

Korjaukset oli kohdistettu juuri oikeaan paikkaan. Kaikissa tarkistetuissa ratkaisuissa pääohjelmaan oli tehty pyydetyllä tavalla toimiva virheenkäsittely trycatch-lauseella. Pisteitä poistettiin muutama vaillinaisten tai puuttuvien sisennysten vuoksi. Muista lisätä tällaisissa muokkaustehtävissä nimi (ja mieluusti sähköposti) alkukommenttiin tai muokkauksien alkuun.

5) Ajatelma, Rama

Tehtävänannossa kuvattu testaus oli tehty hyvin. Lennokkaita lausahduksia ja viihdyttäviä virheviestejä. Kiitos kurssin kaikille suurille ajattelijoille! Sitruuna on maukasta ja tynnyri täynnä on hyvä olla! Nollat tulivat puuttuvista kommenteista ja sisennyksistä.

6) Pakatut nisäkkäät, Ilmari

Tämäkin tehtävän ratkaisut oli testattu hyvin. Olioiden nimet olivat melko lennokkaita. Tylsän asiallinen linja nimeämisissä on pitemmän päälle varma valinta, koska koskaan ei voi tietää kuka lopulta lukee jollain tavalla jaeltua koodia. 🙂 Nollia ei tullut montaa ja syyt hylkäyksiin vaihtelivat. Lennokkaista nimistä ei rankaistu.

Harjoitus 5

Arvostelu painottui hyvän ohjelmointitavan ja oman testauksen arvioitiin.

4) Akku, Ilmari

Tässä tehtävässä oli tavanomaista enemmän testauksen vuoksi hylättyjä ratkaisuja. Pääosassa hylätyistä ohjelmista ei ollut vertailua väärän tyyppiseen olioon. Equals-metodille tulisi muistaa antaa omissa testeissä myös yllättäviä parametriarvoja, jotta metodin virheenkäsittely try-catch-lauseella tulisi testattua. Muuten tehtävissä ei ollut juuri moitittavaa.

6) Tiedekunta, Albert

Ei hylättyjä ratkaisuja. Kommentoinnista: Jos käytät valmista koodia, muista päivittää kommentit ettei Jorma Laurikkala ole kirjoittajaksi merkattu henkilö, pois lukien tilanne jossa olet Jorma Laurikkala. 🙂

7) Samojen laskeminen, Rama

Nollat liittyivät poikkeuksellisen kiinteästi vaillinaiseen kommentointiin. Kommentoinnista: Muista selittää kommenteilla, mitä ohjelmassa kulloinkin tapahtuu. Jokaiselle riville ei ole tarpeen kirjoittaa kommenttia, mutta etenkin sisäkkäisiä silmukoita ja muita monimutkaisempia rakenteita on vaikea seurata, jos näitä ei ole lainkaan kommentoitu. Myös metodien toimintaa ja tarkoitusta olisi hyvä kommentoida yleisellä tasolla.

Harjoitus 6

Arvostelussa huomioitiin hyvän ohjelmointitapa ja oma testaus.

1) Voimala, Rama

Pisteeseen tarvittiin pääosin tehtävänannossa kuvattu testaus. Tämä tehtävä oli sen verran suoraviivainen, ettei mitään erityistä huomautettavaa noussut esiin.

3) Vastaavien poistaminen, Ilmari

Toimivia ratkaisuja, mutta osassa oli parantamisen varaa laskennallisen tehokkuuden suhteen. Monessa ratkaisussa käytiin ensin lista läpi, jotta voitiin laskea poistettavien määrä, mikä jälkeen lista käytiin läpi uudelleen ja tehtiin varsinainen poisto. Vaikka aikakompleksisuus ei ole tämän kurssin aihe, on hyvä oppia välttämään turhaa laskentaa jo alusta alkaen. Nollia tuli jonkin verran testiluokasta puuttuvista trycatch-lauseista ja vaillinaisista testeistä, joissa ohjelmaa ei testattu poikkeuksen aiheuttavilla arvoilla. Poikkeuksia käytettäessä pitää muistaa throw– ja trycatch-lauseiden ero. Throw keskeyttää metodin suorituksen ja heittää metodista poikkeuksen. Trycatch-lausetta käytetään heitetyn poikkeuksen sieppaamiseen ja käsittelyyn.

4) Sanakirja, Albert

Hyvin suoraviivainen tehtävä. Muistakaa kuitenkin muuttujien nimeäminen. Koodi on sitä helpommin luettavaa ja ylläpidettävää, mitä parempia tunnuksia muutujille on valittu.

Harjoitus 7

Arvostelussa huomioitiin hyvän ohjelmointitapa ja oma testaus. Kurssin vastuuopettaja tarkisti kaikki kolme tehtävää.

5) Aggregaattorit, Jorma

Nollat tulivat pääosin puuttuvista kommenteista ja vaillinaisesta sisennyksestä.

Jälkiviisaana voi todeta, että tehtävän olisi voinut esittää paremmin. Tekstissä olisi pitänyt mainita, että on myös mahdollista laskea muutenkin kuin kolmella eri tietovirralla. Onneksi moni oli huomannut IntSummaryStatistics-luokan, jolla voi laskea useita tunnuslukuja kerralla. Tosin muutamassa IntSummaryStatistics-luokkaa käyttävässä vastauksessa alkoiden lukumäärä laskettiin eri virralla, vaikka tämänkin tieto olisi saatavilla IntSummaryStatistics-olion kautta.

7) Varasto, Jorma

Varasto-luokasta tarkistettiin, että akkuviitteet sisältävään attribuuttiin oli liitetty olio ja että lisäysmetodi toimi. Myös testiluokka lukaistiin läpi. Yleisin ongelma oli se, että varaston attribuutti jäi ilman oliota. Luentevin paikka liittää olio attribuuttiin on luokan rakentaja. Valtaosa ratkaisuista oli erittäin hyvin tehtyjä, vaikka WETOn tarkistus oli ylimalkaista.

8) UML-kaavio, Jorma

Kaaviot olivat laadultaan hyvin vaihtelevia. Osassa ratkaisuja tehtävää oli selvästi pohdittu pitkään, kun taas osa ratkaisuista oli enemmän luonnostelman tasoisia. Miinusta tuli puuttuvista assosiaatioiden nimistä, puuttuvista kertoimista sekä epämääräistä ja väärin valituista suhteista.