O
21.04.1996

OLIOITTAMINEN (Object-Oriented Design)

Laaja ja monimutkainen järjestelmä, johon kohdistuu jatkuvasti muutospaineita, hallitaan parhaiten kokoamalla se suhteellisen itsenäisesti toimivista olioista. Tämä koskee yhtä hyvin organisaatioita kuin tietojärjestelmiä. Oliokeskeisyys on käytännön tietotekniikassa vielä suhteellisen uutta, kun taas sotilasorganisaatioiden johtamisessa sillä on jo hyvin pitkät perinteet, vaikka samaa termiä ei olekaan siellä käytetty.

Jokainen olio eli objekti on jonkin objektiluokan ilmentymä (engl. instance). Esimerkiksi komppania on pääesikunnan määrittelemä abstrakti objektiluokka. Sen alaluokat kiväärikomppania ja kranaatinheitinkomppania perivät komppanian yleiset ominaisuudet ja sen lisäksi niillä on kummallakin omia erityisominaisuuksiaan. Ominaisuus voi olla näkyvä tai toiminnallinen. Toiminnallisia ominaisuuksia kutsutaan metodeiksi. Jokin tietty todellinen kiväärikomppania on ao. objektiluokan ilmentymä. Sillä on siis komppanian yleiset ominaisuudet, kiväärikomppanian erityisominaisuudet ja lisäksi vielä omat yksilölliset ominaisuutensa, kuten tietty henkilökokoonpano, sijainti ja varustus.

Olioille on ominaista, että ne sisältävät hyvin kattavasti kaiken sen, mitä ne tarvitsevat. Tietojärjestelmässä se tarkoittaa siirrettäviä ja uudelleenkäytettäviä moduleita, joihin on "kapseloitu" dataa, sen käsittelyyn tarvittavat lomakkeet ja ohjelmakoodi. Organisaatiossa hyvin kapseloitu yksikkö voidaan siirtää kokonaisena toiseen organisaatiohaaraan tai vaikka myydä, ilman että sen toimintakyky siitä olennaisesti häiriintyy. Tämä ei tarkoita, että "kaikki tekisivät kaikkea", vaan kapseloidut yksiköt voivat toki ostaa erilaisia palveluja toisiltaan. Yleisemmin sanottuna eri oliot kommunikoivat keskenään lähettämällä toisilleen sanomia ja vastaamalla saamiinsa sanomiin, mutta ne eivät puutu toistensa sisäisiin asioihin. Analogia tulosyksikköjohtamiseen on ilmeinen.

Objektiluokat kannattaa yrittää muodostaa siinä mielessä hierarkisesti, että iso olio koostuu pienemmistä olioista ("containership"). Esim. kuvaruudulla näkyvä lomake sisältää datakenttiä, painonappeja yms., jotka liikkuvat lomakkeen mukana. Polkupyörävääpelille hyllyssä oleva ketju ja satula ovat kaksi eri objektia. Pyörää hakeva varusmies käsittelee eri osista koostuvaa polkupyörää yhtenä oliona eikä osina. Ryhmänjohtajalle mies pyörineen ja muine varusteineen muodostaa yhden objektin. Korkeampi johtaja komentaa pyöräilevää sotilasosastoa yhtenä objektina. Tällainen "containership"- hierarkia helpottaa asioiden hallintaa olennaisesti, sillä ihmisen on helpompi hallita 3 isoa objektia, jotka sisältävät 30 pienempää objektia, kuin 300 erillistä yksityiskohtaa.

Kun oliot eivät puutu toistensa sisäisiin asioihin, kunkin olion sisäistä rakennetta ja toimintaa voidaan kehittää melko itsenäisesti. Ulkopuolisia kiinnostaa lähinnä vain se, että ne saavat tietyt palvelut tietyllä tavalla pyytämällä. "Protokolla" eli tapa, jolla palveluja pyydetään ja toimitetaan, pitää sopia olioiden kesken. Kun protokollaa halutaan kehittää, se tapahtuu käytännössä usein siten, että tietyn siirtymäkauden ajan palvelut ovat saatavissa sekä vanhaa että uutta protokollaa käyttäen. Siten jokaiselle oliolle jää riittävästi aikaa omien sisäisten rakenteittensa muuttamiseen, mikäli uusi protokolla sitä vaatii.

Oliopohjaisen johtamisen vastakohta on sellainen johtamistapa, jossa organisaation ylin johto käsittelee eri yksiköiden sisäisiä asioita yksilöllisesti. Oliopohjaisen ohjelmoinnin vastakohta on ns. proseduraalinen ohjelmointitapa, joka on parhaimmillaan hyvin strukturoitua ja huonoimmillaan muistuttaa nauhamakaronia.

Tämän sivun alkuun
Sisällysluettelo ja ohjeet