1. Proqram — sanki şöbələrlə dolu ofisdir
Proqramlaşdırmaya yeni başlayanda elə bilirsən ki, kodu sadəcə sətir-sətir yazmaq olar və hər şey işləyəcək. Amma proqram bir az mürəkkəbləşən kimi baş qarışır: nə haradadır, niyə yazılıb, bir sətri dəyişmək lazımdırsa — onu harada tapasan?..
Ona görə də C#, əksər müasir dillər kimi, kodu “rəflərə” yığmağa imkan verir ki, istənilən vaxt proqram nə edir başa düşmək və lazım olan yeri tez tapmaq mümkün olsun.
Təsəvvür elə bir şirkət var. Orada kadrlar şöbəsi, mühasibatlıq, IT-şöbə, logistika şöbəsi və s. var. Hər şöbənin öz məsuliyyəti, işçiləri və tapşırıqları var.
C# proqramında hər belə “şöbə” — class-dır. Bir class məsələn, istifadəçilərlə işləməyə cavabdehdir, digəri hesablamalara, üçüncüsü fayllarla işləməyə.
Budur, sadə bir layihənin tipik strukturu:
- Program.cs — əsas ofis: burada “giriş nöqtəsi” var, hər şey buradan başlayır.
- User.cs — istifadəçi məlumatlarının saxlanıldığı və emal olunduğu şöbə.
- Calculator.cs — hesablamalar şöbəsi.
- FileHelper.cs — fayl üzrə mütəxəssislər.
Hətta ən kiçik proqramda adətən ən azı bir class olur. Böyük layihələr isə artıq yüzlərlə class-dan ibarət “göydələn” kimidir!
2. Class — alətlər qutusu kimidir
C# obyekt-yönümlü dildir və hər şey burada obyektlərdir. Obyekt tiplərinə class deyilir.
Class — sanki qutu və ya dolabdır, ora lazım olan şeyləri: dəyişənləri, method-ları, property-ləri yığırıq. Təsəvvür elə “Çəkiclər” yazılmış qutu var: içində yalnız çəkiclə bağlı alətlər var.
class Example
{
// Burada bizim alətlər olacaq: dəyişənlər, method-lar, property-lər
}
Class-lar adətən dəyişənlər və funksiyalar saxlayır. C#-da class dəyişənlərinə field, class funksiyalarına isə method deyilir. Amma mahiyyət dəyişmir.
Birinci kodumuzu xatırlayırsan?
Console.WriteLine("Hamıya salam!");
string name = Console.ReadLine();
Bu kodda həm class, həm də method-lar var:
- Console — konsolla işləmək üçün method-lar (funksiyalar) saxlayan class-dır.
- WriteLine — Console class-ının method-u, ekrana mətn çıxarır.
- ReadLine — Console class-ının method-u, klaviaturadan daxil olunanı oxuyur.
Bütün proqramlaşdırma bir növ öz class və method-larını yazıb, başqa class-ların method-larını çağırmaqdan ibarətdir.
3. Class-ın field-ləri (dəyişənləri) — onun yaddaşıdır
Class daxilində dəyişənlər saxlamaq olar (onlara tez-tez “field” deyirlər). Bu, sanki yaddaş hüceyrələridir, ora hansısa məlumatları qoyuruq.
class Counter
{
int value; // field — burada Counter sayğacının cari dəyəri saxlanacaq
}
Field-lər class-a müxtəlif method-lar çağıranda nəyisə “yadda saxlamağa” imkan verir. Məsələn, neçə dəfə düyməyə basıldığını saymaq.
Field-lərin sayı istədiyin qədər ola bilər. Nümunə:
class User
{
int id; // istifadəçinin unikal nömrəsi
string name; // istifadəçinin adı
int age; // yaş
string adress; // ünvan
User[] children; // uşaqlar
}
4. Method-lar — class-ın edə bildiyi hərəkətlərdir
Method-lar — class-ın “bacarıqları”dır. Əgər class işçidirsə, method-lar onun bilik və bacarıqlarıdır: nə edə bilir.
- Method nəyisə ekrana çıxara bilər.
- İki ədədin cəmini hesablaya bilər.
- “Girişə” məlumat alıb nəticə qaytara bilər.
Method-un quruluşu:
- Qaytardığı dəyərin tipi (məsələn, void — heç nə qaytarmırsa, ya da int — ədəd qaytarırsa)
- Method-un adı (məsələn, Print)
- Mötərizədə parametrlər (boş da ola bilər)
- Əyri mötərizələr { ... } — method-un bədəni
class Printer
{
public void PrintHello()
{
Console.WriteLine("Salam!");
}
public int Add(int a, int b)
{
return a + b;
}
}
Method-lar və onlarla bağlı bütün incəlikləri yaxın mühazirələrdə daha ətraflı öyrənəcəksən.
5. Property-lər — ağıllı dəyişənlər
Property (property) — “gücləndirilmiş” dəyişən kimidir: sadəcə dəyər saxlamır, həm də dəyər alınanda və ya dəyişəndə nəsə edə bilər.
Məsələn, həyatdan: işçinin maaşını sadəcə dəyişə bilməzsən — mühasib yoxlayacaq, hər şey düzgündürmü. Property də məlumatı “yoxlaya” bilər:
class Person
{
private int age; // class-ın dəyişəni (field)
public int Age // Age property-si. Dəyərləri class-ın age dəyişənində saxlayır.
{
get { return age; } // get method-u - kimsə Age dəyərini almaq istəyəndə çağırılır
set // Set method-u - kimsə Age dəyərini dəyişmək istəyəndə çağırılır
{
if (value >= 0)
age = value;
}
}
}
set method-undakı kod mənfi yaş qoymağa imkan verməyəcək. Property-ləri daha ətraflı yaxın mühazirələrdə öyrənəcəyik.
6. Access modifier-lər
C#-da müəyyən edə bilərsən ki, class-ın hansı hissələri başqa class-lardan görünür, hansılar isə yalnız daxildə istifadə olunur. Bunun üçün access modifier-lər var. Field, method və ya class adının qarşısında public yazılıbsa, ona proqramın istənilən yerindən müraciət etmək olar.
Əgər field, method və ya class adının qarşısında private yazılıbsa, ona yalnız həmin class-dan müraciət etmək olar. Başqa class-lar bu field və ya method-u görməyəcək. Sanki ümumiyyətlə yoxdur.
- public — hamıya görünür. Belə method və property-lər başqa class-lardan istifadə oluna bilər.
- private — yalnız class-ın içində görünür. Bunlar daxili detallardır, başqalarına lazım deyil.
class Demo
{
public int OpenValue; // çöldən görünür
private int secretValue; // yalnız içəridə görünür
public void ShowOpen() { Console.WriteLine(OpenValue); }
private void HideSecret() { Console.WriteLine(secretValue); }
}
Qızıl qayda: field-lər adətən private olur, çölə isə yalnız lazım olan method və property-lər (public) çıxarılır.
7. Real class necə görünür
Budur, “yığılmış” nümunə — mini-kalkulyator:
class Calculator
{
private int result; // nəticəni saxlamaq üçün field
public int Result
{
get { return result; }
private set { result = value; } // yalnız class daxilində dəyişmək olar
}
public void Add(int a, int b)
{
result = a + b;
}
public void Clear()
{
result = 0;
}
}
Belə yanaşma demək olar ki, bütün müasir C# proqramlarında var!
8. Top-level statement-lər
Əslində C#-da bütün kod həmişə class-ların içində olur. Class — proqramın minimal vahididir. Proqramda çoxlu class ola bilər, amma ən azı bir dənə olmalıdır.
Bir dəqiqə, bəs biz yazdığımız kodda heç class yox idi?!
Bu, C# dilinin yeni “fənd”lərindən biridir: kodu class-sız yazmaq olar, C# compiler özü onu class-a çevirəcək.
Tutaq ki, səndə belə kod var Program.cs faylında:
// sənin kodun
WriteSmile();
WriteSmile();
WriteSmile();
//öz funksiyan
void WriteSmile()
{
Console.WriteLine(":)");
}
C# compiler bunu belə çevirəcək:
using System;
class Program
{
static void Main() // sənin kodun
{
WriteSmile();
WriteSmile();
WriteSmile();
}
static void WriteSmile() //öz funksiyan
{
Console.WriteLine(":)");
}
}
Əgər mühazirənin yalnız yarısını başa düşdünsə, problem deyil: əsas odur ki, məğzini tutasan. Yaxın mühazirələrdə burada yazılan hər şeyi addım-addım izah edəcəyik.
GO TO FULL VERSION