Механизм сокрытия данных |
В объектно-ориентированном программировании существует такое понятие как механизм сокрытия данных. Давайте возьмем случай когда вы покупаете магнитофон то вам доступны только те его части которые необходимы для работы с ним (кнопочки, экранчики и т.д.), такие части как провода, магнитные головки и т.д. вам не доступны. В структурах и классах(позже мы узнаем что это такое) сокрытие данных осуществляется с помощью ключевых слов public(открытый), private(закрытый) и protected(защищенный). Закрытые члены в программе недоступны, а открытые наоборот доступны. Внутри структуры после ключевого слова private, все члены ограничены доступом. Закрытыми членами могут пользоваться только функции-члены этой структуры. Открытые члены могут использоваться и вне структуры.
Напишем структуру характеризующую квартиру. В ней будут такие члены как number(номер квартиры), count_room(количество комнат), floor(этаж), area(площадь), price(цена), status(приватизирована или нет), эти члены мы сделаем закрытыми, а для доступа к ним напишем функции. struct kwart { public: int GetNumber(); int GetCountRoom(); int GetFloor(); int GetArea(); int GetPrice(); bool GetStatus(); void SetNumber(int); void SetCountRoom(int); void SetFloor(int); void SetArea(int); void SetPrice(int); void SetStatus(bool); private: int number; int count_room; int floor; int area; int price; bool status; }; int kwart::GetNumber() { return number; } int kwart::GetCountRoom() { return count_room; } int kwart::GetFloor() { return floor; } int kwart::GetArea() { return area; } int kwart::GetPrice() { return price; } bool kwart::GetStatus() { return status; } void kwart::SetNumber(int num) { number = num; } void kwart::SetCountRoom(int count) { count_room = count; } void kwart::SetFloor(int num) { floor = num; } void kwart::SetArea(int num) { area = num; } void kwart::SetPrice(int num) { price = num; } void kwart::SetStatus(bool stat) { status = stat; } Теперь если мы напишем: kwart kw; int i = kw.area; это будет ошибкой, так как переменная area - закрытая, если мы хотим присвоить переменной i ее значение, то нужно воспользоваться функцией GetArea(): kwart kw; kw.SetArea(20); int i = kw.GetArea(); А вот в этом фрагменте уже все правильно. Сначала мы переменной area с помощью функции SetArea() присваиваем значение 20, а потом переменной i присваиваем значение area. |