CodeGym /Kurslar /C# SELF /Statik field-lər və method-lar

Statik field-lər və method-lar

C# SELF
Səviyyə , Dərs
Mövcuddur

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
}
Obyektin field-lərinin elan olunmasına nümunə

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.");
    }
}
Obyektin method-larına nümunə

İ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-in istifadəsinə nümunə

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;
    }
}
Statik method-a nümunə

İ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
public string Name;
Hər obyektin içində Obyektin şəxsi dataları cat1.Name, cat2.Name
Obyektin method-u
public void Meow(){}
Hər obyektin içində Obyektin field-lərindən istifadə edən hərəkətlər cat1.Meow()
Statik field
public static int C;
Bütün class üçün birdənə Bütün obyektlər üçün ümumi data Cat.C
Statik method
public static ...
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.

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION