Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП_KAZYMYR.doc
Скачиваний:
15
Добавлен:
09.11.2019
Размер:
3.71 Mб
Скачать

2.4.Доступ до даних

2.4.1.Доступ до даних в SmallTalk

Мова SmallTalk є нетипізованою мовою. Тут немає поняття оголошення змінної певного типу. Змінні можуть вказувати на будь-який об'єкт і протягом виконання програми можуть вказувати на різні об'єкти.

Доступ до змінних класу може бути здійснений тільки через екземпляри класу й ні як інакше. Тобто змінні класу сховані для всіх інших об'єктів, включаючи й об'єкти даного класу. Тільки сам об'єкт може змінити значення змінної через свої методи. Наприклад для об'єкта а класу Point це буде виглядати в такий спосіб:

одержати значення змінної x об'єкта а”

a x

одержати значення змінної y об'єкта а”

a y

До змінних класу можна звертатися прямо, тому що вони є глобальними для всіх екземплярів класу, але тільки через відповідні методи екземплярів. Наприклад, якщо в класі Point визначити метод pointCount, що буде видавати значення змінної класу Count, те доступ до цієї змінної може бути здійснений таким чином:

a pointCount.

2.4.2.Доступ до даних в C++

У С++ можливості доступу до змінних значно ширше, ніж в SmallTalk. Насамперед це пов'язане з використанням специфікаторів доступу public, private, protected, які мають наступне значення:

  1. Public: – змінні повністю відкриті для будь-яких функцій.

  2. Private: – змінні можуть бути використані тільки в методах даного класу (або в методах “дружньої” функції).

  3. Protected: – змінна може бути використана в методах даного класу й у методах похідних класах від даного класу.

У табл. 2.1 наведені умови дії специфікаторів для різних класів.

Таблиця 2.1

Правила дії специфікаторів доступу в C++

Правило

class

struct

union

за замовчуванням

private

public

public

зазначений явно

public

private

зазначений явно

protected

protected

Нижче приводиться приклад опису класу зі специфікаторами доступу до змінного.

class C { int a; // private

public: double b;

private: char *s; };

struct C { int a; // public

public double b;

private: char *s; };

Особливості доступу до даних:

  1. Пам'ять для статичних змінних виділяється компілятором у сегменті даних, тому до цих змінних можна звертатися ще до створення об'єкта, використовуючи ім'я класу:

A::k=3; // для приклада з п. 2.3. 2

  1. Доступ до полів даних об'єктів може бути здійснений тільки через об'єкт, використовуючи оператор « . »:

a.i=2;

pa->i=3;

2.4.3.Доступ до даних в Delphi

Object Pascal ще більш багатий відносно специфікаторів, чим С++. У ньому допускається використання чотирьох специфікаторів:

  1. Public – загальнодоступні змінні; видимі в будь-якій програмі, у будь-якому модулі, що має доступ до даного модуля.

  2. Private – змінні видимі тільки усередині модуля, у якому визначені (визначені усередині класу).

  3. Protected – усередині модуля діють як private, а поза модулем – змінні доступні тільки усередині методів підкласу.

  4. Published – ідентичні public, але вказують компіляторові додати додаткову інформацію про тип часу виконання (run-time type information). Використовуються на етапі проектування, наприклад при створенні нових компонентів. Змінні, зазначені з даним специфікатором, будуть представлені у вікні властивостей даного об'єкта.

Особливості застосування специфікаторів:

  1. Специфікатори повинні бути явно зазначені.

  2. Існує строгий порядок проходження специфікаторів доступу за алфавітом: private, protected, public, published.

  3. Всі поля, що оголошені в розділі published, повинні бути класового типу

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