Клас – це абстрактний тип даних. Іншими словами, клас – це певний шаблон, на основі якого будуть створюватися його примірники – об'єкти. В Сі-шарп класи оголошуються за допомогою ключового слова class. Загальна структура оголошення виглядає наступним чином:

[модифікатор доступу] class [ім'я_класа]
{
//тіло класу
}

Модифікаторів доступу для класів є два:
- public – доступ до класу можливий з будь-якого місця одній складання або з іншої збірки, на яку є посилання;
- internal – доступ до класу можливий тільки з збірки, в якій він оголошений

Що таке збірка?

Збірка (assembly) – це готовий функціональний модуль у вигляді exe або dll-файлу (файлів), який містить скомпільований код .NET. Збірка надає можливість повторного використання коду. При оголошенні класу модифікатор доступу можна не вказувати, при цьому буде застосовуватися режим за замовчуванням internal. Клас слід оголошувати всередині простору імен namespace, але за межами іншого класу (можливо також оголошення класу усередині іншого - вкладені типи, але це тема окремого уроку).

Приклад оголошення класів Student і Pupil:

namespace HelloWorld
{
 class Student //без вказівки модифікатор доступу, клас буде internal
{
//тіло класу
}
public class Pupil
{
//тіло класу
}
}

Члени класу

Класи в Сі-шарп можуть містити наступні члени:
- поля;
- константи;
- властивості;
- конструктори;
- методи;
- події;
- оператори;
- волонтери;
- вкладені типи.

Всі члени класу, як і сам клас, мають свій рівень доступу. Тільки у членів їх може бути п'ять:
- public – доступ до члена можливий з будь-якого місця однієї збірки, або з іншої збірки, на яку є посилання;
- protected – доступ до члена можливий тільки усередині класу, або в класі-спадкоємці (при спадкуванні);
- internal – доступ до члена можливий тільки з збірки, в якій він оголошений;
- private – доступ до члена можливий тільки усередині класу;
- protected internal - доступ до члена можливий з однієї збірки, або з класу-спадкоємця іншої збірки.

Не вказавши модифікатор доступу для члена, за замовчуванням йому буде надано режим private. За допомогою модифікаторів доступу в Сі-шарп реалізується один із базових принципів ООП – інкапсуляція. У цьому уроці ми розглянемо такі члени класу, як поля та константи.

Поля класу

Поле – це змінна, оголошена всередині класу. Як правило, поля оголошуються з модифікаторами доступу приватних або захищені, щоб заблокувати прямий доступ до них. Для отримання доступу до полів слід використовувати властивості або методи.

Приклад оголошення полів в класі:

class Student
{
private string firstName;
private string lastName;
private int age;
public string group; // не рекомендується використовувати public для поля
}

Створення об'єктів

Оголосивши клас, ми тепер можемо створювати об'єкти. Робиться це за допомогою ключового слова new й ім'я класу:

namespace HelloWorld
{
class Student
{
private string firstName;
private string lastName;
private int age;
public string group;
}
class Program
{
static void Main(string[] args)
{
Student student1 = new Student(); //створення об'єкта student1 класу Student
Student student2 = new Student();
}
}
}

Доступ до членів об'єкта здійснюється за допомогою оператора точка «.» :

static void Main(string[] args)
{
Student student1 = new Student();
Student student2 = new Student();

student1.group = "Group1";
student2.group = "Group2";

Console.WriteLine(student1.group); // виводить на екран "Group1"
Console.Write(student2.group);
Console.ReadKey();
}

Такі поля класу Student, як firstName, lastName і age вказані з модифікатором доступу private, тому доступ до них буде заборонений поза класу:

static void Main(string[] args)
{
 Student student1 = new Student(); 
student1.firstName= "Nikolay"; //помилка, немає доступу до поля firstName. Програма не відбудеться створення 
}

Константи

Константи-члени класу нічим не відрізняються від простих констант всередині методів, які розглядались на уроці змінні та константи.
Масив – це змінна, значення якої не можна змінити. Константа оголошується за допомогою ключового слова const. Приклад оголошення константи:

class Math
{
private const double Pi = 3.14;
}

Автор Swytos                                              << попереднянаступна >>                                                 До змісту


2016-05-29 • Просмотров [ 162 ]