Missä tilanteessa olio-ohjelmointi on parempi (sanan jollain merkityksellä) vaihtoehto funktionaaliselle ohjelmoinnille. Enkä tarkoita tietorakenteita yleisesti, vaan oliot nimenomaisesti.
Ei voi antaa kattavana esimerkkinä tiettyjä tilanteita, vaan paras ratkaisu on hyvin tapauskohtainen ja riippuu myös enemmän tekijän taidoista kuin valituista ohjelmointityylistä. Eli jos ei osaa olio-ohjelmointia, luultavasti silloin itse saa paremman tuloksen jollain muulla tavalla.
Funktionaalinen ohjelmointi on sitten eri asia kuin funktioiden käyttäminen.
Olio-paradigma on vallitseva ohjelmointiparadigma tällä hetkellä tietojenkäslitteytieteessä.
Olio - ohjelmoinnissa luodaan tietotyyppi, joka mallintaa jotain reaalimaailman asiaa, esimerkiksi Auto,ja purettuna top-down -menetelmällä jossa sitten on Moottori / Renkaat / Matkustajahytti / Ohjausjärjestelmä, ja sitten, kun luot esimerkiksi Auto - tietotyypin, luot sinne noiden osien tietotyyppien oliomuuttujat, ja koodia on kätevämpi ylläpitää, jos tulee esimerkiksi moottoriin jokin uusi ominaisuus tai muokataan vanhoja, niin jos tietotyypit on hyvin suunniteltu etukäteen, koodin ylläpito voi olla helpompaa.
Olio-ohjelmoinnissakin on funktionaalisen ohjelmoinnin piirteitä, kuin siinä on myös proseduraalisen ohjelmoinnin piirteitä.
Olio-ohjelmoinnissa tietotyypin implementoinnissa on toteutettuna tavallisesti kapselointi-menetelmä, että suoraan tietotyypin muuttujiin ei päästä käsiksi ulkopuolelta, vaan niille suunniteltuilla asetus/saanti -metodeilla, eli attribuutit ovat suojattuja ulkopuolisilta kutsuilta, ja metoditkaan ole staattisia.
Helppo yhtyä tuohon Metabolixin kommenttiin, että tapauskohtaisesti jompi kumpi voi toimia paremmin, ja tavallisesti ohjelmoijilla on hallussa useamman paradigman ymmärrystä ja käytännön osaamista.
Olio-ohjelmoinnin edut versus funktionaaliselle ohjelmoinille on lähinnä mielestäni siinä, että olio-pohjaisessa toteutuksessa koodi on selkeämmin jäsenneltävissä, se saattaa olla modulaarisempaa, uudelleenkäytettävämpää, ja vaatia vähemmän tietyiltä osin näpertelyä, jos koodi on hyvin suunniteltu etukäteen, dokumentoitu, mikäli kyseessä on laaja ohjelmoinsto.
Aihe on jo aika vanha, joten et voi enää vastata siihen.