Konstruktori

Konstruktori eli rakentaja tai muodostin on olio-ohjelmoinnissa käytetty termi luokan erikoistyyppiselle metodille, joka sallii olion konfiguroimisen välittömästi sen luomisen yhteydessä. Konstruktorit ottavat yleensä parametreinaan arvoja, joita se asettaa luodun olion jäsenmuuttujien arvoiksi, valmistellakseen olion käyttöä varten, mutta se voidaan myös kirjoittaa olemaan ottamatta lainkaan ulkoisia parametreja.

Konstruktori muistuttaa instanssimetodia, mutta toisin kuin metodilla, rakentajalla ei ole selkeää palautusarvoa, se ei ole implisiittisesti periytynyt ja sitä yleensä koskevat erityiset säännöt näkyvyysmääreiden kohdalla. Konstruktorit nimetään useimmiten samalla nimellä kuin luokat, joista ne löytyvät. Konstruktori alustaa olion muuttujat sekä rajaa olion tilaan liittyvät tiedot.

Useimmat ohjelmointikielet sallivat konstruktorin kuormituksen, joka tarkoittaa useamman samalla nimellä olevan konstruktorin kirjoittamista, jotka kuitenkin saavat argumentteinaan eri tyyppiset tai eri määrän parametreja, tällöin sallien luokan instanssien luomisen käyttäen eri parametreja.

Konstruktori tyypit 
Olio-ohjelmoinnissa on useita erilaisia konstruktorityyppejä, joista jokaisella on omat ainutlaatuiset ominaisuutensa:

Oletuskonstruktorit 
Olio-ohjelmointikielissä (kuten Javassa), kun ohjelmoija ei eksplisiittisesti määrittele konstruktoria, kääntäjä luo sellaisen. Periaatteessa oletuskonstruktorit asettavat tiedot oletusarvoihin. Yleensä se on nullary konstruktori, jota voidaan kutsua ilman argumentteja. Lisäksi oletuskonstruktori puuttuu lähdekooditiedostosta ja se luodaan .class-tiedostoon käännösvaiheessa.

Parametroidut konstruktorit 
Konstruktoria, joka ottaa yhden tai useamman argumentin, kutsutaan parametroiduiksi konstruktoriksi. Parametrisoidun konstruktorin käytettäessä konstruktorifunktion on hyväksyttävä alkuarvot argumenteiksi. Joissakin olio-ohjelmointikielissä parametrisoitu konstruktori voidaan kutsua kahdella eri tavalla: eksplisiittisesti ja implisiittisesti. Javassa eksplisiittisen kutsun aikana käytetään "new" avainsanaa ja vaaditut arvot välitetään argumentteina konstruktorille. Implisiitti (eli shorthand) menetelmä toisaalta parantaa suuresti syntaksin tiiviyttä ja koodin luettavuutta.

Kopiomuodostimet 
Erityinen konstruktorityyppi, jota käytetään uuden olion luomiseen saman luokan olemassa olevan olion kopiona, kutsutaan kopiomuodostimeksi. Kopiomuodostin ottaa yleensä viitteen saman luokan olioon argumenttina, ja sen yleinen tavoite on luoda identtinen kopio argumentiksi otetusta oliosta. Javassa toinen tapa kopioida olio on Cloneable – käyttöliittymän toteuttamisen kautta, joka on matalan tason kopiointitekniikka.

Muuntorakentajat 
Jotkut olio-ohjelmointikielet (ensisijaisesti C++) sisältävät myös muuntosrakentajia, joiden avulla kääntäjä voi implisiittisesti luoda luokkaan kuuluvan olion toisesta tyypistä. Sen lisäksi, muuntorakentajia voidaan kutsua myös eksplisiittisesti.

Lähteet 

Olio-ohjelmointi