2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Kapselointi on yksi olio-ohjelmoinnin (OOP) kolmesta perusominaisuudesta (kapselointi, periytyminen, polymorfismi). Se viittaa tietojen (ominaisuuksien) ja menetelmien (toimintojen) yhdistämiseen näiden tietojen käyttämiseksi itsenäiseksi yksiköksi (luokkiksi), objektin sisäisten yksityiskohtien piilottamiseen mahdollisimman paljon ja rajapinnan paljastamiseen vain ulkomaailmalle. Tämän tarkoituksena on suojata kohteen tietoja, estää ulkoista koodia pääsemästä suoraan kohteen sisäisiin tietorakenteisiin, vähentää virheitä ja yksinkertaistaa monimutkaisuutta.
Luokan käyttäminen : Kun määrität luokkaa, aseta datajäsenet (ominaisuudet) yksityisiksi tai suojatuiksi ja aseta menetelmät näiden tietojen käyttämiseksi julkisiksi. Tällä tavalla ulkoinen koodi ei pääse suoraan luokan yksityisiin jäseniin, vaan pääsee niihin vain epäsuorasti julkisten menetelmien kautta.
pääsyn muokkaaja:
public
: Käytettävissä millä tahansa ulkoisella koodilla.protected
: Voidaan käyttää vain itse luokassa ja johdetuissa luokissa (alaluokissa).private
: Voidaan käyttää vain itse luokassa, ei johdettujen luokkien sisällä.Rakentaja ja tuhoaja : Alusta objekti rakentajan kautta ja puhdista objektin käyttämät resurssit tuhoajan kautta. Ne ovat myös osa kapselointia, koska ne ohjaavat kohteen elinkaarta.
Alla on yksinkertainen C++-kääreesimerkki, joka näyttää aRectangle
(Suorakaiteen muotoisen) luokan toteutus.
- #include <iostream>
-
- class Rectangle {
- private:
- double width; // 矩形的宽
- double height; // 矩形的高
-
- public:
- // 构造函数
- Rectangle(double w, double h) : width(w), height(h) {}
-
- // 设置宽度
- void setWidth(double w) {
- width = w;
- }
-
- // 获取宽度
- double getWidth() const {
- return width;
- }
-
- // 设置高度
- void setHeight(double h) {
- height = h;
- }
-
- // 获取高度
- double getHeight() const {
- return height;
- }
-
- // 计算面积
- double getArea() const {
- return width * height;
- }
- };
-
- int main() {
- Rectangle rect(5.0, 10.0);
- std::cout << "Rectangle area: " << rect.getArea() << std::endl;
- rect.setWidth(7.0);
- std::cout << "New Rectangle area: " << rect.getArea() << std::endl;
- return 0;
- }
Tässä esimerkissäRectangle
yleistäwidth
jaheight
Ominaisuudet tehdään yksityisiksi, eikä ulkoinen koodi pääse niihin suoraan käsiksi.Sen sijaan käytämme julkisia menetelmiä, kutensetWidth
、getHeight
jagetArea
) päästäksesi ja muokataksesi näitä yksityisiä ominaisuuksia. Tämä menetelmä toteuttaa tietojen kapseloinnin ja tarjoaa selkeän käyttöliittymän ulkoiseen käyttöön.