C++ zapouzdření


Zapouzdření

Smyslem Encapsulation je zajistit, aby "citlivá" data byla před uživateli skryta. Abyste toho dosáhli, musíte proměnné/atributy třídy deklarovat jako private(nelze k nim přistupovat zvenčí třídy). Pokud chcete, aby ostatní četli nebo upravovali hodnotu soukromého člena, můžete poskytnout veřejné metody získávání a nastavení .


Přístup k soukromým členům

Chcete-li získat přístup k soukromému atributu, použijte veřejné metody „get“ a „set“:

Příklad

#include <iostream>
using namespace std;

class Employee {
  private:
    // Private attribute
    int salary;

  public:
    // Setter
    void setSalary(int s) {
      salary = s;
    }
    // Getter
    int getSalary() {
      return salary;
    }
};

int main() {
  Employee myObj;
  myObj.setSalary(50000);
  cout << myObj.getSalary();
  return 0;
}

Příklad vysvětlen

Atribut salaryje private, které mají omezený přístup.

Veřejná setSalary()metoda vezme parametr ( s) a přiřadí jej k salaryatributu (plat = s).

Metoda public getSalary()vrací hodnotu soukromého salaryatributu.

Uvnitř main()vytvoříme objekt Employeetřídy. Nyní můžeme pomocí setSalary()metody nastavit hodnotu soukromého atributu na 50000. Poté zavoláme getSalary()metodu na objektu, abychom vrátili hodnotu.


Proč zapouzdření?

  • Považuje se za dobrou praxi deklarovat atributy třídy jako soukromé (tak často, jak můžete). Zapouzdření zajišťuje lepší kontrolu nad vašimi daty, protože vy (nebo ostatní) můžete změnit jednu část kódu, aniž byste ovlivnili ostatní části
  • Zvýšená bezpečnost dat