Olio-ohjelmointi
Oliopohjainen ohjelmointi (OOP) on tapa kirjoittaa tietokoneohjelmia, jossa käytetään "objektien" ideaa tietojen ja menetelmien esittämiseen. Tavallisesti tietokoneohjelmat olivat vain luettelo tietokoneelle annetuista ohjeista, jotka käskivät tietokonetta tekemään tietyt asiat tietyllä tavalla, mitä kutsutaan proseduraaliseksi ohjelmoinniksi. Oliokeskeisessä ohjelmoinnissa tietokoneohjelmat käyttävät kuitenkin objekteja, jotka keskustelevat keskenään ja muuttavat objektien tietoja, jotta ne toimisivat käyttäjän haluamalla tavalla. Lisäksi oliokeskeisen ohjelmoinnin suunnittelutapa auttaa kehittäjää, sillä sen avulla koodia voidaan helposti käyttää uudelleen ohjelman muissa osissa tai jopa muiden ihmisten toimesta.
Useimmat ohjelmointikielet ovat sekoitus erilaisia tapoja kirjoittaa tietokoneohjelmia. Esimerkiksi Pythonissa tietokoneohjelmia voidaan kirjoittaa sekä olio- että proseduraalisesti. On olemassa monia ohjelmointikieliä, joiden avulla tietokoneohjelmia voi kirjoittaa OOP:lla, Joitakin tällaisia ohjelmointikieliä ovat esimerkiksi: C++, Java, Ruby, Perl, Emarald, Sapphire, PHP, Python jne.
Ominaisuudet
Oliopohjaisen ohjelmoinnin perusajatuksena on, että kaikki on objekteja. Objektit voivat kuitenkin olla erityyppisiä:
- Muuttujiin voidaan tallentaa erityyppisiä tietoja (tai dataa), joita ohjelmointikieli tukee. Esimerkkejä ovat kokonaislukutietotyyppi ja listojen tietorakenne. Muuttujien idea on jo olemassa proseduraalisista ohjelmointikielistä. Oliokeskeisessä ohjelmoinnissa muuttujat tunnetaan pääasiassa attribuutteina.
- Proseduurit (tunnetaan myös nimellä funktiot, menetelmät tai rutiinit) ovat luettelo ohjeista, jotka käskevät tietokonetta ottamaan syötteen, suorittamaan joitakin laskutoimituksia tai muuttamaan tietoja ja palauttamaan tulosteen käyttäjälle. Proseduurit ovat myös ajatus, joka on jo saatavilla proseduraalisista ohjelmointikielistä. Oliosuuntautuneessa ohjelmoinnissa proseduurit tunnetaan pääasiassa metodeina.
- Luokat ovat kokoelma erilaisia muuttujia ja proseduureja. Luokat keskustelevat yleensä keskenään, jotta tietoihin voidaan tehdä muutoksia käyttäjän haluamalla tavalla.
Objektit on termi, jota käytetään viittaamaan luokkien instansseihin.
Esimerkkejä
Alla olevissa esimerkeissä luodaan luokka nimeltä Human
. Tämä luokka sisältää attribuutit name
(henkilön nimi) ja friend
(ystävän nimi). Jokainen Human-luokan metodi sisältää luettelon ohjeista, joissa käytetään sekä name- että friend-attribuutteja.
Python
Tämä koodi on Python-kielellä.
Java
Tämä koodi on Java-kielellä.
Ihmisluokka
Menetelmä, jolla puhutaan yllä olevalle Human-luokalle
Kritiikki
Vaikka oliokeskeinen ohjelmointi on suosittua, monet ihmiset pitävät sitä huonona ja arvostelevat sitä.
- Luca Cardelli kirjoitti artikkelin "Bad Engineering Properties of Object-Oriented Languages".
- Richard Stallman kirjoitti vuonna 1995: "OOP:n lisääminen Emacsiin ei ole selkeä parannus; käytin OOP:tä työskennellessäni Lisp Machine -ikkunajärjestelmien parissa, ja olen eri mieltä tavanomaisesta näkemyksestä, jonka mukaan se on parempi tapa ohjelmoida."
- Potokin ja muiden tekemän tutkimuksen mukaan OOP- ja proseduraalisten lähestymistapojen tuottavuusero on hyvin pieni.
- Christopher J. Date sanoi, että OOP:n vertaaminen muihin asioihin, erityisesti siihen, miten OOP ja toinen asia liittyvät toisiinsa, on vaikeaa, koska ihmiset eivät ole yhtä mieltä OOP:n merkityksestä.
- Alexander Stepanov ehdotti, että OOP antaa näkökulman, joka on rajallinen matematiikan osalta, ja kutsui sitä "melkein yhtä suureksi huijaukseksi kuin tekoälyä".
- Paul Graham, menestynyt internet-myyjä ja ohjelmoija, on ehdottanut, että OOP:n tarkoitus on toimia paimennusmekanismina, joka estää keskiverto-ohjelmoijia keskivertojärjestöissä tekemästä "liikaa vahinkoa". Tämä hidastaa myös nopeampia ja parempia ohjelmoijia, jotka osaavat tehdä asioita tehokkaammin ja kompaktimmin. [1]
Kysymyksiä ja vastauksia
K: Mitä on objektikeskeinen ohjelmointi?
V: Oliopohjainen ohjelmointi on tapa kirjoittaa tietokoneohjelmia käyttämällä "objekteja" datan ja metodien kuvaamiseen.
K: Miten olio-ohjelmointi eroaa proseduraalisesta ohjelmoinnista?
V: Proseduraalisessa ohjelmoinnissa tietokoneohjelmat ovat luettelo tietokoneelle annettavista ohjeista, jotka käskevät tietokonetta tekemään tietyt asiat tietyllä tavalla. Oliokeskeisessä ohjelmoinnissa tietokoneohjelmat käyttävät objekteja, jotka keskustelevat keskenään muuttaakseen objektien tietoja ja toimiakseen käyttäjän haluamalla tavalla.
K: Miten oliokeskeinen ohjelmointi hyödyttää kehittäjiä?
V: Oliosuuntautunut ohjelmointi mahdollistaa sen, että koodia voidaan helposti käyttää uudelleen ohjelman muissa osissa tai jopa muiden ihmisten toimesta.
K: Mistä Python-ohjelmointikieli tunnetaan?
V: Python mahdollistaa tietokoneohjelmien kirjoittamisen sekä olio- että proseduraalisella ohjelmoinnilla.
K: Voitko antaa esimerkkejä ohjelmointikielistä, joiden avulla tietokoneohjelmia voi kirjoittaa oliosuuntautuneessa ohjelmoinnissa?
V: Ohjelmointikieliä, joilla voi kirjoittaa tietokoneohjelmia olio-ohjelmoinnilla, ovat esimerkiksi C++, Java, Ruby, Perl, Emarald, Sapphire, PHP, Python ja C#.
K: Mitä objektit ovat objektikeskeisessä ohjelmoinnissa?
V: Oliot ovat oliokeskeisessä ohjelmoinnissa kokonaisuuksia, jotka sisältävät dataa ja metodeja.
K: Miten objektit toimivat olio-ohjelmoinnissa?
V: Oliot ovat vuorovaikutuksessa toistensa kanssa muuttaakseen kyseisissä olioissa olevia tietoja ja toimiakseen käyttäjän haluamalla tavalla.