Tähän artikkeliin tai osioon ei ole merkitty lähteitä, joten tiedot kannattaa tarkistaa muista tietolähteistä. Voit auttaa Wikipediaa lisäämällä artikkeliin tarkistettavissa olevia lähteitä ja merkitsemällä ne ohjeen mukaan. |
Kapselointi tarkoittaa ohjelmoinnissa yhteen kuuluvien tietojen ja toimintojen kokoamista yhdeksi kokonaisuudeksi. Olio-ohjelmoinnissa kapselointi tapahtuu usein kokoamalla muuttujat ja metodit luokaksi. Myös moduulit ja pakkaukset toimivat kapselointivälineinä.
Kapseloinnin tarkoituksena on yhteenkuuluvien asioiden kokoamisen lisäksi myös piilottaa toteutus moduulin tai luokan asiakkailta eli sen käyttäjiltä. Tarkoitus on siis tarjota käyttöön eräänlainen valmis ohjelmoinnin rakennuspalikka, jota voi käyttää ohjelman rakentamiseen tietämättä mitään (ja välittämättä) palikan sisäisestä toteutuksesta. Tämä edellyttää sitä, että moduulin tai luokan rajapinta on hyvin määritelty ja dokumentoitu.
Jotkin kielet, kuten Smalltalk ja Ruby, sallivat pääsyn vain objektin metodeilla, mutta useimmat muut kielet (kuten C++, C#, Delphi tai Java) tarjoavat ohjelmoijalle keinon hallita sitä, mitä piilotetaan. Yleensä se on toteutettu avainsanoilla, kuten "public" ja "private". ISO C++ -standardin mukaan pääsyoikeuksia voi rajoittaa kolmella tavalla: "protected", "private" ja "public" ja toteaa, että ne eivät "piilota mitään tietoa". Tietojen piilottaminen saavutetaan tarjoamalla käännetty lähdekoodin versio, joka on liitetty otsikkotiedostoon.
Yleiset rajoittavat avainsanat:
Kapselointi on mahdollista myös muissa kuin olio-ohjelmointikielessä. Esimerkiksi C-kielessä rakenne voidaan julistaa julkiseksi API:ksi (sovelluksen ohjelmointirajapinta) header-tiedostossa joukolle funktioita, jotka käsittelevät tietoja sisältävää kohteen dataosaa, jota API:n asiakkaat eivät voi käyttää “extern”-avainsanan avulla.
Syitä kapseloinnin käyttämiseen ovat mm.