Classes in C# | Uzbek
Tags: class, csharp, uzbek, dotnet
Published: 2024-06-17 10:15:14

Assalomu alaykum barchaga. Bugun biza C# dasturlash tilida `Class` tushunchasi bilan bog'liq miflarni sindiramiz. Dastlab Classlar haqida gaplashsak. Class bu reference Type hisoblanadi. Va xotirada HEAP dan joy oladi. 

C# dasturlash tilida `class` - bu Object-Oriented-Programming(OOP)ni asosiy tushunchalaridan biri hisoblanadi. Classlar yordamida yangi turdagi obekt yaratishingiz va ularga ishlov berish, methodlarni(function) guruhlashingiz mumkin. 

**Class nima ?** 
Class bu - obektlarning tuzilishi, xususiyatlari(properties), methodlar(functions)larni aniqlovchi shablon yoki qolib. Yuqorida aytganimizdek siz - Classlar yordamida yangi obektlarni yaratishingiz, ularga ishlov berishingiz va methodlarni guruhlashingiz mumkin bo'ladi. 


**Classlar nima uchun kerak ?**
`- 1 - Ma'lumotlarni guruhlash: Classlar yordamida ma'lumotlar va methodlarni guruhlash imkoniyatiga ega bo'lamiz. Bu bizga codeni o'qish va yaxshi tushunish imkoniyatini beradi. 
- 2 - Qayta foydalanish: Bir marta yaratilgan classdan ko'p joyda foydalanish mumkin. Bu esa codeni yaxshi ishlashini ta'minlaydi (100 xil nomli o'zgaruvchi yaratib o'tirmaysiz 🔥)
- 3 - Encasulation: Classlar ma'lumotlarni yashirish va ularga kirishni nazorat qilish, imkonini beradi. 
- 4 - Inheritance: Bir class boshqa classlardan meros olib(nusxa olib), uning xususiyatlari va methodlarini o'zida saqlab qolishi mumkin.`

_Classlar haqida biroz nazariy bilimga ega bo'ldik. Endi undan foydalanishni bilib olamiz._

Person.cs
```
// Bir Person degan class yaratib olamiz
public class Person
{
    // xususiyatlari 👇
    public string Name { get; set; }
    public int Age { get; set; }

    // Salomlashish uchun Method
    public void Greeting()
        => Console.WriteLine($"Assalomu alaykum. Mening ismim: "{Name}" va men {Age}") yoshdaman");
} 
```
Yuqoridagi codeda bir inson haqida ma'lumotlarni olib salomlashish uchun bir method yaratdik. Endi shu class asosida bir obekt yaratib olamiz...

Program.cs 
```
public class Program 
{
      // Yangi obekt hosil qilib olamiz. Person classi asosida
     Person odam = new Person();

     // Propertylarga value berib chiqamiz
     odam.Name = "Ozodbek";
     odam.Age = 17;


     // Salomlashish uchun methodni ushbu obekt orqali ishlatib ko'ramiz
     odam.Greeting();
}
```

Output:Terminal
```
Assalomu alaykum. Mening ismim **Ozodbek** va men 17 yoshdaman
```


Classlarni tushunib oldik. Endi Constructor haqida ham bir ikki shingil ma'lumot berib o'tmasam bo'lmaydi. 


**Constructor** - _bu, classning obektini yaratishda automatic ravishda chaqiriladigan methoddir. Return type mavjud emas. Constructor yordamida boshlang'ich qiymatlarni berishimiz mumkin._

**Person.cs**
```
// Boyagi, Person deganda misol qilamiz
public class Person
{
    // xususiyatlari 👇
    public string Name { get; set; }
    public int Age { get; set; }

// Constructor 
    public Person(string name, int age) 
    {
        Name = name;
        Age = age; 
    }
    
    public void Greeting()
        => Console.WriteLine($"Salom mening ismim{Name}, Yoshim {Age} da")
}
```

Constructorni chiqaramiz
**Program.cs**
```
public class Program 
{
    public void Main() 
    {
        Person odam2 = new Person("Ozodbek", 17);
        odam2.Greeting();
    }
}
```

**Inheritance** - bir class ikkinchi classdan meros olib uni xususiyatlari va mehtodlari o'zida saqlab qolishi uchun kerak.
**Inheritance**  orqali ham ishlab ko'rishimiz kerak. 

**Program.cs**
```
// Asosiy animal class
public class Animal 
{
     public string Name { get; set; }

     public void speak() 
         => Console>WriteLine($"The {Name} sound");
}



// Inheritance (meros) olamiz. 
public class Dog : Animal
{
    public void Color() 
       => Console>WriteLine("Dog color is Black");
}
```

Program.cs 
```
public class Program 
{
       public static void Main() 
       {
            Dog kuchuk = new Dog();
            kuchuk.Name = "Rex";
            kuchuk.Speak();
            kuchuk .Color();
       }
}
```

**Output**
```
The Rex sound
Dog color is Black 
```

**Xulosa**: Classlar bu C# dasturlash tilida asosiy tushuncha va u yordamida strukturalash, ma'lumotlarni guruhlash va hokazolarni qilish mumkin. O'rgangan misollarimizni review qilish orqali siz chuqurroq tushunib ham olishingiz mumkin(Classlarni). Bu misollar orqali bir sodda tilda tushuntirib berdik degan umiddaman😊