โฌ…๏ธ Bosh sahifaga
1 / 12

๐Ÿ“š Python OOP - 11-dars

OOP amaliyoti: Kutubxona tizimi

Oddiy Class va Objectlar bilan kichik loyiha

Assalomu alaykum, yosh dasturchilar! ๐Ÿ˜Š
Bugun biz OOP bilimlarimizni amalda sinab, kutubxona tizimi yaratamiz

120 daqiqa

๐Ÿ“‹ Dars rejasi

๐ŸŽฏ Loyiha talablari

Bizning kutubxona tizimi quyidagi funksionallikka ega bo'ladi:

๐Ÿ“– Kutubxona tizimi funksiyalari:

  • Kitob nomli sinf - kitobning nomi va muallifini saqlaydi
  • Kutubxona nomli sinf - kitoblar ro'yxatini boshqaradi
  • Kitob qo'shish, o'chirish va ro'yxatni ko'rsatish metodlari
  • Class atributlari va instance metodlardan foydalanish

๐Ÿ’ก Loyiha tuzilmasi:

main.py โ€” asosiy dastur, unda sinflar va loyiha logikasi bo'ladi

๐Ÿ“– Kitob sinfi

Birinchi qismda Kitob sinfini yaratamiz:

class Kitob:
    def __init__(self, nomi, muallif):
        self.nomi = nomi
        self.muallif = muallif
        self.olingan = False
    
    def kitob_malumot(self):
        return f"Kitob: {self.nomi}, Muallif: {self.muallif}"
    
    def kitob_olish(self):
        if not self.olingan:
            self.olingan = True
            return f"'{self.nomi}' kitobi olindi"
        else:
            return f"'{self.nomi}' kitobi allaqachon olingan"
    
    def kitob_qaytarish(self):
        if self.olingan:
            self.olingan = False
            return f"'{self.nomi}' kitobi qaytarildi"
        else:
            return f"'{self.nomi}' kitobi olinmagan"

# Test qilish
kitob1 = Kitob("Alpomish", "Xalq ertagi")
kitob2 = Kitob("O'tgan kunlar", "Abdulla Qodiriy")

print(kitob1.kitob_malumot())
print(kitob1.kitob_olish())
print(kitob1.kitob_qaytarish())

๐Ÿ›๏ธ Kutubxona sinfi

Endi Kutubxona sinfini yaratamiz:

class Kutubxona:
    def __init__(self, nomi):
        self.nomi = nomi
        self.kitoblar = []
    
    def kitob_qoshish(self, kitob):
        self.kitoblar.append(kitob)
        return f"'{kitob.nomi}' kitobi qo'shildi"
    
    def kitob_olish(self, kitob_nomi):
        for kitob in self.kitoblar:
            if kitob.nomi == kitob_nomi:
                return kitob.kitob_olish()
        return f"'{kitob_nomi}' kitobi topilmadi"
    
    def kitob_qaytarish(self, kitob_nomi):
        for kitob in self.kitoblar:
            if kitob.nomi == kitob_nomi:
                return kitob.kitob_qaytarish()
        return f"'{kitob_nomi}' kitobi topilmadi"
    
    def kitoblar_royxati(self):
        if not self.kitoblar:
            return "Kutubxonada kitob yo'q"
        
        royxat = f"=== {self.nomi} kutubxonasi ===\n"
        for i, kitob in enumerate(self.kitoblar, 1):
            holat = "Olingan" if kitob.olingan else "Mavjud"
            royxat += f"{i}. {kitob.nomi} - {kitob.muallif} ({holat})\n"
        return royxat

๐Ÿงช Kutubxona test

# Kutubxona yaratish
kutubxona = Kutubxona("Alisher Navoiy")

# Kitoblar yaratish
kitob1 = Kitob("Alpomish", "Xalq ertagi")
kitob2 = Kitob("O'tgan kunlar", "Abdulla Qodiriy")
kitob3 = Kitob("Python", "Ali")

# Kitoblarni kutubxonaga qo'shish
print(kutubxona.kitob_qoshish(kitob1))
print(kutubxona.kitob_qoshish(kitob2))
print(kutubxona.kitob_qoshish(kitob3))

# Kitoblar ro'yxatini ko'rsatish
print(kutubxona.kitoblar_royxati())

# Kitob olish
print(kutubxona.kitob_olish("Alpomish"))
print(kutubxona.kitob_olish("Python"))

# Yangi ro'yxat
print(kutubxona.kitoblar_royxati())

๐Ÿ’ช Amaliy mashq 1

๐Ÿช Do'kon tizimi

Vazifa: Do'kon tizimi yarating

  • Mahsulot sinfi - nomi, narxi, soni
  • Dokon sinfi - mahsulotlar ro'yxatini boshqaradi
  • Mahsulot qo'shish, o'chirish, ro'yxatni ko'rsatish
  • Mahsulot sotish va qaytarish funksiyalari

Vaqt: 10 daqiqa โฐ

๐Ÿ’ช Amaliy mashq 2

๐Ÿ‘จโ€๐ŸŽ“ Talabalar tizimi

Vazifa: Talabalar tizimi yarating

  • Talaba sinfi - ismi, kursi, bahosi
  • Universitet sinfi - talabalar ro'yxatini boshqaradi
  • Talaba qo'shish, o'chirish, ro'yxatni ko'rsatish
  • Bahoni o'zgartirish va kursni oshirish

Vaqt: 10 daqiqa โฐ

๐Ÿ’ช Amaliy mashq 3

๐Ÿš— Avtosalond tizimi

Vazifa: Avtosalond tizimi yarating

  • Mashina sinfi - modeli, rangi, narxi, sotilgan
  • Avtosalond sinfi - mashinalar ro'yxatini boshqaradi
  • Mashina qo'shish, sotish, ro'yxatni ko'rsatish
  • Mashina qidirish va narxni o'zgartirish

Vaqt: 10 daqiqa โฐ

๐Ÿ  Uy vazifasi

๐Ÿฅ Vazifa 1: Shifoxona tizimi
  • Bemor sinfi - ismi, yoshi, kasalligi
  • Shifoxona sinfi - bemorlar ro'yxatini boshqaradi
  • Bemor qo'shish, chiqarish, ro'yxatni ko'rsatish
๐Ÿซ Vazifa 2: Maktab tizimi
  • Oquvchi sinfi - ismi, sinfi, bahosi
  • Maktab sinfi - o'quvchilar ro'yxatini boshqaradi
  • O'quvchi qo'shish, bahoni o'zgartirish
๐Ÿจ Vazifa 3: Mehmonxona tizimi
  • Xona sinfi - raqami, turi, band
  • Mehmonxona sinfi - xonalar ro'yxatini boshqaradi
  • Xona band qilish, bo'shatish, ro'yxatni ko'rsatish

๐ŸŽ‰ Xulosa

Bugun nimalarni o'rgandik?

๐Ÿ“– Kitob sinfi

Kitob ma'lumotlarini saqlash

๐Ÿ›๏ธ Kutubxona sinfi

Kitoblar ro'yxatini boshqarish

๐Ÿ”ง Metodlar

Qo'shish, olish, qaytarish

๐Ÿ’ป Amaliy loyiha

To'liq ishlaydigan tizim

Keyingi dars: Inheritance (Meros) mavzusini o'rganamiz

Savollaringiz bo'lsa, yozib qoldiring! ๐Ÿ˜Š

๐Ÿ”„ Qayta ko'rib chiqish

โ“ Savollar:

  • Class va object o'rtasidagi farq nima?
  • __init__ metodining vazifasi nima?
  • Instance metodlar qanday ishlaydi?
  • Kutubxona tizimida qanday funksiyalar bor?

๐Ÿ’ก Muhim eslatma:

OOP yordamida katta loyihalarni tartibli va tushunarli qilish mumkin. Har bir sinf o'z vazifasini bajarishi kerak!