Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
c#_theoretical_1.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.07 Mб
Скачать

Синтаксис опису класу

Отже концепція абстрагування у програмі, створеної в об’єктно-орієнтованому стилі, реалізується через основний елемент та тип даних такої програми − клас. Для визначення класу в C# використовуються наступний синтаксис:

[атрибути] [модифікатори] class ім'я_класу [: базовий клас [,інтерфейси]]

{

//константи - містять незмінні значення, пов’язані із класом

//поля класу - містять структурні характеристики (дані) класу

//методи класу - реалізовують обчислення чи інші дії, які виконуються класом або екз.

//властивості класу - визн. характеристики класу разом із способами їх чит. та запису

//індексатори класу - забезп. можливість доступу до елементів класу за їх пор. номером

//конструктори - реаліз.ініціал екземплярів класу чи класу в цілому

//деструктор - визн.дії, які потрібно виконати перед знищенням об’єкту

//операції - задють дії над об’єктами з допомогою знаків операцій

//підкласи - типи, які є внутрішніми по відношенню до класу

//події класу - визначають повідомлення, які може генерувати клас

}

Усі складові класу називаються його елементами або членами класу. Звертання (виклик) до констант, полів та методів класу здійснюється з допомогою операції доступу (крапки) має синтаксис:

ім'я_об'єкта.ім'я_елемента

Стосовно атрибутів відмітимо наступне. Атрибути забезпечують ефективний спосіб зв’язування метаданих або декларативної інформації із кодом (збірками, типами, методами, властивостями і т.д.). Звернення до атрибуту може бути здійснене під час виконання програми за допомогою методу, який називається відбиттям. У C# атрибут задається шляхом вказання його імені у квадратних дужках ([]), перед оголошенням сутності (це може бути не тільки клас, але й метод класу, параметри методу тощо), до якої він відноситься.

Модифікатори слугують для зміни оголошення типів та їх членів. Наприклад модифікатор const вказує на те, що значення поля або локальної змінної не може бути зміненим.

Поля класу

Поля класу визначають структурні характеристики об’єктів класу і використовуються для зберігання значень цих характеристик. Для визначення поля класу використовується синтаксис:

[атрибути] [модифікатори] тип_даних ім'я_поля [= початкове_значення];

Як приклад припустимо, що в результаті об’єктної декомпозиції задачі виділено об’єкт «Раціональне число». Нагадаємо, що раціональне число можна подати у вигляді нескоротного дробу , де − ціле, а − натуральне. Виходячи із сказаного, поля класу «Раціональне число» повинні містити інформацію про структурні характеристики − значення чисельника та знаменника відповідного дробу.

class Rational

{

//чисельник, подається у вигляді цілого числа з діапазону від -2147483648 до 2147483647

int numerator = 0;

//знаменник

int denominator = 1;

}

Статичні поля. Модифікатор static використовується для оголошення члена класу, який належить всьому типу, а не конкретному об’єкту. Статичне поле створюється в єдиному екземплярі (є спільним) для всіх об’єктів даного класу (належить до даних класу). За умов доступності звертання до статичного поля поза класом, у якому воно визначене, здійснюється на рівні класу, а саме за правилом

Ім'я_класу.Ім'я_статичного_поля

У середині класу до статичних полів звертаються просто за іменем. Найпоширенішим прикладом використання статичного поля класу є змінна, у якій зберігається кількість об’єктів даного класу. Додамо статичні поля у клас Rational.

class Rational

{

...

//кількість створених об'єктів типу Rational

static uint Count;

//кількість об'єктів типу Rational

static uint count;

}

У момент створення чергового об’єкта значення цих полів повинно збільшуватися на 1, а при знищенні об’єкта повинно зменшуватися на 1 значення поля count. Цю реалізацію ми наведемо пізніше при розгляді конструкторів та деструктора.

Константи. Модифікатор const вказує на те, що значення поля або локальної змінної не може бути зміненим. Поле-константа використовується для визначення деякої константи. Ініціалізація константи відбувається в момент її оголошення. Значенням поля константи може бути будь-яке незмінюване значення, зокрема значення іншої константи. Наприклад, у класі «Раціональне число» можна визначити таку константу:

class Rational

{

...

//найменше можливе значення знаменника

const int MinDenValue = 1;

}

Поле-константа, що міститься в класі, є неявно-статичним, тому при оголошенні констант не допускається використання модифікатору static.

readonly-поля. Модифікатор readonly застосовується тільки для полів та визначає поле, значення якого є доступним тільки для читання. На відміну від константи такі поля можуть бути ініціалізованими як при їх оголошенні, так і в спеціальному методі класу (конструкторі). Другою відмінністю є можливість присвоєння цій змінній значення, отриманого в результаті обчислення деякого виразу. Третя відмінність полягає в тому, що те саме readonly-поле у двох різних об’єктів може приймати різні значення (тобто readonly-поле є даними екземпляру). Наприклад, визначимо у нашому класі readonly-поле, яке буде унікальному номеру (ідентифікатору) об’єкта.

class Rational

{

...

//унікальний номер(ідентифікатор) об’єкту

readonly uint ID;

}

Ініціалізація поля ID має проводитись у конструкторах, реалізацію яких ми розглянемо пізніше.

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