Teknologian jakaminen

[C]Paketti

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Pakkauksen määritelmä

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.

2. Pakkauksen tarkoitus

  1. tietojen piilottaminen: Suojaa kohteen tiedot suoralta ulkoiselta pääsyltä ja estä tietojen laiton muuttaminen.
  2. Selkeä käyttöliittymä: paljastamalla rajoitetut rajapinnat (menetelmät), ulkoinen koodi voi olla vuorovaikutuksessa kohteen kanssa vain näiden rajapintojen kautta, mikä selventää objektin käyttäytymistä.
  3. Modulaarinen: Kapseloi liittyvät tiedot ja toiminnot yhteen parantaaksesi koodin modulaarisuutta ja uudelleenkäytettävyyttä.

3. Menetelmät kapseloinnin toteuttamiseksi C++:ssa

  1. 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.

  2. 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ä.
  3. 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.

4. Esimerkki

Alla on yksinkertainen C++-kääreesimerkki, joka näyttää aRectangle(Suorakaiteen muotoisen) luokan toteutus.

  1. #include <iostream>
  2. class Rectangle {
  3. private:
  4. double width; // 矩形的宽
  5. double height; // 矩形的高
  6. public:
  7. // 构造函数
  8. Rectangle(double w, double h) : width(w), height(h) {}
  9. // 设置宽度
  10. void setWidth(double w) {
  11. width = w;
  12. }
  13. // 获取宽度
  14. double getWidth() const {
  15. return width;
  16. }
  17. // 设置高度
  18. void setHeight(double h) {
  19. height = h;
  20. }
  21. // 获取高度
  22. double getHeight() const {
  23. return height;
  24. }
  25. // 计算面积
  26. double getArea() const {
  27. return width * height;
  28. }
  29. };
  30. int main() {
  31. Rectangle rect(5.0, 10.0);
  32. std::cout << "Rectangle area: " << rect.getArea() << std::endl;
  33. rect.setWidth(7.0);
  34. std::cout << "New Rectangle area: " << rect.getArea() << std::endl;
  35. return 0;
  36. }

Tässä esimerkissäRectangleyleistäwidthjaheight Ominaisuudet tehdään yksityisiksi, eikä ulkoinen koodi pääse niihin suoraan käsiksi.Sen sijaan käytämme julkisia menetelmiä, kutensetWidthgetHeightjagetArea ) 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.