Tottelevaisuuskoulu

Olioiden perusteita, Java-papuja, Java serv(l)ettejä… Tällaisia kurssiaiheita tavailin ovien pielistä kun aloittelin uraani nykyisessä työpaikassani. Enkä tiennyt yhtään mistä oli kyse. Javapavuista ja servleteistä tuli mieleen lähinnä iltapäivän kahvihetki ja olioista karvaiset pienet pallerot sänkyjen alla, vähän niinkuin Haisulit.
 
Kahdesta jälkimmäisestä en mitään tiedä vieläkään, eikä se edelleenkään haittaa, kun en javaa yritä opetellakaan. Sen sijaan oliot eivät sittenkään ole mörköjä, edes päässäni enää. Ne ovat ohjelmassa asustavia olentoja, joiden hahmon määrittää luokka. Paras kuulemani selitys luokan ja olion erosta – tai pikemminkin suhteesta – on, että luokka on ne rakennuspiirrustukset, joiden mukaan rakennetaan talo, joka on se olio.
 
Olio on englanniksi tylsästi vain object. Vielä jokin aika sitten olin sitä mieltä, että object-sanan suomentajalla on ollut aivot sumussa sillä hetkellä kun on keksinyt niinkin koomisen ja jotenkin epä-iiiteemäisen termin kuin olio. Mutta siinä on sittenkin ihan itua. Nimittäin olio on kuin onkin tietyllä tapaa elävä olento. Luokkkaan eli rakennuspiirrustuksiin määritellään perusrunko sekä tarvittaessa raamit, joiden puitteissa olio voi muuntua. Aivan barbapapa olio siis ei ole, mutta se siis voi muuntua. Esimerkiksi ruskeasta möröstä punaiseksi möröksi.
 
String on eräs .net-kielen perusluokista, vaikkei siitä muodostetut oliot olekaan aivan täysin oliomaisia. String-oliot eivät muiden olioiden tavoin osaa muuntautua vaan joka muunnoksesta pitääkin luoda uusi olio. Miksi sitten esimerkkinäni on string, jos kerran se on vähiten oliomainen olio? Siksi, että juuri se vajavaisuudellaan aiheutti minussa ahaa-elämyksen olioiden olemuksesta – etenkin kun havaitsin siinä selvän yhtäläisyyden lapsiini.
 
Esimerkkinä luon siis string-olion s, jonka ilmentymä on teksti "esimerkki":
string s = "esimerkki";
Jos tulostan s:n MessageBoxiin, saan laatikkoon sanan esimerkki, luonnollisesti. Mutta jos haluaisinkin, että laatikossa lukisikin ESIMERKKI isoilla, voisin muuntaa olioa ToUpper-nimisellä metodilla. Eli kirjoittaisin edellisen koodirivin jälkeen
s.ToUpper();
jolla pyydän: "Olio kiltti, voisitko muuttua isoiksi kirjaimiksi". Mutta tämä olio onkin siis jukuripää, kuten ne lapseni, eikä suinkaan tottelisi minua. Tämä olio kun ei osaa muuntaa itseään. Niinpä minun pitäisi luoda se uusi olio, kirjoittaa:
s = s.ToUpper();
ja näin saisi vanha jukuripäinen olio olla keskenään pienillä kirjoitettu, minä leikinkin uuden olion kanssa, joka suostuu olemaan isoilla kirjoitettu!
 
Jos siis lapsilta pyydän: "tytöt kiltit, voisitteko olla hiljaa" ei se suinkaan tehoa, koska tyttäreni ovat string-olion kaltaisia, eivätkä osaa muuntaa itseään hiljaisiksi. Enkä saa heistä kloonattua uusia olioita, jotka olisivat hiljaa. Se ei toisaalta ehkä olekaan se oikea keino lasten ollessa kyseessä.
 
Tässä stringin tapauksessa ei nyt ole niin merkityksellistä, onko olio uusi vain muuntautunut vanha, pääasia, että lopputulos on oikea, eli on käytetty oikeita syntaksin mukaisia keinoja laittaa oliot tottelemaan. Pitäisi siis keksiä oikeat keinot saada ne lapset tottelemaan. Yeah, right. "Arvomme seuraavan kokeiltavan keinon." Syntaksia kun ei lastenkasvatuksessa ole.

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.