Механизм сокрытия данных
В объектно-ориентированном программировании существует такое понятие как механизм сокрытия данных. Давайте возьмем случай когда вы покупаете магнитофон то вам доступны только те его части которые необходимы для работы с ним (кнопочки, экранчики и т.д.), такие части как провода, магнитные головки и т.д. вам не доступны. В структурах и классах(позже мы узнаем что это такое) сокрытие данных осуществляется с помощью ключевых слов 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.
Сайт создан в системе uCoz