Ohjelmointi 3 – Syvillä vesillä

Tällä ohjelmointikierroksella ei tullut niin paljon isoja uusia asioita, kuin aikaisemmilla kierroksilla. Uusina asioina tulivat kuitenkin abstraktit luokat ja metodit, iteraattori ja poikkeukset. OLO-session kuudennella kierroksella käsiteltiin rekursiota, ja nyt siihen päästiin tutustumaan koodin muodossa, kun Olento-luokan asetaSijainti ja Sektori-luokan sijoitaOlento -metodit aiheuttivat päättymättömän rekursion. Tämä johti lopulta StackOverflowErroriin, koska resurssit loppuvat aikanaan kesken, jos metodi kutsuu toista metodia, joka taas kutsuu kutsuvaa metodia jne., jolloin syntyy ikuinen luuppi. Kun metodit sai toimimaan niin, että ne kutsuivat toisiaan vain tarvittaessa, päästiin virheistä eroon ja ohjelma toimi taas kuin unelma.

Tässä ohjelmointikierroksessa muokattiin paljon luokkia Olento ja Sektori. Puukko-luokalle luotiin yksi aliluokka ja Olento-luokalle kolme aliluokkaa, jotka kuvasivat erilaisia olentoja, joita pelimaailmassa saattaa esiintyä. Koska Olento-luokasta ei suoraan haluttu tehdä ilmentymiä, tehtiin aliluokista abstrakteja yksinkertaisesti lisäämällä sana abstract luokan Olento ja sen abstraktien metodien alkuun heti näkyvyysmääreen perään. Aliluokkia tehdessä tuli myös selväksi, että Eclipse valittaa aliluokasta niin kauan, kunnes kaikki yläluokan abstraktit metodit on määritelty aliluokassa.

Luotaessa metodeita, joissa olento etsii sektoristaan vihollista, tynnyriä, puukkoa tai taikajuomaa, osoittautuivat iteraattorit oikein käyttökelpoisiksi apuvälineiksi. Iteraattoreiden avulla säästyttiin pitkien for-lauseiden kirjoittamiselta. Itse tosin kirjoitin for-lauseet onnellisena, kunnes myöhemmin tajusin, että täällähän olisi tällaisia käyttämättömiä iteraattoreitakin. For-lauseilla päästään siis samaan tulokseen, mutta iteraattori helpottaa ohjelmointityössä.

Onneksi poikkeuksiin oltiin tutustuttu juuri edellisellä teoriakierroksella. Nyt poikkeukset pistettiin käytäntöön ja throw:t ja catchit muistuivat nopeasti mieleen, koska niistä oli itse kukin väännellyt iloisenvärisiä laatikoita CMapissa tai kirjoitellut hassunhauskoja lauseita esseeseensä. Asiasta kirjoittaminen ei ole kuitenkaan sama asia kuin asian tekeminen, joten nyt ohjelmoidessa asiat loksahtivat oikein kunnolla kohdalleen, kun luotiin itse oma poikkeusluokka, heiteltiin luodun poikkeusluokan poikkeusolioita, ja otettiin ne kiinni.

Tässä ohjelmointikierroksessa käytettiin myös ensimmäistä kertaa jotain muutakin näkyvyysmäärettä kuin privatea ja publicia.

Lopuksi valmista koodia pääsi testaamaan uudella käyttöliittymällä:

Onnelliset ja huolella ohjelmoineet saivat pelin läpi, kun taas jotkut saivat palata koodinsa pariin häntä koipien välissä todettuaan, että heidän täydelliseksi kuvittelemansa ohjelmointityö heittää Exceptioneita ja kaatuu.

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out / Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out / Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out / Muuta )

Google+ photo

Olet kommentoimassa Google+ -tilin nimissä. Log Out / Muuta )

Muodostetaan yhteyttä palveluun %s