Skip to main content

7-dars. OOP(Object Oriented Programming). Class and objects. Inheritance

Dars maqsadlari:

  • OOP (Object Oriented Programming) va Class Tushunchasi
    • OOP (Obyektga Yo'naltirilgan Dasturlash) tushunchasini tushunish.
    • Python dasturlash tilida class (sinf) tuzish va ishlatishni o'rganish.
    • OOPning asosiy tushunchalari va afzalliklarini bilish.
  • Inheritance (Voroslik)
    • Inheritance (vorislik) tushunchasini tushunish.
    • Python dasturlash tilida vorislikni qanday amalga oshirishni o'rganish.
    • Vorislik turlarini bilish va ularni amaliy misollar bilan o'rganish.

OOP (Object Oriented Programming) va Class Tushunchasi

Kirish

Bugun biz dasturlash dunyosida juda muhim va qiziqarli mavzu — OOP (Obyektga Yo'naltirilgan Dasturlash) haqida gaplashamiz. OOP dasturlash paradigmasi bo'lib, ma'lumotlarni va ularni ishlov berish usullarini bir joyda saqlashga yordam beradi. OOP tushunchasi dasturlashni yanada soddalashtiradi va kodni qayta ishlatishga imkon beradi.

OOP Nima?

OOP — bu obyektlarga asoslangan dasturlash usuli bo'lib, u dasturiy ta'minot yaratishda bir necha asosiy tushunchalarni o'z ichiga oladi:

  1. Obyektlar: Obyekt — bu ma'lumotlar va ularni ishlov beruvchi funksiyalar to'plami. Misol uchun, "Avtomobil" obyektida "rang", "model", "tezlik" kabi xususiyatlar va "yurgizish", "to'xtatish" kabi funksiyalar bo'lishi mumkin.
  2. Sinf: Sinf — bu obyektlar uchun shablon hisoblanadi. Sinf yordamida yangi obyektlar yaratiladi. Obyektlar sinfdan kelib chiqadi va uning xususiyatlarini o'z ichiga oladi.

OOPning Afzalliklari

  • Modularlik: OOP kodni modullarga bo'lishga yordam beradi, bu esa dasturiy ta'minotni yanada oson boshqarishga imkon yaratadi.
  • Qayta foydalanish: OOP dasturlarni qayta ishlatishga imkon beradi, chunki sinflar va obyektlar boshqa dasturlarda ham ishlatilishi mumkin.
  • Tuzilma: OOP kodni tuzilmali holda yozishga yordam beradi, bu esa dasturiy ta'minotning yanada o'qilishi oson va tushunish uchun qulay bo'lishini ta'minlaydi.

Class (Sinf) Tushunchasi

Sinfni yaratish juda oddiy. Keling, Python dasturlash tilida class yaratishni ko'raylik:

class Avtomobil:
def __init__(self, rang, model, tezlik):
self.rang = rang # Obyektning rangini saqlash
self.model = model # Obyektning modelini saqlash
self.tezlik = tezlik # Obyektning tezligini saqlash

def yurgizish(self):
print(f"{self.model} avtomobili yurmoqda.")

def toxtatish(self):
print(f"{self.model} avtomobili to'xtamoqda.")

Izoh:

  • class kalit so'zi sinfni yaratadi.
  • __init__ metodi sinfning konstruktoridir, bu yangi obyekt yaratilganda avtomatik ravishda chaqiriladi.
  • self kalit so'zi obyektni ifodalaydi va o'z xususiyatlariga murojaat qilish imkonini beradi.

Obyekt Yaratish

Sinfdan obyekt yaratish juda oddiy:

my_avtomobil = Avtomobil("qizil", "Toyota", 120)  # Yangi obyekt yaratamiz
my_avtomobil.yurgizish() # Avtomobilni yuritish
my_avtomobil.toxtatish() # Avtomobilni to'xtatish

Misol

O'z hayotingizda sizda ko'p turdagi avtomobillar borligini tasavvur qiling. Har bir avtomobilning o'ziga xos xususiyatlari va funksiyalari bo'lishi mumkin. OOP yordamida siz "Avtomobil" sinfini yaratishingiz va har bir avtomobilni ushbu sinfdan yangi obyektlar sifatida ko'rishingiz mumkin.

OOPda Qiziqarli Faktlar

  • OOP dasturlash paradigmasi 1960-yillarda Norvegiya, Shvetsiya va AQShda paydo bo'lgan.
  • OOP dasturlashda ko'plab mashhur tillar mavjud, masalan, Python, Java, C++ va C#.
  • OOP ko'plab dasturlash muammolarini yechishda foydalaniladi, masalan, o'yinlar, veb dasturlar, va ma'lumotlar bazasi tizimlari.

OOP (Object Oriented Programming) - Inheritance (Voroslik)

Kirish

OOPda vorislik dasturiy ta'minotni yanada samarali va qulay yozishga yordam beradi. OOPdagi vorislik orqali biz mavjud sinflardan yangi sinflarni yaratishimiz mumkin, bu esa kodni qayta ishlatishga imkon beradi.

Inheritance (Vorislik) Nima?

Inheritance (vorislik) — bu OOPning asosiy tushunchalaridan biri. Bu jarayon bir sinfning (ota sinf) xususiyatlari va metodlarini boshqa bir sinfga (bola sinf) o'tkazishni anglatadi. Bu imkoniyat kodni qayta ishlatishga, dasturiy ta'minotni oson boshqarishga va kengaytirishga yordam beradi.

Vorislik Turlari

  1. Oddiy Vorislik: Bu oddiy vaziyat bo'lib, bir sinf boshqa bir sinfdan to'g'ridan-to'g'ri vorislik oladi.
  2. Ko'p Vorislik: Bu vaziyatda bir sinf bir nechta ota sinflardan vorislik oladi. Python dasturlash tilida bu imkoniyat mavjud.
  3. Zanjirli Vorislik: Bu holatda bir sinf boshqa bir sinfdan, o'sha sinf esa boshqa bir sinfdan vorislik oladi. Bu orqali murakkab sinf tuzilmalarini yaratish mumkin.

OOPda Vorislikning Afzalliklari

  • Kodning qayta ishlatilishi: Ota sinf xususiyatlari va metodlaridan foydalanish orqali kodni qayta yozmasdan foydalanish mumkin.
  • Oson kengaytirish: Yangi xususiyatlar yoki metodlar qo'shish orqali sinflarni oson kengaytirish imkoniyati mavjud.
  • Tuzilma: OOPda kod tuzilishi aniq bo'lib, uni o'qish va tushunish osonlashadi.

Python Dasturlash Tilida Vorislik

Keling, Python dasturlash tilida vorislikni qanday amalga oshirishni ko'rib chiqamiz. Quyida oddiy bir misol keltiraman:

class Hayvon:  # Ota sinf
def __init__(self, nom):
self.nom = nom

def ovoz(self):
print("Hayvon ovoz chiqaradi")

class It(Hayvon): # It sinfi Hayvon sinfidankeladi
def ovoz(self):
print(f"{self.nom}: Hav-hav!")

class Mushuk(Hayvon): # Mushuk sinfi Hayvon sinfidankeladi
def ovoz(self):
print(f"{self.nom}: Myav-myav!")

# Obyekt yaratish
it = It("Jek")
it.ovoz() # Jek: Hav-hav!

mushuk = Mushuk("Murka")
mushuk.ovoz() # Murka: Mya-mya!

Izoh:

  • class kalit so'zi sinf yaratadi.
  • Hayvon sinfi ota sinf sifatida belgilanadi.
  • It va Mushuk sinflari Hayvon sinfidan keladi, ya’ni ular uning xususiyatlarini va metodlarini meros qilib oladi.

Misollar

Misol 1: Avtomobillar

Tasavvur qiling, sizda turli xil avtomobillar mavjud: Avtomobil, Yengil avtomobil, va Yuk avtomobili. Avtomobil sinfi ota sinf bo'ladi, Yengil avtomobil va Yuk avtomobili esa unga vorislik qiladi.

class Avtomobil:
def __init__(self, rang):
self.rang = rang

def harakatlanish(self):
print(f"{self.rang} avtomobili harakatlanmoqda.")

class YengilAvtomobil(Avtomobil):
def maxsus_funksiyalar(self):
print("Yengil avtomobil uchun maxsus funksiyalar mavjud.")

class YukAvtomobili(Avtomobil):
def yuk_toshish(self):
print("Yuk avtomobili yuk tashiyapti.")

# Obyekt yaratish
yengil = YengilAvtomobil("qizil")
yengil.harakatlanish() # qizil avtomobili harakatlanmoqda.
yengil.maxsus_funksiyalar() # Yengil avtomobil uchun maxsus funksiyalar mavjud.

yuk = YukAvtomobili("oq")
yuk.harakatlanish() # oq avtomobili harakatlanmoqda.
yuk.yuk_toshish() # Yuk avtomobili yuk tashiyapti.

Misol 2: Ta'lim tizimi

Sinfni yaratish va vorislikni amalga oshirish orqali ta'lim tizimida O'quvchi va O'qituvchi sinflarini yaratishingiz mumkin.

class Odam:
def __init__(self, ism):
self.ism = ism

class Oquvchi(Odam):
def oqish(self):
print(f"{self.ism} o'qiyapti.")

class Oqituvchi(Odam):
def dars_berish(self):
print(f"{self.ism} dars berayapti.")

# Obyekt yaratish
oquvchi = Oquvchi("Ali")
oquvchi.oqish() # Ali o'qiyapti.

oqituvchi = Oqituvchi("Murod")
oqituvchi.dars_berish() # Murod dars berayapti.

OOPda Qiziqarli Faktlar

  • OOP dasturlashda vorislik tushunchasi dastlab Simula dasturlash tilida paydo bo'lgan.
  • Python tilida vorislikni amalga oshirishda super() funksiyasi yordamida ota sinfning metodlarini chaqirish mumkin.
  • Ko'p vorislik dasturlashda murakkab tizimlarni yaratishga yordam beradi, lekin noto'g'ri ishlatilsa, kodni tushunishni qiyinlashtirishi mumkin.

Xulosa

Bugun biz OOP (Obyektga Yo'naltirilgan Dasturlash) tushunchasini va Python dasturlash tilida class yaratish jarayonini o'rgandik. OOP dasturlashda ob'ektlar va sinflar yordamida kodni tuzilmali va modular qilib yozishga imkon beradi.

Yana biz OOP (Obyektga Yo'naltirilgan Dasturlash) va vorislik tushunchasini ko'rib chiqdik. Vorislik dasturlashda kodni qayta ishlatish va tuzilmalarni yaratishga yordam beradi. Python dasturlash tilida vorislikni qanday amalga oshirishni va uning turlarini o'rgandik.

Savollar va Javoblar

  1. Sinf nima?
    • Sinf — bu obyektlar uchun shablon bo'lib, ma'lumotlar va ularni ishlov beruvchi funksiyalarni o'z ichiga oladi.
  2. Obyekt nima?
    • Obyekt — bu sinfdan kelib chiqqan ma'lumotlar va funksiyalar to'plami.
  3. OOPning afzalliklari nimalardan iborat?
    • Modularlik, qayta foydalanish, va tuzilma.
  4. Vorislik nima?
    • Vorislik — bu bir sinfning xususiyatlari va metodlarini boshqa bir sinfga o'tkazishni anglatadi.
  5. Oddiy vorislik va ko'p vorislik o'rtasidagi farq nima?
    • Oddiy vorislikda bir sinf bir ota sinfdan keladi, ko'p vorislikda esa bir sinf bir nechta ota sinflardan keladi.
  6. Zanjirli vorislik qanday ishlaydi?
    • Zanjirli vorislikda bir sinf boshqa bir sinfdan, o'sha sinf esa boshqa bir sinfdan vorislik oladi.
  7. Python dasturlash tilida vorislik qanday amalga oshiriladi?
    • Sinf yaratish va boshqa sinfdan vorislik olish orqali amalga oshiriladi.