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

У цій статті не вистачає посилань на джерела інформації.

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

При застосуванні властивостей

  • можна задати значення за замовчуванням, яке буде зберігатися в цій якості (або вказати, що ніякого значення за замовчуванням не передбачається);
  • можна вказати, що це властивість тільки для читання.

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

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

У багатьох мовах програмування властивості реалізуються у вигляді пари методів. метод, який одержує поточне значення властивості, називається акцессор (accessor); метод, що задає нове значення властивості, - мутатор (mutator). [Джерело не вказано 384 дні] У мовах програмування, що не підтримують властивості, наприклад, C ++ і Java. пара з акцессора і мутаторів є загальноприйнятим сурогатом для їх заміни.

Прийнято називати методи властивостей ім'ям властивості з приставками get і set. наприклад, для властивості Xyzzy - get_Xyzzy і set_Xyzzy (традиційний стиль Сі) або GetXyzzy і SetXyzzy (стиль CamelCase). У зв'язку з цією схемою найменування за методами властивостей закріпилися жаргонні назви getter і setter.

Властивості в C #

Властивості в C # - поля з логічним блоком, в якому є ключові слова get і set.

Приклад класу з властивістю:

Властивості в VB.NET

Приклад реалізації в VB.NET. Якщо потрібно реалізувати властивість тільки для читання або тільки для запису. застосовуються модифікатори ReadOnly і WriteOnly. Властивість може бути параметризованим. Також може бути властивістю за замовчуванням, для цього необхідно додати модифікатор Default

Властивості в Delphi

Для опису властивості в Delphi служить слово property.

Приклад класу з властивістю: