CPP-101: Класове и обекти

Модификатори за достъп до членовете на класа

Капсулирането (скриването на информацията) е механизъм който предпазва вътрешното представяне на данните. В обектно-ориентирането програмиране капсулирането е основна техника, която се използва за разпределяне на отговорностите между различните части на програмата.

Класовете в C++ имат силно развит механизъм за скриване на информацията. В основата му са спецификаторите за достъп – public, private и protected. Чрез спецификаторите за достъп тялото на класа се разделя на секции – публична (public), скрита (private) и защитена (protected). В зависимост от това в коя секция е дефиниран даден член на класа, той се превръща съответно в публичен, скрит или защитен.

Публичните членове на класа са достъпни от всички точки на програмата.
Скритите членове на класа са достъпни само в член-функциите на класа и в приятелите на класа.
Защитените членове се държат като публични за членовете на производните класове и като скрити за всички останали точки на програмата.

Като пример нека разгледаме класа Point, дефиниран по следния начин:

class Point {
    double x_, y_;
public:
    void set_x(double x){x_=x;}
};

int main() {
    Point p1, p2;
    p1.set_x(10.0);
    p2.x_=10.0; // грешка
    ...
}

В ред 9 променяме състоянието на обекта p1 като се обръщаме към публичен член на класа – член-функцията set_x(). Като резултат стойността на скритата член-променлива p1.x_ става 10. Ако се опитаме обаче директно да променим стойността на скрита член-променлива (вж. ред 10), то компилаторът ще даде съобщение за грешка.

Публикувано в CPP-101, ООП с етикети , , . Постоянна връзка.