C# - Головна Простір імен
► System (5)► Microsoft (1) Для учнів (початківців)
► Відео уроки (4)► Навчання (177) ► Приклади програм (19) ► Секрети Сі Шарп (4) Для професіоналів
► Навчання (6)► Приклади програм (1) |
Робота з класами C#Мова C# дозволяє розробнику визначити новий тип даних – клас. Простий опис класу має наступний вигляд. class ім'я класу {< список членів класу>} ім'я класу – це будь-який ідентифікатор, унікальний у межах своєї сфери дії; список членів класу – список, оголошує члени класу із зазначенням рівня доступу. Члени класу – це поля (члени-дані), методи (функції-члени), властивості і події. В даній лабораторній роботі будуть створюватися класи, які мають в якості членів поля та методи. Наприклад: class Myclass { public int i; public float x; public float f() {return i*y;} } В С# є п'ять спецификаторов доступу: public, private, protected, internal, protected internal . Значення спецификаторов доступу наступні: public - член класу може бути використаний будь-яким методом; private - член класу може бути використаний тільки методом того ж класу, protected - член класу може бути використаний тільки або методом того ж класу, або методом похідного класу; internal- член класу може бути використаний тільки методом з тієї ж збірки; - protected internal- член класу може бути використаний тільки або методом з тієї ж збірки або методом похідного класу з будь складання. В усіх об'єктно-орієнтованих мовах чітко розрізняються поняття «клас» і «об'єкт». Клас – це визначений користувачем тип даних, його можна уявити собі як креслення, за яким будуть строяться самі дані, тобто об'єкти (екземпляри) класу. C# створення об'єктів класу відбувається з допомогою операції new. Наприклад: Myclass a1=new Myclass(); або Myclass a2; a2=new Myclass(); Ключове слово new означає, що середовищі виконання слід викликати конструктор класу і виділити необхідну кількість оперативної пам'яті під екземпляр класу. Оскільки клас належить до посилального типу, то виділення пам'яті проводиться з «купи», що знаходиться в розпорядженні середовища виконання .NET . Команди Myclass a1, Myclass a2, визначають посилання на об'єкти класу, а не самі об'єкти, об'єкти створюються за допомогою операції new . Але після того як об'єкти будуть створені, ми будемо їх називати об'єкт (екземпляр) a1, і об'єкт (екземпляр) a2. Розглянемо ще один приклад: Myclass c=new Myclass(); Myclass d; d=c; У цьому прикладі створений один об'єкт та два посилання на нього. Доступ до членів класу здійснюється з допомогою операції точка «.». Наприклад: c.x=7; //полю х об'єкта з присвоєно значення 7. d.i=6; //поля i об'єкти d присвоєно значення 6. a1.x=c.f();//полю х об'єкта a1 присвоєно значення, яке повертає метод f, викликаний для об'єкта, оскільки посилання d також вказує на цей же об'єкт, то метод f поверне значення 42. Конструктор класу C# Конструктор класу – це метод класу, який призначений для створення об'єктів класу і ініціалізації їх. Конструктор володіє наступними властивостями: 1. Ім'я конструктора збігається з ім'ям класу. 2. Конструктор не має значення, що повертається, навіть типу void 3. Клас може містити кілька конструкторів, які відрізняються або кількістю, або типами параметрів (відмінність в цьому випадку повинно бути суттєвим), або і тим і іншим. 4. Конструктор без параметрів називається конструктором за замовчуванням. 5. Якщо жоден конструктор не був написаний програмістом, то конструктор за замовчуванням генерується компілятором. 6. Якщо в класі оголошений хоча б один конструктор, то компілятор не створює свого. 7. В C# , на відміну від багатьох інших мов, будь конструктор, якщо не вказано інше, обнуляє значення полів. 8. Конструктор не може бути викликаний явно, він викликається автоматично при створенні екземплярів класу.
Розглянемо приклад. Визначимо в класі А два конструктора. class A { public int x,y; public int f() {return x+y;} public A() { x=1; y=2; } public A (int xx, int yy) { x=xx; y=yy;} } При виконанні команди A a=A new();для створення об'єкта класу використовується конструктор без параметрів. Полів об'єкта будуть присвоєні, відповідно, значення 1 і 2. Якщо при створенні об'єкта потрібно використовувати конструктор з параметрами, то в операторі newпісля імені класу в круглих дужках вказуються значення параметрів, наприклад, A b=A new(6,13); А команда A c=A new(3);викличе помилку, тому що клас не містить конструктора з одним параметром, яким можна було б присвоїти значення 3. В мові С# існує спрощена форма написання конструктора: при описі полів класу можна написати инициализирующие вираження. Приклад. class { public int i=10; } Всі рядки, які містять инициализирующие вирази, включаються в початок всіх конструкторів. В даному прикладі рядок i=10; буде включена в конструктор, який визначається компілятором. Переглядів: 3385 |