Составители:
Рубрика:
39
} }
main()
{ //client cl; Ошибка! Все компоненты client частные
bank SB("Сбербанк");
char c=0;
while(c!=27) //цикл до нажатия клавиши ESC
{ SB.AddClient(); //ввод информации об очередном клиенте
c=getch();
}
SB.PrintAll();
}
В программе вновь определены два класса: bank и client. Класс client хра-
нит информацию о клиенте банка, а также необходимые интерфейсные мето-
ды. Класс банк хранит список всех клиентов, хранящих свои вклады в данном
банке. Список клиентов оформлен в виде динамического односвязного списка,
что позволяет не ограничивать максимально допустимое количество клиентов
банка. В связи с этим в классе client появляется новый компонент – next, хра-
нящий адрес следующего клиента в списке, а в классе bank – компонентные
данные first и head, хранящие адрес первого и последнего клиента в списке.
Соответственно, функции класса bank создают, просматривают, уничтожают
динамический односвязный список объектов класса клиент. При этом класс
bank должен быть обязательно дружественен классу client, поскольку методы
AddClient, PrintAll и деструктор класса bank работают с частными компонен-
тами класса client (в частности, с компонентами next, ReadClent, PrintClient,
конструктором и деструктором). Необходимо обратить внимание на то, что в
последнем примере все компоненты класса client (и компонентные данные, и
методы класса, и даже конструктор
с деструктором) являются частными. Та-
ким образом, в любой внешней по отношению к классу функции (например, в
функции main) запрещен доступ к компонентам класса client, более того, за-
прещено даже создание объекта данного класса в main, поскольку определе-
ние объекта сопровождается вызовом конструктора, а он в данном примере
также объявлен частным. В
такой ситуации единственным способом работы с
}} main() { //client cl; Ошибка! Все компоненты client частные bank SB("Сбербанк"); char c=0; while(c!=27) //цикл до нажатия клавиши ESC { SB.AddClient(); //ввод информации об очередном клиенте c=getch(); } SB.PrintAll(); } В программе вновь определены два класса: bank и client. Класс client хра- нит информацию о клиенте банка, а также необходимые интерфейсные мето- ды. Класс банк хранит список всех клиентов, хранящих свои вклады в данном банке. Список клиентов оформлен в виде динамического односвязного списка, что позволяет не ограничивать максимально допустимое количество клиентов банка. В связи с этим в классе client появляется новый компонент – next, хра- нящий адрес следующего клиента в списке, а в классе bank – компонентные данные first и head, хранящие адрес первого и последнего клиента в списке. Соответственно, функции класса bank создают, просматривают, уничтожают динамический односвязный список объектов класса клиент. При этом класс bank должен быть обязательно дружественен классу client, поскольку методы AddClient, PrintAll и деструктор класса bank работают с частными компонен- тами класса client (в частности, с компонентами next, ReadClent, PrintClient, конструктором и деструктором). Необходимо обратить внимание на то, что в последнем примере все компоненты класса client (и компонентные данные, и методы класса, и даже конструктор с деструктором) являются частными. Та- ким образом, в любой внешней по отношению к классу функции (например, в функции main) запрещен доступ к компонентам класса client, более того, за- прещено даже создание объекта данного класса в main, поскольку определе- ние объекта сопровождается вызовом конструктора, а он в данном примере также объявлен частным. В такой ситуации единственным способом работы с 39
Страницы
- « первая
- ‹ предыдущая
- …
- 37
- 38
- 39
- 40
- 41
- …
- следующая ›
- последняя »