Nimeään kauniimmat oliot

Olio-ohjelmointi on usein taustalla vähänkään monimutkaisemmissa ohjelmissa. Myös Python soveltuu olio-ohjelmointiin, joten kurssillakin tehtiin olioita.

 

Olio-ohjelmointi toimii ihan samalla tavalla kuin muukin Python-ohjelmointi, paitsi että siinä luodaan luokkia ja kokonaisuuksia, joilla on yhteisiä määrättyjä ominaisuuksiaOlio taas on luokan jäsen. Kyse on siis hierarkioista.

Jarmo-virtahepo on yksinkertainen olio!

Ennen kuin olioita edes sen kummemmin selitettiin, sain laittaa Codeacademyn kurssilla kädet saveen. Pääsin luomaan olioita ennen kuin tiesin, mitä ne ovat.

Aloitin luomalla Animal-olioita: tein 26-vuotiaan Jarmo-nimisen virtahepo-olion ja sille oselotti-oliokaverin. Kumpikin kuului siis eläinten luokkaan, ja kummallakin oli esimerkiksi yksilöllinen nimi, ikä ja laji. Nimi, ikä ja laji olivat siis näiden yksinkertaisten Animal-luokkaan kuuluvien olioiden yhteisiä ominaisuuksia: sekä Jarmolla että oselottikaverilla oli ne, mutta kuitenkin nimi, ikä ja laji määrittyivät molemmilla omalla tavallaan.

Oikeasti oliot eivät kuitenkaan yleensä ole eläimiä vaan ohjelmanpalasia, joten seuraavassa harjoituksessa tehtiin jo simulaatio verkkokaupan ostoskorista. Harjoituksessa käsiteltiin koodia, jollaisia oikeissa verkkokaupoissa käytetään (tietysti n00bille yksinkertaistettuna, mutta kaikki olennaiset elementit olivat mukana).

Minä tykkäsin olio-ohjelmoinnin perusteista tosi paljon. Se oli minusta kivaa.

Oliot kuuluvat luokkaan, jolla on ominaisuuksia

Olio-ohjelmointi on nähdäkseni ”vain” tapa jäsentää koodattua isommiksi palikoiksi, luokiksi. Luokka on siis joukko ominaisuuksia ja/tai toiminnallisuuksia, jotka siihen kuuluvilla olioilla on. Luokkaan voi myös kuulua alaluokka, joka perii ylemmän luokan ominaisuudet. Esimerkiksi minun Jarmo-virtaheponi kuului luokkaan Animals, mutta se voisi kuulua myös alaluokkaan Mammals, joita yhdistäisi rajatumpi joukko yhteisiä ominaisuuksia. (Nisät ja elävät poikaset. Sekä Jarmo että oselottikaveri kuuluisivat molemmat myös tähän alaluokkaan.)

Minusta tämä oli hirveän loogista, ja pidän siitä, kuinka luokat ja oliot voivat jäsentää tehtyä kokonaisuutta. Monimutkaisissa ohjelmissa tämä on ilmeisesti välttämättömyys.

Koska olioiden hierarkiat voivat mennä limittäin ja siellä on mahdollista korvailla ja hyppiä yli emoluokkien ominaisuuksia, on kuitenkin varmaan mahdollista luoda ihan pirullisen monimutkaisia oliokokonaisuuksia. Valmiiden ohjelmien olioiden kärryille pääseminen voi siis olla hankalaa.

Ovatko oliot eläviä?

Ennen Jarmoa luulin, että oliot liittyvät jotenkin elollisuuteen. Että olio on joku koodinpätkä joka simuloi elävää olentoa. Siis vaikka joku tekoäly. Olin väärässä. Ei ole.

Väärinkäsitykseni johtui siitä, että kaikki muut tietämäni oliot ovat jotenkin itsenäisesti toimivia ja jollain tasolla tietoisia ja eläviä. Vaikka nyt avaruusolio tai Coolio. Samalla lailla kuin otus on elävä.

Mutta ei. Selvisi, että oliot todella ovat luokkaan kuuluvia yksilöitä, mutta eläviä ne eivät kyllä ole siinä mielessä miten minä odotin. Koodi-olio toimii kyllä itsenäisenä yksikkönä luokkansa puitteissa, mutta ei se automaattisesti mikään tekoäly tai simulaatio ole, vaan ennemmin luokan määritelmään tällä kertaa osuva koodiläjä. Suomenkielinen vakiintunut termi olio tuntui siis minusta harhaanjohtavalta (vaikka kai vastaakin aika hyvin filosofian määritelmää oliosta). Hahmotin tarkoitteen paremmin englannin kautta (englanniksi olio on object ja olio-ohjelmointi object-oriented programming). Olio on luokkaan kuuluva yksilöllinen toteutuma.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

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