👩💻 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:
- Encapsulation (Inkapulyatsiya)
- Inheritance (Merosxo‘rlik)
- Polymorphism (Ko‘p shakllilik)
- 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.
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
➡️ 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!
➡️ 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
➡️ 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.
➡️ 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
-
Person
class yozing.Student
vaTeacher
undan meros olsin. Har birida o‘z metodini qo‘shing. -
IVehicle
interface yozing.Car
vaBike
uni implements qilsin (Drive
metodini har xil yozing). -
Shape
class’idaArea()
virtual metod qiling.Circle
vaRectangle
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)