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