โฌ…๏ธ Bosh sahifaga
1 / 14

๐Ÿ“š Python OOP - 2-dars

Class va Object batafsil

Instance va Class Methods

Assalomu alaykum, yosh dasturchilar! ๐Ÿ˜Š
Bugun biz Class va Object tushunchalarini chuqurroq o'rganamiz

120 daqiqa

๐Ÿ“‹ Dars rejasi

๐Ÿ”„ Class va Object qayta ko'rib chiqish

class Talaba:
    # Class attribute - barcha talabalar uchun umumiy
    universitet = "TATU"
    
    def __init__(self, ism, yosh, kurs):
        # Instance attributes - har bir talaba uchun alohida
        self.ism = ism
        self.yosh = yosh
        self.kurs = kurs
        self.ball = 0
    
    def oqish(self):
        print(f"{self.ism} o'qiyapti...")

# Object yaratish
talaba1 = Talaba("Ali", 18, 1)
talaba2 = Talaba("Zilola", 19, 2)

๐Ÿ’ก Eslatma:

  • Talaba - class (shablon)
  • talaba1, talaba2 - objectlar (haqiqiy narsalar)
  • self - objectning o'zini bildiradi
  • __init__ - constructor

โš™๏ธ Instance Methods batafsil

Instance method - bu object bilan ishlaydigan metod.

class Mashina:
    def __init__(self, marka, model, yil):
        self.marka = marka
        self.model = model
        self.yil = yil
        self.tezlik = 0
        self.yoniq = False
        self.yoqlg_i = 50  # litr
    
    # Instance method - object bilan ishlaydi
    def yoqish(self):
        if self.yoqlg_i > 0:
            self.yoniq = True
            print(f"{self.marka} {self.model} yoqildi!")
        else:
            print("Yoqilg'i yo'q!")
    
    def harakatlanish(self):
        if self.yoniq:
            self.tezlik = 60
            print(f"{self.marka} harakatlanmoqda...")
        else:
            print(f"{self.marka} o'chik!")

๐Ÿ”ง Class Methods va Static Methods

Class Method

@classmethod
def universitet_haqida(cls):
    print(f"Bu {cls.universitet} universiteti!")
    print(f"Jami talabalar soni: {cls.talabalar_soni}")

Static Method

@staticmethod
def yosh_tekshirish(yosh):
    if yosh >= 16:
        return "Talaba bo'lish mumkin"
    else:
        return "Yosh yetarli emas"

๐Ÿ’ก Muhim farqlar:

  • Instance method: self - object bilan ishlaydi
  • Class method: cls - class bilan ishlaydi
  • Static method: parametr yo'q - mustaqil ishlaydi

๐ŸŽฏ self parametri va ishlatilishi

self - bu objectning o'zini bildiradi. Har bir instance method'ning birinchi parametri.

class O'yinchi:
    def __init__(self, ism, daraja=1):
        self.ism = ism
        self.daraja = daraja
        self.jon = 100
        self.kuch = 10
        self.defans = 5
        self.tajriba = 0
    
    def hujum(self, dushman):
        # self - bu o'yinchi object'ini bildiradi
        zarar = self.kuch * 2
        print(f"{self.ism} {dushman}ga {zarar} zarar yetkazdi!")
        self.tajriba += 10
        return zarar
    
    def himoya(self):
        # self orqali object'ning xususiyatlariga murojaat
        himoya_kuchi = self.defans * 1.5
        print(f"{self.ism} himoya qildi! Himoya kuchi: {himoya_kuchi}")
        return himoya_kuchi

๐ŸŽฎ Amaliy loyiha: O'yinchi class

class O'yinchi:
    # Class attributes
    o'yinchi_soni = 0
    o'yin_nomi = "Epic Adventure"
    
    def __init__(self, ism, sinf="Jangchi"):
        self.ism = ism
        self.sinf = sinf
        self.daraja = 1
        self.jon = 100
        self.kuch = 10
        self.defans = 5
        self.tezlik = 8
        self.tajriba = 0
        self.pul = 100
        self.uskunalar = []
        O'yinchi.o'yinchi_soni += 1
    
    # Instance methods
    def hujum(self, dushman):
        zarar = self.kuch * 2
        print(f"{self.ism} {dushman}ga {zarar} zarar yetkazdi!")
        self.tajriba += 10
        return zarar
    
    def daraja_oshirish(self):
        if self.tajriba >= 100:
            self.daraja += 1
            self.kuch += 5
            self.defans += 3
            self.tezlik += 2
            self.jon += 20
            self.tajriba = 0
            print(f"๐ŸŽ‰ {self.ism} {self.daraja}-darajaga ko'tarildi!")

๐Ÿ—๏ธ Class Methods misoli

    # Class methods
    @classmethod
    def o'yin_haqida(cls):
        print(f"O'yin nomi: {cls.o'yin_nomi}")
        print(f"Jami o'yinchilar soni: {cls.o'yinchi_soni}")
    
    @classmethod
    def yangi_o'yinchi(cls, ism, sinf):
        print(f"Yangi o'yinchi qo'shildi: {ism} ({sinf})")
        return cls(ism, sinf)
    
    # Static methods
    @staticmethod
    def zarar_hisoblash(kuch, defans):
        return max(1, kuch - defans)
    
    @staticmethod
    def daraja_tekshirish(tajriba):
        return tajriba // 100 + 1

๐Ÿ’ก Class Methods afzalliklari:

  • Class bilan ishlaydi
  • cls parametrini oladi
  • Class attribute'larga kirish mumkin

๐Ÿงช Test qilish

# Test qilish
print("=== O'yin boshlanmoqda ===")
O'yinchi.o'yin_haqida()

print("\n=== O'yinchilar yaratilmoqda ===")
oyinchi1 = O'yinchi("Ali", "Jangchi")
oyinchi2 = O'yinchi("Zilola", "Sehrgar")
oyinchi3 = O'yinchi.yangi_o'yinchi("Sardor", "Kamandir")

print("\n=== O'yin jarayoni ===")
oyinchi1.ma_lumot_ko_rsatish()
oyinchi1.hujum("Goblin")
oyinchi1.hujum("Ork")
oyinchi1.hujum("Dragon")
oyinchi1.hujum("Boss")
oyinchi1.daraja_oshirish()
oyinchi1.uskuna_sotib_olish("Qilich", 50)
oyinchi1.ma_lumot_ko_rsatish()

๐ŸŽฏ Mashq 1: Telefon class

๐Ÿ“ฑ Vazifa:
  • Telefon class yarating
  • Instance methods: yoqish(), o'chirish(), qo'ng'iroq(), xabar_yuborish(), batareya_holati()
  • Class method: telefon_ma'lumotlari()
  • Static method: parol_tekshirish()

Vaqt: 10 daqiqa โฐ

๐ŸŽฏ Mashq 2: Bank class

๐Ÿฆ Vazifa:
  • Bank class yarating
  • Instance methods: pul_qo'shish(), pul_olish(), balans_ko'rsatish()
  • Class method: bank_ma'lumotlari()
  • Static method: foiz_hisoblash(), parol_tekshirish()

Vaqt: 10 daqiqa โฐ

๐Ÿ  Uyga vazifa

๐Ÿ“š Vazifa 1: Kutubxona class
  • Instance methods: kitob_qo'shish(), kitob_olish(), ma'lumot_ko'rsatish()
  • Class method: kutubxona_statistikasi()
  • Static method: kitob_tekshirish(), narx_hisoblash()
๐Ÿฆ Vazifa 2: Bank class
  • Instance methods: pul_qo'shish(), pul_olish(), balans_ko'rsatish()
  • Class method: bank_ma'lumotlari()
  • Static method: foiz_hisoblash(), parol_tekshirish()

๐ŸŽ‰ Xulosa

Bugun nimalarni o'rgandik?

โš™๏ธ Instance Methods

Object bilan ishlaydi, self parametrini oladi

๐Ÿ—๏ธ Class Methods

Class bilan ishlaydi, @classmethod dekoratori

๐Ÿ”ง Static Methods

Mustaqil ishlaydi, @staticmethod dekoratori

๐ŸŽฏ self parametri

Objectning o'zini bildiradi, avtomatik uzatiladi

Keyingi dars: Inheritance (Meros) mavzusini o'rganamiz

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

๐Ÿ’ก Muhim eslatma

Class va Object tushunchalari OOP'ning asosi

Ularni yaxshi o'rganing va professional dasturchi bo'ling! ๐Ÿš€

Dars tugadi!

Keyingi darsda Inheritance (Meros) haqida o'rganamiz