(toiminnot)

hwechtla-tl: Olio-ohjelmoinnin pointti: viime muutokset

Selitä tässä, mitä olio-ohjelmoinnin pointti tarkoittaa. Minun mielestäni olio-ohjelmointi ei tarkoita mitään aivan tiettyä. Olen nähnyt niin monta erilaista oliopohjaiseksi kutsuttua kieltä, että tiedän kyllä aika monta asiaa, joita sillä tarkoitetaan eri yhteyksissä. Ja koska olio-ohjelmoinnista puhutaan yhä, voisi olla hyvinkin vaivan arvoista kertoa, mitkä olio-ohjelmoinniksi kutsutut ajatukset ovat minusta tutustumisen väärtejä.

Miten toteutetaan Olio-ohjelmointi on tapa (tai useampi) järjestellä ohjelmia. Nämä tavat järjestellä ohjelmia eivät ole ohjelmointikielten ominaisuuksia, vaan ohjelmointitekniikoita, joita voi käyttää lähes kaikissa ohjelmointikielissä -- vaikka tietyt ohjelmointikielet saattavatkin sisältää ominaisuuksia tai perinteitä, jotka helpottavat tai ohjaavat oliotekniikoiden käyttöön. Demotakseni tätä kirjoitan esimerkkini kolmella eri kielillä: * enkapsulointi ohjelmointikielellä: C-kielellä, joka on suojaukseton keskitason systeemiohjelmointikieli, Python-kielellä, joka on oliotekniikoille erityistä tukea sisältävä korkean tason kieli, ja Scheme-kielellä, joka on ennen kaikkea funktionaaliseen ohjelmointiin suuntautunut korkean tason kieli.

Keskeisiä oliotekniikoita ovat mielestäni nämä:

# kapselointi eli suojaus (''encapsulation'') # dynaaminen sidonta (''dynamic dispatch'') # periytyvyys (''inheritance'')

Kapselointi on hyvin perustavanlaatuinen tekniikka, jolla ohjelmistojen laatua on parannettu paljon ennen olio-ohjelmoinnin tuloa. Omasta mielestäni dynaaminen sidonta on se olennainen innovaatio, joka tekee olio-ohjelmoinnista jotenkin hyödyllisen lähestymistavan. Periytyvyys on mielestäni lähinnä haitallinen sivupiirre, joka on sisällytetty joihinkin oliokieliin "kätevyyssyistä". En aio demota periytyvyyttä, koska se on mielestäni haitallinen keksintö, mutta kapseloinnin ja dynaamisen sidonnan yritän selittää siten, että käy myös ilmi, mitä hyötyä niistä on.

!!! Kapselointi

[...]

!!! Dynaaminen sidonta

* dynaaminen dispatch * luokat funktiot * rajapinnat

Toteutuskielet: * C * Python * Scheme

[kategoria: keskeneräiset] * [kategoria: ohjelmointi]


(viimeksi muutettu 20.04.2013 21:24)