Ohjelmoinnin perusteet

Yleiskatsaus

Objektipainotteinen ohjelmointi (OOP, Object-oriented programming) on ohjelmointiparadigma, joka perustuu käsitteeseen ”objekteista”, jotka voivat sisältää dataa kenttien muodossa, jotka usein tunnetaan attribuutteina, ja koodia proseduureina, jotka usein tunnetaan menetelminä. Objektien ominaispiirteenä on, että objektin proseduurit voivat käyttää ja usein myös muuttaa sen objektin tietokenttiä, johon ne on liitetty (objekteilla on käsite ”this” tai ”self”). OOP-kieliä on huomattavan monenlaisia, mutta suosituimmat ovat luokkapohjaisia, mikä tarkoittaa, että objektit ovat luokkien instansseja, jotka tyypillisesti myös määrittelevät niiden tyypin.

Keskustelu

Tähän asti olemme keskittyneet proseduraaliseen ohjelmointiin. Strukturoituun ohjelmointiin perustuen proseduurit (rutiinit, aliohjelmat tai funktiot) sisältävät sarjan suoritettavia laskentavaiheita. Mitä tahansa proseduuria voidaan kutsua missä tahansa vaiheessa ohjelman suoritusta, myös muiden proseduurien tai itsensä toimesta. Proseduraalisessa ohjelmoinnissa keskitytään ohjelmointitehtävän pilkkomiseen muuttujien, tietorakenteiden ja aliohjelmien kokoelmaksi. Pieniä ohjelmia ja skriptejä on yleensä helpompi kehittää käyttämällä yksinkertaista proseduraalista lähestymistapaa.

Objektipainotteinen ohjelmointi sen sijaan pilkkoo ohjelmointitehtävän objekteiksi, jotka paljastavat käyttäytymisen (metodit) ja tiedot (jäsenet tai attribuutit) rajapintojen avulla. Tärkein ero on se, että kun proseduraalinen ohjelmointi käyttää proseduureja erillisten tietorakenteiden käyttämiseen, oliokeskeinen ohjelmointi niputtaa nämä kaksi yhteen, joten ”objekti”, joka on luokan instanssi, toimii ”omalla” tietorakenteellaan. Suuremmat ohjelmat hyötyvät paremmasta koodin ja datan eristämisestä ja uudelleenkäytöstä, joita oliokeskeinen lähestymistapa tarjoaa.

Objekteja ja luokkia suunnitellaan usein edustamaan reaalimaailman objekteja. Tarkastellaan ovea esimerkkinä reaalimaailman objektista. Useimmilla ovilla on rajoitettu toiminnallisuus. Ne voidaan avata ja sulkea sekä lukita ja avata lukitus. Proseduraalisessa ohjelmoinnissa voisimme suunnitella funktioita oven avaamiseen, sulkemiseen, lukitsemiseen ja lukituksen avaamiseen, kuten:

Procedural Programming - FunctionsOpenDoor(door)CloseDoor(door)LockDoor(door)UnlockDoor(door)

Objektipainotteinen ohjelmointi yhdistää koodin ja datan niin, että sen sijaan, että erilliset funktiot toimisivat oviin, suunnittelemme ovia, joilla on metodeja, jotka voivat toimia itseensä. Metodit edustavat jotain, mitä objekti voi tehdä, ja ne määritellään tyypillisesti verbeillä. Oliosuuntautunut ovien pseudokoodi voisi näyttää seuraavalta:

Object-Oriented Programming - Methodsdoor.Open()door.Close()door.Lock()door.Unlock()

Objekteilla voi olla myös attribuutteja, jotain, mitä objekti on tai mitä sillä on, ja ne määritellään tyypillisesti substantiivien tai adjektiivien avulla. Oven attribuutteja voisivat olla esimerkiksi:

Object-Oriented Programming - Attributesdoor.Heightdoor.Widthdoor.Colordoor.Closeddoor.Locked

Kun kirjoitamme koodia määrittelemään geneerisen oven, luomme oviluokan. Oviluokka sisältäisi kaikki metodit, joita ovi voi suorittaa, ja kaikki attribuutit, joita ovella voi olla. Luomme sitten luokan instansseja (objekteja) edustamaan tiettyjä ovia, kuten talon ulko-ovea, takaovea tai huoneenovea tai auton vasenta ja oikeaa ovea.

Avaintermit

attribuutti Määritelmä, joka määrittelee objektin ominaisuuden. luokka Laajennettavissa oleva ohjelmakoodimalli objektien luomiseksi, joka tarjoaa alkuarvot tilalle (jäsenmuuttujat) ja käyttäytymisen toteutukset (jäsenfunktiot tai metodit). instance :objektin konkreettinen esiintymä. method Määrittely, joka määrittelee objektin toimenpiteen tai käyttäytymisen. object Luokan tietty instanssi, jossa objekti voi olla muuttujien, funktioiden ja tietorakenteiden yhdistelmä. this, self tai Me Avainsanat, joita käytetään joissakin tietokoneohjelmointikielissä viittaamaan objektiin, luokkaan tai muuhun kokonaisuuteen, jonka osa parhaillaan suoritettava koodi on.

Vastaa

Sähköpostiosoitettasi ei julkaista.