Область видимості (програмування)

Матеріал з Вікіпедії — вільної енциклопедії.
Jump to navigation Jump to search

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

У більшості мов програмування межі дії змінної зумовлені місцем її оголошення. Крім того, межі дії можна зазначити явно за допомогою класів пам'яті або просторів імен.

Різновиди змінних залежно від меж дії[ред.ред. код]

У мовах, що підтримують структурне програмування, змінні зазвичай поділяються на два типи залежно від видимості:

Об'єктно-орієнтоване програмування передбачає існування всередині кожного класу трьох нарізних ділянок з особливими межами дії:

  • Закрита (англ. private) — межі дії оголошень збігаються з межами класу (посилатися на змінні чи методи можна лише з коду, що належить класові);
  • Відкрита (англ. public) — обмеження дії відсутнє, але посилатися на змінні чи методи можна лише через ім'я об'єкта (примірник класу);
  • Захищена (англ. protected) — межі дії оголошень відповідають межам класу та всіх його нащадків[2].

Мови розмітки[ред.ред. код]

Поняття меж дії також стосується мов розмітки. Наприклад, в HTML межі дії імені поля введення (те саме стосується прапорців, ґудзиків тощо) збігаються з межами форми (HTML) від <form> до </form>[3].

Приклади[ред.ред. код]

Сі[ред.ред. код]

// Змінна foo має глобальні межі дії
int foo = 0;

int main() {
    // Межами дії змінної bar є тіло функції main
    int bar = 1;
}
# include <stdio.h>
int a = 0; // Глобальна змінна

int main ()
{
    printf («% d», a); // Буде виведено число 0
    {
       int a = 1; // Оголошена локальна змінна а, глобальну змінну a не видно
       printf («% d», a); // Буде виведено число 1
       {
          int a = 2; // Ще локальна змінна в блоці, глобальну змінну a не видно, невидно і попередню локальну змінну
          printf («% d», a); // Буде виведено число 2
       }
    }
}

Примітки[ред.ред. код]

  1. УРОК 12. локальні змінні І ОБЛАСТЬ ВИДИМОСТІ. Архів оригіналу за 2013-03-16. Процитовано 2013-03-11. 
  2. Області видимості. Архів [http: //delphi.support.uz/index. php? type = tema & id = 15 оригіналу] за 2013-03-16. Процитовано 2013-03-11. 
  3. Специфікація мови HTML, перекладач: А. Пірамідін, intuit.ru, ISBN 978-5-94774-648-8, 17. Лекція: Форми.