Entäpä jos luokkia ja olioita ei olisi?

Ennen Studio 1-kurssia oma ohjelmointiosaamiseni rajoittui lähinnä villeinä nuoruusvuosina QBasicillä väännettyihin tekstipeleihin. Kymmenvuotiaalle Altille suurin ylpeyden aihe oli yli kaksituhatta riviä pitkä Star Wars aiheinen seikkailupeli. Koko komeus oli samaan pötköön kirjoitettu, eikä luokista, metodeista tai olioista ollut tietoakaan. Eipä tarvinnut Altin silloin miettiä, mitä luokan X pitää voida käyttää luokasta Y, ei ollut murheita näkyvyysmääreiden merkityksen ymmärtämisen kanssa, eikä tarvinnut vaivata päätä järkevän luokkarakenteen miettimisellä.

Lukiossa päätin tutustua uuteen ohjelmointikieleen ja valitsin C++:n peruskurssin. Hermohan siinä meni, kun tehtävät olivat (myöhemmin myös Javaan perehtyessä tutuksi tulleen) “Hello world!”-ohjelman tasoisia. En ymmärtänyt mikä järki oli käyttää olioita, kun samat asiat pystyi tekemään Basicilläkin ilman niitä. Viime syksy tutustutti minut uudestaan ohjelmoimisen maailmaan, ja sai minut vihdoin tajuamaan luokkien ja olioiden merkityksen. Kaivoin esiin vanhat tekstiseikkailupelini ja ymmärsin miten kömpelöä on toteuttaa ohjelma ilman että se on jaettu selkeisiin osakokonaisuuksiin. Asioiden toistoa ei pysty välttämään, kun ei ole tapaa viitata vaikkapa nopan toteuttavaan osaan ohjelmassa, ilman että ohjelma menettää tiedon siitä, missä päin Tatooinea Luke sillä hetkellä seikkailee. Erillisiä, lähes metodimaisia osia toki pystyi luomaan jo Basicissa, mutta sellaiseen osioon viittaaminen sujuvasti muun toiminnan ohessa, tuntui silloin ja myös näin jälkikäteen, jos ei mahdottomalta, niin ainakin äärimmäisen hankalalta. Ilman olio-ohjelmoinnin mukanaan tuomia hienouksia pelin hahmot ovat vain kasa täysin toisistaan irrallisia muuttujia. On huomattavan paljon vaikeampaa, kun jonkin luokan ilmentymän sijaan joutuu joka kerta määrittelemään tarvittavat muuttujat. Muuttujien määrän kasvaessa niiden hallinnointi muuttuu yhä vaikeammaksi.

En aikoinaan tutustunut ohjelmien visualisointiin, ja näin jälkeenpäin ajatellen, hyvä niin. Ohjelman mennessä riittävän monimutkaiseksi (tällä kurssilla se hetki lienee ollut Swingin mukaan tulo) tulee luokkien olemassaolon edut ilmiselviksi. Usein toisteltu ohje ohjelman käyttöliittymän ja logiikan erillään pitämisestä paitsi helpottaa koodin hahmottamista, myös yksinkertaistaa muutosten tekemistä myöhemmässä vaiheessa. Ilman erillisiä luokkia jaon toteuttaminen on lähes mahdotonta. Tilanteessa jossa ohjelmaa on kehittämässä useampi henkilö, lienee selvää että vastuualueiden jakaminen on hyvin vaikeaa jos ohjelman eri osa-alueita ei jaeta selkeästi omiksi kokonaisuuksikseen. Oliot ja luokat eivät ole vain kosmeettisia, kokonaisuutta selkeyttäviä asioita, vaan ne mahdollistavat monien sellaisten asioiden toteuttamisen, jotka muuten olisivat mahdottomia.

Jätä kommentti