Лабораторна робота № 6
Тема: Приватні, захищені, відкриті члени класу
Мета: Ознайомитись із приватними, захищеними, відкритими членами класу
Теоретичні відомості:
Часто буває так, що внутрішнє подання типу класу змінюється в наступних версіях програми. Припустимо, опитування користувачів нашого класу Screen показав, що для його об'єктів завжди задається розмір екрану 80? 24. У такому випадку було б бажано замінити внутрішнє подання екрана менш гнучким, але більш ефективним: class Screen ( public:    / / Функції-члени private:    / / Ініціалізація статичних членів (див. 13.5)    static const int _height = 24;    static const int _width = 80;    string _screen;    string:: size_type _cursor; ); Колишня реалізація функцій-членів (те, як вони маніпулюють даними-членами класу) більше не годиться, її потрібно переписати. Але це не означає, що повинен змінитися і інтерфейс функцій-членів (список формальних параметрів і тип значення, що повертається). Якщо б дані-члени класу Screen були відкриті і доступні будь-якої функції усередині програми, як відбилося б на користувачах зміна внутрішнього представлення цього класу?     * Всі функції, які безпосередньо зверталися до даних-членам старого уявлення, перестали б працювати. Отже, довелося б відшукувати і змінювати відповідні частини коду;     * Тому що інтерфейс не змінився, то коди, маніпулювати об'єктами класу Screen тільки через функції-члени, не довелося б модифікувати. Але оскільки самі функції-члени все ж змінилися, програму довелося б відкомпілювати заново. Приховування інформації - це формальний механізм, що запобігає прямий доступ до внутрішнього поданням типу класу з функцій програми. Обмеження доступу до членів задається за допомогою секцій тіла класу, позначених ключовими словами public, private і protected - специфікатор доступу. Члени, оголошені в секції public, називаються відкритими, а оголошені в секціях private і protected відповідно закритими або захищеними.     * Відкритий член доступний з будь-якого місця програми. Клас, що приховує інформацію, залишає відкритими тільки функції-члени, що визначають операції, за допомогою яких зовнішня програма може маніпулювати його об'єктами;     * Закритий член доступний тільки функцій-членів і друзям класу. Клас, який хоче приховати інформацію, повідомляє свої дані-члени закритими;     * Захищений член веде себе як відкритий по відношенню до похідному класу і як закритий по відношенню до іншої частини програми. (У розділі 2 ми бачили приклад використання захищених членів у класі IntArray. Детально вони розглядаються в главі 17, де вводиться поняття спадкування.) У наступному визначенні класу Screen вказані секції public й private: class Screen ( public:    void home () (_cursor = 0;)    char get () (return _screen [_cursor];)    char get (int, int);    void move (int, int);    / / ... private:    string _screen;    string:: size_type _cursor;    short _height, _width; ); Згідно з прийнятим угодою, спочатку оголошуються відкриті члени класу. (Обговорення того, чому в старих програмах C + + спочатку йшли закриті члени і чому цей стиль ще де-не-де зберігся, див у книзі [LIPPMAN96a].) В тілі класу може бути кілька секцій public, protected і private. Кожна секція продовжується або до мітки наступній секції, або до закриває фігурної дужки. Якщо специфікатор доступу не вказано, то секція, безпосередньо наступна за що відкриває дужкою, за замовчуванням вважається private.
Хід роботи
Створити ієрархію класів, додати приватні, захищені, відкриті члени класу
Структури «Спорт клубу».
структури «Бібліотеки».
структури «Обувного магазину»
структури «Булочної»
Структури «Мобільного магазину»
Тощо…