1. Програма — як офіс, повний відділів
Коли ви лише знайомитеся з програмуванням, здається, що можна просто писати код рядок за рядком — і все працюватиме. Але щойно програма трохи ускладнюється, у голові виникає плутанина: де що розташоване, навіщо це написано, а якщо треба змінити один рядок — де він узагалі лежить?…
Тому C#, як і більшість сучасних мов, пропонує спосіб «розкладати» код по поличках, щоб будь-якої миті можна було зрозуміти, що робить програма, і швидко знайти потрібне місце.
Уявіть компанію. У ній є відділ кадрів, бухгалтерія, IT-відділ, відділ логістики тощо. У кожного відділу — своя зона відповідальності, свої працівники й завдання.
У програмі на C# кожен такий «відділ» — це клас. Один клас відповідає, наприклад, за роботу з користувачами, інший — за обчислення, третій — за роботу з файлами.
Ось типова структура простого проєкту:
- Program.cs — головний офіс: тут міститься «точка входу», звідки все починається.
- User.cs — відділ, де зберігаються та обробляються дані про користувача.
- Calculator.cs — відділ обчислень.
- FileHelper.cs — фахівці з файлів.
Навіть у зовсім маленькій програмі зазвичай є принаймні один клас. А великі проєкти — це вже цілий «хмарочос» із сотень класів!
2. Клас — це коробка з інструментами
C# — це об’єктно-орієнтована мова, і в ній усе — об’єкти. Типи об’єктів називають класами.
Клас — це як коробка або шафка, у яку ми складаємо потрібні речі: змінні, методи, властивості. Уявіть коробку з написом «Молотки»: усередині лежать лише інструменти, пов’язані з молотками.
class Example
{
// Тут будуть наші інструменти: змінні, методи, властивості
}
Класи зазвичай містять змінні та функції. У C# змінні класу прийнято називати полями, а функції класу — методами. Але суть від цього не змінюється.
Пам’ятаєте наш перший код?
Console.WriteLine("Всім привіт!");
string name = Console.ReadLine();
У цьому коді є і клас, і методи:
- Console — це клас, який містить методи (функції) для роботи з консоллю.
- WriteLine — це метод класу Console, який виводить текст на екран.
- ReadLine — це метод класу Console, який читає введення з клавіатури.
Усе програмування певною мірою зводиться до написання власних класів і методів, які викликають методи інших класів.
3. Поля (змінні) класу — це його пам’ять
Усередині класу можна зберігати змінні (їх часто називають «полями»). Це як комірки пам’яті, куди ми складаємо якісь дані.
class Counter
{
int value; // поле — тут буде зберігатися поточне значення лічильника Counter
}
Поля дають змогу класу щось пам’ятати між викликами різних методів. Наприклад, підраховувати, скільки разів натиснули кнопку.
Полів може бути скільки завгодно. Наприклад:
class User
{
int id; // унікальний номер користувача
string name; // ім'я користувача
int age; // вік
string adress; // адреса
User[] children; // діти
}
4. Методи — дії, які може виконувати клас
Методи — це «уміння» нашого класу. Якщо клас — працівник, то методи — це його навички: що він уміє робити.
- Метод може вивести щось на екран.
- Обчислити суму двох чисел.
- Прийняти дані «на вхід» і повернути результат.
Будова методу:
- Тип значення, що повертається (наприклад, void — якщо нічого не повертає, або int — якщо повертає число)
- Імʼя методу (наприклад, Print)
- Параметри в дужках (можуть бути відсутні)
- Фігурні дужки { ... } — тіло методу
class Printer
{
public void PrintHello()
{
Console.WriteLine("Hello!");
}
public int Add(int a, int b)
{
return a + b;
}
}
Детальніше про методи та всі пов’язані з ними нюанси ви дізнаєтеся в найближчих лекціях.
5. Властивості — розумні змінні
Властивість (property) — це як удосконалена змінна: вона не лише зберігає значення, а й може щось робити під час отримання або зміни значення.
Приклад із життя: ви не можете просто так змінити заробітну плату працівника — бухгалтер перевірить, чи все коректно. Так само властивість може «перевіряти» дані:
class Person
{
private int age; // змінна (поле) класу
public int Age // властивість Age. зберігає дані у змінній класу age.
{
get { return age; } // метод get - викликається, коли хтось пробує отримати значення Age
set // метод Set - викликається, коли хтось пробує змінити значення Age
{
if (value >= 0)
age = value;
}
}
}
Код у методі set не дасть встановити від’ємний вік. Детальніше розберемо властивості в найближчих лекціях.
6. Модифікатори доступу
У C# можна визначати, які частини класу доступні з інших класів, а які залишаються лише для внутрішніх потреб. Для цього використовують модифікатори доступу. Якщо перед іменем поля, методу або класу написано ключове слово public, то до нього можна звернутися з будь-якого місця програми.
Якщо ж перед іменем поля, методу або класу написано ключове слово private, то до нього можна звернутися лише з його власного класу. Інші класи цього не бачитимуть. Ніби їх узагалі немає.
- public — видно всім. Такі методи й властивості можна використовувати з інших класів.
- private — видно лише всередині самого класу. Це внутрішні деталі, які не повинні бути доступні іншим.
class Demo
{
public int OpenValue; // видно ззовні
private int secretValue; // видно тільки всередині
public void ShowOpen() { Console.WriteLine(OpenValue); }
private void HideSecret() { Console.WriteLine(secretValue); }
}
Золоте правило: поля зазвичай роблять private, а назовні «виносять» тільки потрібні методи й властивості (public).
7. Як виглядає реальний клас
Ось «зібраний» приклад — мінікалькулятор:
class Calculator
{
private int result; // поле для зберігання результату
public int Result
{
get { return result; }
private set { result = value; } // доступ тільки всередині класу
}
public void Add(int a, int b)
{
result = a + b;
}
public void Clear()
{
result = 0;
}
}
Такий підхід трапляється майже в усіх сучасних програмах на C#!
8. Top-level statements
Взагалі в C# увесь код завжди міститься в класах. Клас — це мінімальна одиниця програми. У програмі може бути багато класів, але щонайменше — один.
Зачекайте, а як же весь той код, який ми щойно писали, адже там не було жодних класів?
А це одна з нових можливостей мови C#: можна написати код без класу, а C#-компілятор сам перетворить його на клас.
Припустімо, у вас є такий код у Program.cs:
// твій код
WriteSmile();
WriteSmile();
WriteSmile();
//твоя власна функція
void WriteSmile()
{
Console.WriteLine(":)");
}
Компілятор C# перетворює його на такий:
using System;
class Program
{
static void Main() // твій код
{
WriteSmile();
WriteSmile();
WriteSmile();
}
static void WriteSmile() //твоя власна функція
{
Console.WriteLine(":)");
}
}
Якщо ви зрозуміли лише половину — нічого страшного: головне — уловити суть. У найближчих лекціях ми крок за кроком розберемо все, про що тут ідеться.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ