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
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 try–catch-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
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
6) Tiedekunta, Albert
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
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 try–catch-lauseista ja vaillinaisista testeistä, joissa ohjelmaa ei testattu poikkeuksen aiheuttavilla arvoilla. Poikkeuksia käytettäessä pitää muistaa throw– ja try–catch-lauseiden ero. Throw keskeyttää metodin suorituksen ja heittää metodista poikkeuksen. Try–catch-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.