tehtävä 2 + foreach huomioitu (listan jokaiselle alkiolle sovelletaan annettua funktiota) + funktioliteraalin käyttö huomioitu + funktion välittäminen parametrina huomioitu + sulkeuma / muuttujien a ja b ympäristö / vapaiden muuttujien sidonta + tulostus oikein: 15 120 irtopisteitä: + tehdasmetodi, tyyppipäättely, val/var - väitetty että printtiä kutsutaan foreachin jokaisella iteraatiolla - väitetty jotain muuta joka ei pidä paikkaansa Täydet pisteet sai siis huomioimalla foreachin, funktioiden "first class"-statuksen, sulkeuman (ei tarvinnut välttämättä mainita nimeltä) ja oikeasta tulostuksesta. Erittäin yleinen virhe oli jättää sulkeuma kokonaan huomiotta. Tällöin maksimipisteet olivat 6-7. tehtävä 5 + muunnosten suoritusjärjestys * "oikealta vasemmalle" + super-viittauksen sidonta * "juuri nyt" kyseessä olevaan luokkaan tai traittiin + override abstract / abstract override * vaaditaan viitattaessa toteuttamattomaan superiin (funktio määrittyy kokonaan vasta liitosvaiheessa) korvauksen yhteydessä / täytyy löytyä ilman tätä määrettä perintähierarkiasta + tulostus oikein: CBTABD BCTABD CBTADB BCTADB irtopisteitä: + override valinnainen * vaaditaan korvattaessa konkreettinen funktio - väitetty että muunnokset suoritetaan "vasemmalta oikealle" - väitetty että super viittaa (aina) TA:han - väitetty jotain muuta joka ei pidä paikkaansa Täydet pisteet sai em +-kohdista. Erityisesti siis sekä muunnosten suoritusjärjestys että super-sanan merkitys oli huomioitava. Näistä ja oikeasta tulostuksesta sai 8 pistettä, ja override abstractin kanssa täydet 10. Yleinen ja pahin virhe oli väittää, että muunnokset suoritetaan "vasemmalta oikealle". Jos tämän lisäksi muut kohdat oli jätetty selittämättä tai selitetty väärin, tehtävästä saattoi saada 0 pistettä vaikka tulostus olisi ollut oikein ("Pelkästä tulostuksesta ei saa pisteitä!") sillä erityisesti tässä tehtävässä oikeaan tulostukseen voi päätyä oleellisesti täysin väärällä tavalla.