Keskustelu:Olio-ohjelmointi

Viimeisin kommentti: 13 vuotta sitten käyttäjältä Tutkijakatti aiheessa Olen muuttanut OO-suuntaan

Korjauspyyntö muokkaa

  • Olio-ohjelmointi. Tärkeä aihe, mielestäni artikkeli on vaikeaselkoisesti kirjoitettu. Varmastikin kansantajuisemmankin pystyisi tekemään.--Teveten 17. helmikuuta 2006 kello 11.15 (UTC)

Voisiko artikkelin uudistaminen lähteä seuraavien näkökulmien pohdinnasta:

1. Mitä lukijan oletetaan tietävän ohjelmoinnista? Eli millä käsitteillä hän lähtee ideaa ottamaan haltuun? Mikä on tärkein analogia, jota voisi käyttää esittelyssä?

2. Mihin olio-ohjelmointi vertautuu ohjelmoinnin sisällä?

3. Esimerkkejä ja analogioita olisi tuotava esiin johdonmukaisesti. Nyt ovat hajallaan ja vaikeasti muotoiltuja.

4. Miksi tarvitaan olio-ohjelmointia?

Näillä päästäisiin ehkä eroon siitä, että määrittelyssä käytetään heti aluksi mutkikkaita apukäsitteitä (kuten abstraktit tietotyypit ja perintä, joka lisäksi on tyhjä linkki.

Alussa esitetyt kaksi paradigmaa - reaalimaailman simulointi vs. olioiden yhteistoiminta - voisivat auttaa idean ymmärtämisessä, mutta niitä ei tule esittää tuossa vaiheessa vielä koulukuntina. Myöhemmin niitä voi avata uudestaan ja tuoda koulukuntinakin esille. --Juha Kämäräinen 18. maaliskuuta 2006 kello 12.09 (UTC)

Nyt artikkelin perusteella ei mielestäni ole mahdollista saada mitään tolkkua olio-ohjelmoinnista, jos ei tiedä aiheesta jo etukäteen jotain. Mielestäni pitäisi lähteä siitä, että lukija, joka on joskus tietokoneita Basicilla ohjelmoinut (kuten minä) ymmärtäisi mitä on olio-ohjelmointi. Sitä voisi käyttää perustana ja kertoa, miten olio-ohjelmointi eroaa tämänkaltaisesta ohjelmoinnista. Liian vaikeita käsitteitä on tosiaankin syytä välttää.--Teveten 21. maaliskuuta 2006 kello 13.23 (UTC)
Minä sain asiasta aikanani tolkun sillä, että oivalsin olioajattelun hiukan vastaavan ääribehaviorismin käsitystä ihmisestä. Eli ulospäin on musta laatikko, jossa on jotkin tunnetut rajapinnat, niihin sopivat tietyt käskyt (ärsykkeet) ja niistä tulee ulos tiettyjä viestejä (responssit). Ohjelmoinnissa mennään sitten sisälle rakentamaan tuo laatikko: sinne tulevat tietorakenteet eli attribuutit ja käsittelymekanismit eli metodit. Näin siis muodostuu käyttäytyvä olio. Ohjelmisto kokonaisuutena toimii niin, että jokin ylärakenne, yleensä sovellusolio tms. käynnistetään ja se tarpeen mukaan kutsuu alemman abstraktiotason olioita, kuten pääohjelma rakenteisessa ohjelmoinnissa aliohjelmia tai moduuleja. Eli minä en sotkisi tähän vaiheeseen vielä periytymistä mukaan ollenkaan. Tuossa nykyisessä artikkelissakin muistaakseni huomautetaan, ettei sitä aina käytetä.
Vaikeutenahan tuossa on, ettei ota samaan soppaan graafisen käyttöliittymän jne. tuomia lisäjuttuja, vaikka ne tulevatkin käytännön työssä vastaan olioajattelun kanssa yhtä aikaa. --Juha Kämäräinen 21. maaliskuuta 2006 kello 15.12 (UTC)

Ensin varoitus: en tiedä olio-ohjelmoinnista oikein mitään. Mutta se vähä mitä luulen tietäväni on tämä: Olio-ohjelmoinnissa ei tarvitse tietää, miten joku ohjelman osa, olio toimii. Se on kuin musta laatikko, jonka sisältöä ei tarvitse tietää, tai työkalu, jonka toimintatapaa ei tarvitse tietää. Riittää kun tietää, että tämä olio tekee tämän tempun, mutta sinun ei tarvitse tietää, miten se tekee tempun. Sitten näitä olio-palikkoja voi yhdistää ja saada uusi palikkoja. Valmiita palikoita voi käyttää ohjelmoinnissa eli pyörää ei tarvitse aina keksiä uudestaan ja ohjelman kehitysympäristö sisältää paljon näitä valmiita työkaluja.

Onko tuo edelläoleva sinnepäin? Mikäli on, niin tuo on mielestäni se tapa jolla homma pitäisi selittää.--Teveten 21. maaliskuuta 2006 kello 16.48 (UTC)

Ps. Toki jokainen olio pitää ensin luoda, eli ohjelmoida ja sen, joka ohjelmoi olion täytyy tietää miten se toimii. Sen jälkeen, kun olio on tehty, niin kansi voidaan laittaa kiinni, eikä muiden ohjelmoijien tarvitse tietää, miten kyseinen olio toimii. Heille riittää, kun he tietävät mitä se tekee.--Teveten 21. maaliskuuta 2006 kello 16.56 (UTC)

Olen Korjannut 20.10.2006 muokkaa

kommentteja Jukka Tamminen

Lisäyksistä oli hyötyä, mutta tuo synnyttäminen on mielestäni edelleen vaikeaselkoinen. Kuten sanottua, en itse olio-ohjelmoinnista mitään tiedä, katson tätä asiaa maallikon näkökulmasta, joka yrittää ymmärtää asian.--Teveten 20. lokakuuta 2006 kello 09.46 (UTC)

Muutoksia aloitettu muokkaa

Aloitin joidenkin muutoksien tekemisen perusteisiin, toivottavasti sitä selkeyttäen. En uskaltanut kuitenkaan mennä esimerkeissä kovin pitkälle "rautalankaan", koska se olisi toisaalta ehkä lukijan aliarviointia.

Kokonaisuudessaan rakenne on vielä epäjohdonmukainen. Lisäksi esimerkeissä kannattaisi kertoa siitä miten luokka rakennetaan ja toisaalta, miten rakentajia käytetään, sekä vertailla tätä perinteiseen proceduraaliseen ohjelmointiin ja lopuksi osoittaa olio-ohjelmoinnin etu jollakin järkevällä esimerkillä. Riskinä on, että artikkeli paisuu liian isoksi eikä ole enää "tietosanakirja", vaan lähinnä ohjelmoinnin oppikirja. Onko Wikipediassa artikkeleita erillisille "oppikirjamaisille" osuuksille?

Mandariini 13. tammikuuta 2007 kello 08.35 (UTC)

Kuten tuolla ylempänä kirjoitin, niin en tiedä olio-ohjelmoinnista juuri mitään(ohjelmoinnin osaamiseni liittyy commodore 64:n ja VIC-20:n ohjelmointiin basicilla). Artikkelit pitäisi kuitenkin pyrkiä kirjoittamaan niin, että kaltaiseni täysmaallikkokin ne pystyy ymmärtämään, artikkeli ei edelleenkään oikein sitä vaatimusta täytä. Artikkeli ei koskaan voi selittää perusteita liian hyvin, pelko lukijan aliarvioimisesta on turha.
Eikös olio-ojelmoinnin yksi oleellinen piirre ole myös en:Black box-ominaisuus? Siitä voisi kirjoittaa myös.--Teveten 13. tammikuuta 2007 kello 09.32 (UTC)
Tuo aiemmin esittämäsi tapa ja black-box -ajattelu tukisivat kyllä hyvin oppimista. Se mitä kirjoitit tuossa ylempänä "kansi kiinni ja käyttöön" on kyllä ihan hyvin sanottu. Mielestäni se kannattaisi lisätä artikkeliin johonkin sopivaan kohtaan Mandariini 13. tammikuuta 2007 kello 11.30 (UTC)
Oppikirjamainen ote sopii paremmin Wikikirjastoon. Mielestäni toki artikkelin pitää olla selkeä, mutta liikaa rautalangasta vääntämistä on vältettävä. --Harriv 13. tammikuuta 2007 kello 11.54 (UTC)

Muutostyötä taas hieman viety eteenpäin. Esimerkkejä selvennetty ja osin paranneltu. Artikkelissa on redundanssia, periytymiskohta ainakin pitäisi vielä kirjoittaa uudestaan. Kaikkea ei voi selvittää niin, että voisi taata että jokainen sen ymmärtäisi. Artikkeli on mielestäni kuitenkin sen verran tärkeä, että se on syytä kirjoittaa kunnolla. On varmasti paljon nuoria, jotka aloittavat jossain ensimmäisen olio-ohjelmoinnin kurssin ja näkisin, että osuudet palvelevat aika pitkälle myös heitä. Tässä kyllä liikutaan aika pitkälle Wikikirjaston ja Wikipedian välimaastossa, mutta mielestäni se on OK, koska kappaleiden pituudet ovat kuitenkin vielä melko pieniä. Tärkeintä lienee että pysytään asiassa. Mandariini 20. tammikuuta 2007 kello 10.17 (UTC)


Olen muuttanut OO-suuntaan muokkaa

Olen puhdistanut OO- suuntaan: 1) OO-ohjelmalla '''ei voi olla''' muita kuin sisäisiä muuttujia (1, OOP- periaate Smalltalkissa on näin ja tämä on ainoa (tuntemani) aito oliokieli. 2) Olioilla on siis ulospäin '''vain''' palveluja ! 3) Olio-ohjelmalla ei voi olla mitään pääohjelmaa vastaavaa (Jos on silloin kyseessä on oliokielellä kirjoitettu 3G-ohjelma) 4) Olio jolta puuttuu kaikki palvelut tai muuttuja '''ei ole''' olio !Olio sana on vahvistunut suomenkieleen 80- ja 90-luvun taitteessa. Kun kirjoitimme Sytykkeessä Oliot Systeemityössä kirjaa, argumentoin voimakkaasti olio-käsitteen puolesta ja olen edelleen sitä mieltä että käyttämämme termi on monin verroin esikuvaansa object paremin, sillä tämä kielessämme kuvaa toimijaa ei passiivista kohdetta (joka vahvasti siis viitta pelkään tietoon)

--Jukka Tamminen 22. maaliskuuta 2007 kello 12.23 (UTC)Jukka Tamminen

Mielestäni muutokset ovat perusteltuja. Laajemmin käsitettynä muuttujankin voi toki ymmärtää "palveluksi", joskin hyvin yksinkertaiseksi palveluksi. Olioiden sovelluskohteet ovat monimuotoiset ja siksi on vaikea löytää hyviä termejä kuvaamaan esimerkiksi olion suorittamaa proseduurikutsua. Henkilökohtaisesti hieman vierastan termiä "viesti", koska se viittaa mielestäni enemmän asynkroniseen viestinvälitykseen, kun taas kutsu synkronoituun. Kuitenkin molemmat ovat mahdollisia olioita käytettäessä. Olisiko tätä syytä miettiä?

Mandariini 23. maaliskuuta 2007 kello 13.22 (UTC)

Onko se artikkeli nyt kunnossa? Artikkelin Olio (ohjelmointi) voisi yhdistää siihen. Kirjoitin samasta Olio (ohjelmointi) artikkelin keskusteluun.--Tutkijakatti 17. maaliskuuta 2011 kello 18.39 (EET)Vastaa


Kielten ja toteutusten yhdistäminen muokkaa

Nyt olio-ohjelmointia tukevien kielten listassa on sekaisin esim. FreePascal, Lazarus ja Delphi. Näistä kaikki toteuttavat enemmän tai vähemmän saman Object Pascal -kielen. Olisiko järkevämpi vain mainita yleisnimi Object Pascal näiden sijaan? Ei siellä ole listattu erikseen C++:stakaan Microsoftin visual c++:aa, gcc:tä, jne. Demise 28. joulukuuta 2009 kello 02.04 (EET)Vastaa

Palaa sivulle ”Olio-ohjelmointi”.