DEV Community

Elshod Ibodullayev
Elshod Ibodullayev

Posted on

C# dasturlashda OOP (obyektga yo‘naltirilgan dasturlash) asoslari: class, object, inheritance, polymorphism, interface

👩‍💻 OOP asoslari: C# da classlar va interfeyslar

Dasturlashda OOP (Object-Oriented Programming) — eng mashhur yondashuvlardan biri.

OOP orqali kodni tartibli, qayta ishlatiladigan va tushunarli yozish mumkin.

OOP asosiy to‘rt tamoyili bor:

  1. Encapsulation (Inkapulyatsiya)
  2. Inheritance (Merosxo‘rlik)
  3. Polymorphism (Ko‘p shakllilik)
  4. Abstraction (Abstraktsiya, ko‘pincha interfeyslar orqali)

Keling, C# misollari bilan ko‘rib chiqamiz.


🔹 Class va Object

Class — obyektning shabloni (reja, blueprint).

Object — class asosida yaratilgan aniq nusxa.

// Class
public class Car
{
    public string Brand { get; set; }
    public int Speed { get; set; }

    public void Drive()
    {
        Console.WriteLine($"{Brand} {Speed} km/soat tezlikda ketmoqda.");
    }
}

// Object
Car car1 = new Car { Brand = "BMW", Speed = 180 };
car1.Drive(); // Natija: BMW 180 km/soat tezlikda ketmoqda.
Enter fullscreen mode Exit fullscreen mode

Esda qoladigan qoidasi:

➡️ Class = chizilgan reja, Object = o‘sha reja asosida qurilgan uy.


🔹 Encapsulation (Inkapulyatsiya)

Ma’nosi: Obyekt ichidagi ma’lumotni tashqaridan yashirish va faqat kerakli joylarini ko‘rsatish.

Buni private va public access modifier’lar orqali qilamiz.

public class BankAccount
{
    private decimal balance; // tashqaridan bevosita ko‘rinmaydi

    public void Deposit(decimal amount) => balance += amount;
    public void Withdraw(decimal amount)
    {
        if (amount <= balance) balance -= amount;
        else Console.WriteLine("Yetarli mablag‘ yo‘q!");
    }
    public decimal GetBalance() => balance;
}

// Foydalanish
BankAccount account = new BankAccount();
account.Deposit(1000);
account.Withdraw(200);
Console.WriteLine(account.GetBalance()); // 800
Enter fullscreen mode Exit fullscreen mode

➡️ Foydalanuvchi hisobdagi pulni to‘g‘ridan-to‘g‘ri o‘zgartira olmaydi, faqat metodlar orqali.


🔹 Inheritance (Merosxo‘rlik)

Ma’nosi: Bitta class boshqa class’ning xususiyat va metodlarini meros qilib oladi.

Kod qayta ishlatiladi.

public class Animal
{
    public string Name { get; set; }
    public void Eat() => Console.WriteLine($"{Name} ovqat yemoqda.");
}

// Merosxo‘r
public class Dog : Animal
{
    public void Bark() => Console.WriteLine($"{Name} hav hav qilyapti!");
}

// Foydalanish
Dog dog = new Dog { Name = "Sharik" };
dog.Eat();  // Sharik ovqat yemoqda.
dog.Bark(); // Sharik hav hav qilyapti!
Enter fullscreen mode Exit fullscreen mode

➡️ Dog class’i avtomatik ravishda Animal class’ining barcha metodlariga ega bo‘ladi.


🔹 Polymorphism (Ko‘p shakllilik)

Ma’nosi: Bir xil metod turli classlarda har xil ishlashi mumkin.

Buning uchun virtual va override ishlatiladi.

public class Shape
{
    public virtual void Draw()
    {
        Console.WriteLine("Shakl chizilmoqda");
    }
}

public class Circle : Shape
{
    public override void Draw()
    {
        Console.WriteLine("Aylana chizilmoqda");
    }
}

public class Square : Shape
{
    public override void Draw()
    {
        Console.WriteLine("Kvadrat chizilmoqda");
    }
}

// Foydalanish
Shape s1 = new Circle();
Shape s2 = new Square();

s1.Draw(); // Aylana chizilmoqda
s2.Draw(); // Kvadrat chizilmoqda
Enter fullscreen mode Exit fullscreen mode

➡️ Bitta metod (Draw) lekin turlicha natija beradi.


🔹 Interface (Abstraktsiya)

Ma’nosi: Shartnoma (contract).

Interface metodlar faqat imzo beradi, ammo kod yozilmaydi.

Uni class’lar bajaradi (implements qiladi).

public interface IPayment
{
    void Pay(decimal amount);
}

public class CreditCardPayment : IPayment
{
    public void Pay(decimal amount)
    {
        Console.WriteLine($"{amount} so'm kredit karta orqali to‘landi.");
    }
}

public class PayPalPayment : IPayment
{
    public void Pay(decimal amount)
    {
        Console.WriteLine($"{amount} so'm PayPal orqali to‘landi.");
    }
}

// Foydalanish
IPayment payment1 = new CreditCardPayment();
payment1.Pay(500);  // 500 so'm kredit karta orqali to‘landi.

IPayment payment2 = new PayPalPayment();
payment2.Pay(700);  // 700 so'm PayPal orqali to‘landi.
Enter fullscreen mode Exit fullscreen mode

➡️ Interface orqali moslashuvchan va kengaytiriladigan kod yozish mumkin.


🧠 Qisqa taqqoslash

Tamoyil Oddiy misol Esda qolishi uchun
Encapsulation Bank hisobidagi pul faqat metod orqali Xavfsizlik
Inheritance Dog → Animal Meros olish
Polymorphism Draw() → Circle vs Square Bir xil metod, turlicha natija
Interface IPayment: CreditCard, PayPal Shartnoma

🧪 Mashqlar

  1. Person class yozing. Student va Teacher undan meros olsin. Har birida o‘z metodini qo‘shing.
  2. IVehicle interface yozing. Car va Bike uni implements qilsin (Drive metodini har xil yozing).
  3. Shape class’ida Area() virtual metod qiling. Circle va Rectangle override qilsin.

✅ Xulosa

  • Class = obyektlar uchun shablon
  • Object = shablondan yaratilgan nusxa
  • Encapsulation = ma’lumotni yashirish
  • Inheritance = kodni qayta ishlatish
  • Polymorphism = turli xil shaklda ishlash
  • Interface = shartnoma, kod moslashuvchanligi

👉 Shu asoslarni yaxshi o‘zlashtirsangiz, C# va umuman OOP asosli tillarni o‘rganish ancha osonlashadi.
ElshodDev GitHub Profilim
Telegram channel

Top comments (0)