mitä eroa on tavallisella ohjelmoinnilla ja olio-ohjelmoinnilla?
(tää kysymys on mietityttänyt mua jo kauan)
Kysymykseen ei voi vastata, ennen kuin määrittelet "tavallisen" ohjelmoinnin.
Ohjelmoinnissa on erilaisia tapoja jäsennellä ongelmaa, tässä niistä muutama: Proseduraalisessa ohjelmoinnissa (jota ehkä tarkoitat "tavallisella") ongelma jaetaan yksittäisiksi toiminnoiksi, joista tehdään funktioita tai aliohjelmia. Olio-ohjelmoinnissa hahmotetaan itsenäisiä kokonaisuuksia, jotka sisältävät jotain tietoa ja voivat toimia jollain tavalla. Deklaratiivisessa ohjelmoinnissa taas kirjoitetaan enemmänkin sääntöjä siitä, miten asiat liittyvät toisiinsa.
Jos englanti taittuu, lue toki Wikipediasta Programming paradigm.
ei onnistunut englanti
jos teet olioilla ja oot miettiny kaiken hyvin koodia voi todennäkösesti käyttää myöhemmin myös jossain toisessa ohjelmassa. Ja on helppo ymmärtää miten ohjelma toimii jos se on jaettu pienempiin kokonaisuuksiin.
Jaa
näin pikaisesti lyhyt esimerkki. sanotaan että sinulla on luokka nimeltä Huone.
huone sisältää nyt esim. muuttujan, vaikka merkkijonotaulukon nimeltä Huonekalut.
näin voit luoda useita huone -olioita sisältäen eri huonekaluja.
huone Olohuone = new huone(); huone Keittio = new huone(); Olohuone.Huonekalut[0] = "Sohva"; Olohuone.Huonekalut[1] = "TV-Taso"; Keittio.Huonekalut[0] = "Ruokapöytä"; Keittio.Huonekalut[1] = "tuoli";
jos kyseessä olisi vaikka tekstiseikkailu, voisit tehdä eri huoneet näin, ja asettaa huonekohtaisesti tekstit mitä eri huoneissa tapahtuu, mitä tavaroita löytyy,mitä voi poimia, mitä kiinteisiin esineisiin voi käyttää, mistä teoista saa pisteitä (ja mistä on jo pisteet saatu), mitä ovia on, mistä huoneolioon niistä pääsee jne jne jne.
Karkeasti ottaen olio-ohjelmointi on eräs (monessa yhteydessä hyväksi todettu) lähestymistapa ohjelmointiin ja ohjelmistosuunnitteluun.
RQ:n postaama suomenkielisen Wikipedian artikkeli on mielestäni aika hyvä. Varsinkin tuo johdantokappale sekä "Olio-ohjelmoinnin periaatteita" sisältävät asiaa yleistajuisessa muodossa. Monien muiden kappaleiden jargoni, kuten
http://fi.wikipedia.org/wiki/Olio-ohjelmointi:
Oliota käytetään ohjelmistosuunnittelussa esittämään jonkun abstraktin tai reaalimaailman käsitteen ilmentymää ohjelmistossa.
tuskin aukeaa, jos olio-ohjelmointia ei itse ole harjoittanut.
tajusin tosta groovybin esimerkistä
Mielestäni tuo groovyb:n esimerkki on kuitenkin jokseenkin huono/vajavainen, koska tuollaisen voisi tehdä täysin ilman oliohjelmointiakin monissa kielissä esim. structilla. (tällöin ehkä "new" jäisi pois)
Yleensä olioissa on erilaisten tietojen säilyttämisen lisäksi jotain toiminnallisuutta (metodeja), eli ne osaavat myös tehdä jotain. Toki olioita voi käyttää myös pelkkinä tietovarastoina, mutta mielestäni pelkkä olioiden nimellinen käyttö ei ole olio-ohjelmointia.
joo anteeks tää pilkunviilaus mutta tarkotitko groovyb
Aihe on jo aika vanha, joten et voi enää vastata siihen.