Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OOP_Посібник (1).doc
Скачиваний:
8
Добавлен:
01.05.2019
Размер:
544.77 Кб
Скачать

§2. Управління доступом до членів класу

Утворені класи можна використовувати далі для розробки складних програм та для створення нових класів з існуючих (наслідування). Тому питання доступу до членів класу має суттєве значення.

Кожне оголошення усередині класу визначає привілей доступу до імен класу в залежності від того, у якій секції ім'я з'являється. Кожна секція починається з одного з ключових слів: private, protected і public.

Конструкція вигляду

class className{

private:

<приватні члени-дані>

<приватні конструктори

<приватні члени-функції>

protected:

<захищені члени-дані>

<захищені конструктори>

<захищені члени-функції>

public:

<загальнодоступні члени-дані>

<загальнодоступні конструктори>

<загальнодоступний деструктор>

<загальнодоступні члени-функції>

}; – називається визначенням (об’явою) класу, тому що вона визначає новий тип.

Розглянемо приклад, який наведений у попередньому параграфі, але замінимо ключове слово struct на class.

Приклад 4:

class Date{

іnt d,m,y;

public:

voіd іnіt (іnt dd,іnt mm, іnt yy);

void add_year(іnt n);

void add_month(іnt n);

void add_day(іnt n);

};

Ключове слово public вказує, що тільки функції–члени init, add_year, add_month, add_day доступні користувачу для використання. Якщо ключового слова не задано, то вважається, що воно private. В нашому випадку до змінних d,m,y мають доступ тільки функції-члени init, add_year, add_month, add_day. Звідси можна зробити висновок, що структура – це клас, члени якого об’явлені як public.

Таким чином, оголошення базового класу на C++ надає наступні права доступу і відповідні області видимості:

Приватні – private імена мають найбільш обмежений доступ, дозволений тільки функціям=членам даного класу. Доступ похідних класів до приватних методів базових класів заборонений.

Захищені – protected імена мають доступ, дозволений методам даного і похідних від нього класів.

Загальнодоступніpublic імена мають необмежений доступ, дозволений методам усіх класів і їхніх об'єктів.

Наступні правила застосовуються при утворенні різних секцій в об’яві класу:

1. Секції можуть з'являтися в будь-якому порядку, а їхні назви можуть зустрічатися повторно.

2. Якщо секція не названа, компілятор вважає наступні оголошення імен класу приватними (private). Тут виявляється відмінність оголошень класу і структури - остання розглядається за замовчуванням як загальнодоступна.

3. Якщо члени даних класу не використовуються в програмі, їх оголошують захищеними, щоб дозволити доступ тільки методам похідних класів.

Використання секцій має ряд переваг. По-перше, якщо треба змінити представлення класу, потрібно лише змінити функції–члени. Код користувача класу безпосередньо залежить тільки від відкритого інтерфейсу, і не буде потрібно його переписувати (хоча може знадобитися його перекомпіляція). По-друге, щоб навчитися використовувати клас, його потенційному користувачу буде потрібно ознайомитися тільки з прототипами функцій-членів.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]