Zapuzdrenie v C ++ (s príkladmi)

V tomto tutoriále sa pomocou príkladov dozvieme o zapuzdrení v C ++.

Zapuzdrenie je jednou z kľúčových vlastností objektovo orientovaného programovania. Zahŕňa to združovanie dátových členov a funkcií do jednej triedy.

Spojenie podobných dátových členov a funkcií vo vnútri triedy tiež pomáha pri skrývaní údajov.

Zapuzdrenie v C ++

Zapuzdrenie je vo všeobecnosti proces zabalenia podobného kódu na jedno miesto.

V C ++ môžeme spojiť dátové členy a funkcie, ktoré fungujú spoločne v jednej triede. Napríklad,

 class Rectangle ( public: int length; int breadth; int getArea() ( return length * breadth; ) );

Vo vyššie uvedenom programe funkcia getArea()počíta plochu obdĺžnika. Na výpočet plochy je potrebná dĺžka a šírka.

Preto sú dátové členy (dĺžka a šírka) a funkcia getArea()v Rectangletriede spojené.

Zapuzdrenie v C ++

Príklad 1: Zapuzdrenie C ++

 // Program to calculate the area of a rectangle #include using namespace std; class Rectangle ( public: // Variables required for area calculation int length; int breadth; // Constructor to initialize variables Rectangle(int len, int brth) : length(len), breadth(brth) () // Function to calculate area int getArea() ( return length * breadth; ) ); int main() ( // Create object of Rectangle class Rectangle rect(8, 6); // Call getArea() function cout << "Area = " << rect.getArea(); return 0; )

Výkon

 Plocha = 48

Vo vyššie uvedenom príklade počítame plochu obdĺžnika.

Pre výpočet plochy, potrebujeme dve premenné: krížom krážom a funkcie: getArea(). Preto sme tieto premenné spojili do jednej triedy s názvom Obdĺžnik.

Tu sú k premenným a funkciám prístupné aj z iných tried. Nejde teda o skrývanie údajov .

Toto je iba zapuzdrenie . Podobné kódy len držíme pohromade.

Poznámka: Ľudia často považujú zapuzdrenie za skrytie údajov, ale nie je to tak úplne pravda.

Zapuzdrenie znamená spojenie podobných polí a metód dohromady. To možno použiť na dosiahnutie skrytia údajov. Samotné zapuzdrenie neskrýva údaje.

Prečo zapuzdrenie?

  • V C ++ nám zapuzdrenie pomáha udržiavať súvisiace údaje a funkcie pohromade, čo robí náš kód čistejším a ľahšie čitateľným.
    • Pomáha kontrolovať zmeny našich dátových členov.
      Zvážte situáciu, keď chceme, aby pole dĺžky v triede nebolo záporné. Tu môžeme premennú dĺžky urobiť súkromnou a použiť logiku vo vnútri metódy setAge(). Napríklad,
       class Rectangle ( private: int age; public: void setLength(int len) ( if (len>= 0) length = len; ) );
    • Funkcie getter a setter poskytujú členom našej triedy prístup iba na čítanie alebo iba na zápis . Napríklad,
       getLength() // provides read-only access setLength() // provides write-only access
    • Pomáha oddeliť komponenty systému. Napríklad môžeme kód zapuzdriť do viacerých zväzkov.
      Tieto oddelené komponenty (zväzky) je možné vyvíjať, testovať a ladiť nezávisle a súčasne. A akékoľvek zmeny v konkrétnom komponente nemajú žiadny vplyv na ostatné komponenty.
    • Skrývanie údajov môžeme dosiahnuť aj pomocou zapuzdrenia. Ak v príklade 1 zmeníme premenné dĺžky a šírky na privatealebo protected, potom je prístup k týmto poliam obmedzený.
      A sú skryté pred vonkajšími triedami. Toto sa nazýva skrývanie údajov .

    Skrývanie údajov

    Skrývanie údajov je spôsob obmedzovania prístupu našich dátových členov skrytím podrobností implementácie. Zapuzdrenie tiež poskytuje spôsob skrývania údajov.

    Na dosiahnutie skrytia dát v C ++ môžeme použiť modifikátory prístupu. Napríklad,

    Príklad 2: Skrývanie údajov C ++ pomocou súkromného špecifikátora

     #include using namespace std; class Rectangle ( private: // Variables required for area calculation int length; int breadth; public: // Setter function for length void setLength(int len) ( length = len; ) // Setter function for breadth void setBreadth(int brth) ( breadth = brth; ) // Getter function for length int getLength() ( return length; ) // Getter function for breadth int getBreadth() ( return breadth; ) // Function to calculate area int getArea() ( return length * breadth; ) ); int main() ( // Create object of Rectangle class Rectangle rectangle1; // Initialize length using Setter function rectangle1.setLength(8); // Initialize breadth using Setter function rectangle1.setBreadth(6); // Access length using Getter function cout << "Length = " << rectangle1.getLength() << endl; // Access breadth using Getter function cout << "Breadth = " << rectangle1.getBreadth() << endl; // Call getArea() function cout << "Area = " << rectangle1.getArea(); return 0; )

    Výkon

     Dĺžka = 8 Šírka = 6 Plocha = 48

    Tu sme vytvorili premenné dĺžky a šírky private.

    To znamená, že k týmto premenným nie je možné priamo získať prístup mimo Rectangletriedy.

    Pre prístup k týmto súkromným premenné, ktoré sme použili publicfunkcie setLength(), getLength(), setBreadth()a getBreadth(). Nazývajú sa funkcie getra a setra.

    Nastavením súkromných premenných sme mohli obmedziť neoprávnený prístup mimo triedy. Toto je skrývanie údajov .

    Ak sa pokúsime získať prístup k premenným z main()triedy, zobrazí sa chyba.

     // error: rectangle1.length is inaccessible rectangle1.length = 8; // error: rectangle1.breadth is inaccessible rectangle1.length = 6;

Zaujímavé články...