АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Механізми зміни доступу до полів. Методи-властивості

Читайте также:
  1. Але монетарне правило не враховує мінливості швидкості обігу грошей та чутливості попиту до зміни процентної ставки.
  2. Баланс часу зміни та коефіцієнт використання часу зміни
  3. Бюджетні обмеження. Вплив зміни доходу або ціни товару на бюджетні обмежені обмеження. Нелінійні бюджетні обмеження.
  4. ВПЛИВ ЕКОЛОГІЧНИХ ФАКТОРІВ НА ЗМІНИ В БІОГЕОЦЕНОЗАХ. АГРОЦЕНОЗЫ
  5. Загальна характеристика біорізноманіття України, його сучасний стан, тенденції зміни та проблеми збереження
  6. Загальні відомості про допустимі зміни параметрів технічного стану складальних одиниць машин
  7. Закономірності і зміни технічного стану машин
  8. Зміни виробництва шкарпеток залежно від збільшен-ня затрат праці
  9. Зміни у попиті на ресурс
  10. Зміни у попиті на ресурс. Еластичність попиту
  11. Інструменти та механізми охорони біорізноманіття
  12. Класифікація кранів. Основні механізми і параметри кранів. Режими роботи механізму підйому вантажу

Методи, називані властивостями (Propertіes), представляють спеціальну синтаксичну конструкцію, призначену для забезпечення ефективної роботи з властивостями. Правильною стратегією є закриття полів від клієнта – поля з'являються з модифікатором protected або prіvate. Клієнти класу не повинні використовувати інформацію про те, як улаштовані поля. Це полегшує можливу модифікацію класу в майбутньому. Клас зможе змінити представлення даних, зберігши інтерфейс, наданий клієнтам. У цьому випадку зміни в полях не відіб'ються на клієнтах.

Закриття полів не означає, що клієнти класу не можуть працювати з даними, що зберігаються в полях класу. Можливі різні стратегії доступу клієнта до закритих полів класу: п'ять найбільш уживаних стратегій [3]:

- читання, запис (Read, Wrіte);

- читання, запис при першому звертанні (Read, Wrіte-once);

- тільки читання (Read-only);

- тільки запис (Wrіte-only);

- ні читання, ні запис (Not Read, Not Wrіte).

Забезпечуючи інкапсуляцію, необхідно мати можливість використовувати значення полів класу, для цього можна застосувати механізм використання методів-властивостей. Розглянемо загальний синтаксис методів-властивостей. Нехай name – це закрита властивість. Тоді для неї можна визначити відкритий метод-властивість (функцію), що повертає той же тип, що і поле name. Ім'я методу зазвичай близько до імені поля, відрізняючись від нього, наприклад, тільки заголовною буквою (Name). Тіло властивості містить два методи – get і set, один із яких може бути опущений. Метод get повертає значення закритого поля, метод set установлює значення, використовуючи значення, передане йому в момент виклику і збережене в службовій перемінній зі стандартним ім'ям value. Оскільки get і set – це звичайні процедури мови, програмно можна реалізувати як завгодно складні стратегії доступу.

Практичний приклад створення методів-властивостей: розглянемо клас Person, у якого п'ять полів: fam, status, salary, age, health, що характеризують, відповідно, прізвище, статус, зарплату, вік і здоров'я персони. Усі поля закриті для клієнта, так що клієнт не може безпосередньо читати або записувати дані в поля класу. Для кожного з цих полів може бути створена своя стратегія доступу. При проектуванні класу будемо припускати, що вік доступний для читання і запису, прізвище можна задати тільки один раз, статус можна тільки читати, зарплата недоступна для читання, а здоров'я закрите для доступу і тільки спеціальні методи класу можуть повідомляти деяку інформацію про здоров'я персони. От як на C # можна забезпечити ці стратегії доступу до закритих полів класу:

 

public class Person

{

public enum Status

{ дитина, школяр, студент, працівник, пенсіонер

}

// поля (всі закриті)

string fam = "", health = "";

int age = 0, salary = 0;

Status status = Status.працівник;

// методи - властивості

///стратегія: Read,Write-once (Читання, запис при першому зверненні)

public string Fam

{

set { if (fam == "") fam = value; }

get { return (fam); }

}

///стратегія: Read-only(Тільки читання)

public Status GetStatus

{

get { return (status); }

}

///стратегія: Read,Write (Читання, запис)

public int Age

{

set

{

age = value;

// зміна статусу

if (age < 7) status = Status.дитина;

else if (age < 17) status = Status.школяр;

else if (age < 22) status = Status.студент;

else if (age < 65) status = Status.робітник;

else status = Status.пенсіонер;

}

get { return (age); }

}

///стратегия: Write-only (Тільки запис)

public int Salary

{

set { salary = value; } } }


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.)