1. Obyektin field-ləri: obyekt öz datalarını burada saxlayır
C#-da (və ümumiyyətlə əksər proqramlaşdırma dillərində) tez-tez deyirlər: «hər şey obyekt-dir». Obyekt — kompüter yaddaşında “virtual bir əşya”dır, hansı ki, nəsə saxlaya bilir (data) və nəsə edə bilir (method-lar). Başqa sözlə, obyektin vəziyyəti (field-lər, data) və davranışı (method-lar) olur.
Obyekt nümunələri:
- Oyunda pişik (Cat)
- Sayt istifadəçisi (User)
- Kitabxanada kitab (Book)
- Parkovkada maşın (Car)
Sən obyekt yaradanda — sanki bir şablonun (class-ın) kopyasını düzəldirsən və bu kopya öz datası ilə işləyə bilir.
Field-lər — obyektin “içində olan” və onun fərdi datalarını saxlayan dəyişənlərdir.
Həyatdan nümunə
Hər pişiyin adı, yaşı, rəngi var. Bu datalar fərdidir — hər pişiyin özünə məxsusdur.
public class Cat
{
public string Name; // Pişiyin adı — obyektin field-i
public int Age; // Pişiyin yaşı — obyektin field-i
public string Color; // Pişiyin rəngi — obyektin field-i
}
Obyektləri yaradanda:
Cat cat1 = new Cat();
cat1.Name = "Barsik";
cat1.Age = 2;
cat1.Color = "boz";
Cat cat2 = new Cat();
cat2.Name = "Murka";
cat2.Age = 5;
cat2.Color = "qara";
Hər obyektin öz field dəyərləri var!
| Obyekt | Name | Age | Color |
|---|---|---|---|
| cat1 | Barsik | 2 | boz |
| cat2 | Murka | 5 | qara |
Field — obyektin içində olan “cib” kimidir, ora nəsə qoya bilər.
2. Obyektin method-ları: obyekt nə edə bilir
Method — obyektin “hərəkəti”, “bacarığı” və ya “funksiyası”dır. Method — obyektə “çağırmaq” mümkün olan kod parçasıdır.
Həyatdan nümunə
Pişiyin hərəkətləri var: o miyoldaya, qaça, yeyə bilər.
public class Cat
{
public string Name;
public void Meow()
{
Console.WriteLine($"{Name} deyir: Miyau!");
}
public void Sleep()
{
Console.WriteLine($"{Name} yatır.");
}
}
İstifadə:
Cat cat1 = new Cat();
cat1.Name = "Barsik";
cat1.Meow(); // Barsik deyir: Miyau!
cat1.Sleep(); // Barsik yatır.
Hər obyektin öz method-ları var və onlar onun şəxsi field-lərindən istifadə edir!
3. Statik field-lər (static fields): ümumi data
Bəzən istəyirsən ki, field-də obyektin fərdi datasını yox, bütün class üçün ümumi informasiyanı saxlayasan. Məsələn, neçə pişik yaradılıb saymaq və ya bütün pişiklər üçün “maksimum səs” təyin etmək.
Bunun üçün C#-da statik field-lər istifadə olunur — onlar static sözü ilə elan edilir.
public class Cat
{
public string Name;
public static int Count = 0; // Statik field
public Cat(string name)
{
Name = name;
Count++; // Ümumi pişik sayğacını artırırıq
}
}
//Cat class-ı ilə iş
Cat c1 = new Cat("Barsik");
Cat c2 = new Cat("Murka");
Console.WriteLine(Cat.Count); // 2 — bütün obyektlər üçün ümumidir
Statik field bütün class üçün birdənə olur, onu bütün obyektlər “bölüşür”.
Ona adətən class adı ilə müraciət edirlər: Cat.Count.
4. Statik method-lar (static methods)
Statik method — konkret obyektə bağlı olmayan, bütün class-a aid olan method-dur.
- Belə method-u obyekt yaratmadan çağırmaq olar.
- Statik method-un içində adi (statik olmayan) field-lərə və method-lara müraciət etmək olmaz — çünki konkret obyekt yoxdur!
public class MathUtils
{
public static int Add(int a, int b)
{
return a + b;
}
}
İstifadə:
int sum = MathUtils.Add(2, 3); // 5
Statik method-lar çox vaxt util — obyektin vəziyyətindən asılı olmayan funksiyalar üçün istifadə olunur.
Sən artıq bir çox statik method-larla tanışsan:
Console.WriteLine();
Console.ReadLine();
Math.Round();
Math.Truncate();
5. Method-ları və field-ləri müqayisə edirik
| Bu nədir? | Necə elan olunur? | Harada saxlanılır? | Nə üçün? | Necə müraciət etmək olar? |
|---|---|---|---|---|
| Obyektin field-i | |
Hər obyektin içində | Obyektin şəxsi dataları | cat1.Name, cat2.Name |
| Obyektin method-u | |
Hər obyektin içində | Obyektin field-lərindən istifadə edən hərəkətlər | cat1.Meow() |
| Statik field | |
Bütün class üçün birdənə | Bütün obyektlər üçün ümumi data | Cat.C |
| Statik method | |
Bütün class üçün birdənə | Obyektə bağlı olmayan ümumi “bacarıqlar” | Cat.Method() |
7. İllustrasiya
Adi field-lər və method-lar:
. +-----------------+
cat1: | Name = "Barsik" |
| Age = 2 |
+-----------------+
+------------------+
cat2: | Name = "Murka" |
| Age = 5 |
+------------------+
Statik field Count:
Cat.Count = 2 // bütün pişiklər üçün bir dənə ümumidir
Method-ların çağırılması:
cat1.Meow(); // Barsik deyir: Miyau!
cat2.Meow(); // Murka deyir: Miyau!
Statik method-un çağırılması:
MathUtils.Add(2, 3); // 5
Nəticələr
- Field-lər — hər obyektin fərdi xüsusiyyətlərinə (xassələrinə) cavabdehdir.
- Method-lar — obyektin nə edə bildiyini təsvir edir.
- Statik field-lər — “ümumi” datanı saxlamaq üçün uyğundur (məsələn, sayğac, qlobal ayarlar).
- Statik method-lar — konkret obyektə bağlı olmayan əməliyyatlar üçün istifadə olunur (məsələn, riyazi funksiyalar).
8. Tez-tez verilən suallar
Statik field-ə obyekt vasitəsilə müraciət etmək olar?
Texniki olaraq — bəli (cat1.Count), amma adətən class vasitəsilə müraciət edirlər (Cat.Count), ki, özünü və başqalarını çaşdırmayasan.
Statik olmayan method-u obyekt yaratmadan çağırmaq olar?
Yox, çünki belə method həmişə konkret obyekt və onun datası ilə işləyir.
Statik method-da adi field-lər və method-lardan istifadə etmək olar?
Yox — çünki statik method hansı obyektə müraciət edəcəyini bilmir.
“Tamamilə statik” class etmək olar?
Bəli, bunun üçün static class yazılır — onu new ilə yaratmaq olmur və belə class-da bütün üzvlər statik olmalıdır.
GO TO FULL VERSION