Kapselointi on yksi kolmesta pääasiallisestaolio-ohjelmoinnin (OOP) ominaisuudet. Kaksi muuta ovat polymorfismi ja perimä. Yhdessä ne muodostavat OOP-kannan, joka määrittelee laajan valikoiman mahdollisuuksia kirjoittaa ohjelmia eri kielillä käyttämällä näitä kolmea periaatetta. Objektisuuntautuneita kieliä puolestaan vaaditaan seuraamaan niitä selvästi.
OOP-perusteet
Objektisuuntautunut ohjelmointi seisoo maailmankaikkeuden kolmella pylväällä:
- Polymorfismiin, joka vastaa kysymykseen siitä, kuinka tietty ohjelmointikieli tulkitsee toisiinsa liittyviä esineitä samalla tavalla.
- Perintö, joka antaa vastauksen koodin stimulointiin toistuvasti.
- Kapselointi, joka on vastaus kysymykseen siitä, miten toteutuksen salaaminen tapahtuu, ja siten tietojen eheyden säilyttämiseen.
terminologia
Kapselointi (ohjelmointi) onkäyttöoikeuksien muokkainten käyttö piilottaa ohjelmakoodin osat loppukäyttäjältä. Sillä puolestaan tarkoitetaan kehittäjää tai perintöobjektia.
"Kapseloinnin" käsitteen ydin
Määritelmä määrittelee sen kapseloinnin allapiilota ohjelmakoodi kokonaan tai osittain. "Kapseloinnin" käsitteen ydin on manipuloida pääsymuuntajia. Tämä tarkoittaa, että kehittäjä itse päättää, mitkä ominaisuudet, menetelmät ja luokat ovat avoinna asiakasluokalle ja mitkä ovat piilotettuja.
Pääsymuuntajat
- julkinen ("julkinen" - julkinen, avoin, pääsy) - pääsy sekä nykyisille esineille ja luokille että ulkomaailmalle;
- yksityinen ("yksityinen" - yksityinen, yksityinen, piilotettu käyttöoikeus) - suljettu pääsy, jonka ydin on täysin vastakkainen edellisen kanssa. Tarjoaa pääsyn vain nykyiselle luokalle;
- suojattu ("suojattu" - suojattu, puoliksi piilotettu, käyttöoikeus) - nykyisen luokan ja sen johdannaisten käyttöoikeus;
- oletuksena - määrittelemätön pääsymuokkain merkitsee, että kenttä / menetelmä on näkyvissä koko nykyisen luokkapaketin kohdalla.
C #: ssä ("C Sharp") on yllä olevien lisäksi (jälkimmäistä lukuun ottamatta) myös muita modifikaattoreita:
- sisäinen ("sisäinen" - sisäinen käyttöoikeus) - yleinen saatavuus nykyisessä kokoelmassa, suljettu pääsy kaikkiin muihin tapauksiin;
- sisäisesti suojattu ("sisäinen suojattu" - sisäinen turvallinen pääsy) - kahden muuntajan yhdistelmä yhdeksi, jossa molempien ominaisuudet ilmenevät.
Kapseloinnin rooli
Kotelointimekanismi eliminoi ulkoisen vaikutuksen ohjelmakoodiin ja siihen sisältyvän datan väärän käytön. Tämä johtuu koodin ja datan yhdistämisestä yhdeksi kokonaisuudeksi.
Kohde ja kapselointi
Ohjelmistomoduulin jakoodiin upotettua tietoa ohjelmoinnissa kutsutaan objektiksi. Sen merkitys kapselointiin on, että juuri sellainen tekniikka mahdollistaa ylläpitää ja varmistaa tarkasteltavana olevan mekanismin yhtenäisen toiminnan.
Kapseloinnin etu
Kapselointi on tapa yksinkertaistaa koodausprosessia. Lukuisat koodirivit jäävät kulissien taakse, kun taas pääluokassa työskennellään esineiden kanssa.
Tietosuojaidea
Kapselointi on myös mekanismi, jokatoteuttaa tietosuojan ajatuksen. Objektisuuntautuneen ohjelmoinnin logiikka perustuu siihen tosiseikkaan, että yksityisen (yksityinen, yksityinen) pääsymuokkaaja piilottaa suurimman osan tiedoista tai suojattu (suojattu). Ulkomailla asiakas ei vahingossa tai tahalla vahingoita ohjelmistomoduulin toteutusta. Koska tämän tekeminen on todella helppoa, edes tarkoituksella, kapselointi on erittäin hyvä periaate.
Kotelointiyksiköt
Luokka kapseloinnin pääyksikkönä,kuvaa tietoja ja sisältää koodin, joka voi toimia näillä tiedoilla. Se on myös perusta rakennukselle. Jälkimmäinen puolestaan esitetään luokan esimerkkinä.
- jäsenet ovat luokkaan sisältyvät koodi ja tiedot;
- kentät tai esiintymämuuttujat - tämä on luokan määrittelemän datan nimi;
- jäsentoiminnot - ne sisältävät itse koodin. Jäsentoiminnot on yleinen nimi. Erityistapaus on menetelmät.
Tapaustutkimuksen kapselointi
Kapselointi (ohjelmointi) esimerkki:
* Huomaa:
kuvaus on kuvaus menetelmästä / ominaisuudesta / muuttujasta, ts. kommentoimalla sitä, mitä ohjelmassa todella tapahtuu. Osoitettu avaamalla / sulkemalla tunnisteet
käyttämällä järjestelmää;
nimitila OOPLibrary.Auto
{
///
/// Tämä luokka on tarkoitettu kuvaamaan auton ominaisuuksia ja vaikutuksia
///
julkisen luokan auto
{
///
/// Muuttuja, joka on luotu kirjoittamaan sille kuinka vanha auto on, koska kehittäjä pitää tarpeettomana häiritä tätä ominaisuutta
/// se on merkitty yksityisellä muokkaimella, ts. yksityisellä, yksityisellä käyttöoikeudella (katso kuvaus yllä).
///
yksityinen int _age;
///
/// Boolen muuttuja (vain kaksi mahdollista arvoa - joko kyllä vai ei), joka kuvaa, onko auto parhaillaan liikkeellä
/// Sen ei myöskään pitäisi olla avoin loppukäyttäjälle, kuka hän tahansa onkin. Siksi tälle muuttujalle määritetään myös yksityisen pääsyn modifikaattori "yksityinen"
///
yksityinen bool _isMoving;
///
/// Tämän merkkijonomuuttujan tulisi sisältää tietoja auton väristä. Se voi muuttua ulkoisista vaikutuksista
/// siksi "julkinen" avoimen pääsyn muokkaaja on valittu Väri-asetukseksi.
///
julkinen merkkijono Väri;
///
/// Tässä tapauksessa oletetaan, että myös auton nimeä voidaan muuttaa
/// julkinen muokkaaja on määritetty (avoin pääsy kaikille luokasta tai kokoonpanosta riippumatta).
///
julkinen merkkijono Nimi;
///
/// Luokan rakentaja avataan ja kaikki muuttujilla ilmaistut ja hieman aikaisemmin asetetut ominaisuudet saavat arvonsa
///
julkinen auto ()
{
ikä = 5;
_isMoving = väärä;
Väri = "violetti";
Nimi = "Skoda Octavia";
}
///
/// Menetelmä toteuttaa auton ikäarvon palautuksen. Miksi tämä on välttämätöntä?
/// yksityisen pääsyn modifikaattori estää asiakasta muokkaamasta sitä.
///
/// Palauttaa auton iän.
julkinen merkkijono GetAge ()
{
return "Valittu kone" + _age + "on vuosia vanha.";
}
///
/// Jos auto ei liiku, tämä menetelmätoteuttaa liikkeen alun. Muuttujalle tehdään tarkistus, joka ilmaisee auton tilan (ajaa vai ei), ja tulosten mukaan suoritetaan asianmukainen toiminto / vastaava viesti näytetään.
///
public void Aloita ()
{
jos (_liikkuu)
{
Console.WriteLine ("Liike on jo alkanut");
}
muu
{
_liikkuu = tosi;
Console.WriteLine ("Valmis, huomiota .. Mennään!");
}
}
///
/// Jos liike aloitettiin, tämä menetelmä pysäyttää sen. Sama ohjelmalogiikka kuin edellisessä tarkastellussa tapauksessa.
///
public void Pysäytä ()
{
jos (_liikkuu)
{
_isMoving = väärä;
Console.WriteLine ("Pysäytä, auto");
}
muu
{
Console.WriteLine ("Virhe. Auto seisoo jo paikallaan, ei liiku");
}
}
///
/// Kääntyy vasemmalle, jos ajoneuvo liikkuu
///
public void MoveLeft ()
{
jos (_liikkuu)
{
Console.WriteLine ("Kääntyi vasemmalle");
}
muu
{
Console.WriteLine ("Virhe. Auto seisoo paikallaan. Kääntötoiminto ei ole tällä hetkellä käytettävissä");
}
}
///
/// Samanlainen menetelmä oikealle kääntymisellä
///
public void MoveRight ()
{
jos (_liikkuu)
{
Console.WriteLine ("Oikea käännös onnistui onnistuneesti");
}
muu
{
Console.WriteLine ("Virhe. Auto ei ole vielä liikkunut. Oikealle kääntyminen on tällä hetkellä toiminto, jota ei voida suorittaa.");
}
}
}
}