Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

19-ameliy Python

.pdf
Скачиваний:
1
Добавлен:
26.10.2024
Размер:
259.41 Кб
Скачать

19-ámeliy jumıs

Python programmalastırıw tilinde klasslar/obyektler

1. TEORIYALÍQ BÓLIM

Klass - bul obyekt jaratıw ushın arnalǵan shablon. Obyekt - bul klasstıń konkret úlgisi.

Klasstıń tiykarǵı elementleri:

1.Attributlar (qásiyetler)

2.Metodlar (funkciyalar)

3.Konstruktor (init)

Klasslar koncepciyaları:

Encapsulation (Jasırıw)

Inheritance (Miyrasxorlıq)

Polymorphism (Kóp túrlilik)

2. ÁMELIY BÓLIM

1. Tiykarǵı klass jaratıw:

class Oqıwshı:

def __init__(self, atı, jasí): self.atı = atı

self.jasí = jasí self.bahalar = []

def baha_qosıw(self, baha): self.bahalar.append(baha)

def orta_baha(self):

if len(self.bahalar) > 0:

return sum(self.bahalar) / len(self.bahalar) return 0

# Qollanıw

oqıwshı1 = Oqıwshı("Azamat", 20) oqıwshı1.baha_qosıw(5) oqıwshı1.baha_qosıw(4)

print(f"Orta baha: {oqıwshı1.orta_baha()}")

2. Miyrasxorlıq mısalı:

class Adam:

def __init__(self, atı, jasí): self.atı = atı

self.jasí = jasí

def tanıstırıw(self):

return f"Men {self.atı}, {self.jasí} jastaman"

class Student(Adam):

def __init__(self, atı, jasí, kurs): super().__init__(atı, jasí) self.kurs = kurs

def tanıstırıw(self):

return f"Men {self.atı}, {self.kurs}-kurs studentimen"

# Qollanıw

adam1 = Adam("Berdaq", 25)

student1 = Student("Gúlnara", 19, 2)

print(adam1.tanıstırıw()) print(student1.tanıstırıw())

3. Encapsulation mısalı:

class Bank_schet:

def __init__(self, iyesi, balans): self.__iyesi = iyesi # private attribute self.__balans = balans

def balans_kóriw(self): return self.__balans

def aqsha_salıw(self, summa): if summa > 0:

self.__balans += summa return True

return False

def aqsha_alıw(self, summa): if summa <= self.__balans:

self.__balans -= summa return True

return False

# Qollanıw

schet = Bank_schet("Alisher", 1000000) schet.aqsha_salıw(500000)

print(f"Házirgi balans: {schet.balans_kóriw()}")

4. Kóp túrlilik (Polymorphism) mısalı:

class Figura:

def maydan(self): pass

class Tórtmúyesh(Figura):

def __init__(self, a, b): self.a = a

self.b = b

def maydan(self):

return self.a * self.b

class Úshmúyesh(Figura):

def __init__(self, a, h): self.a = a

self.h = h

def maydan(self):

return 0.5 * self.a * self.h

# Qollanıw

tort = Tórtmúyesh(5, 4)

ush = Úshmúyesh(6, 3)

print(f"Tórtmúyesh maydanı: {tort.maydan()}") print(f"Úshmúyesh maydanı: {ush.maydan()}")

5. Property dekoratorlar menen islew:

class Temperature:

def __init__(self, celsius): self._celsius = celsius

@property

def celsius(self): return self._celsius

@celsius.setter

def celsius(self, value): if value < -273.15:

raise ValueError("Temperature cannot be below absolute zero") self._celsius = value

@property

def fahrenheit(self):

return self._celsius * 9/5 + 32

# Qollanıw

temp = Temperature(25) print(f"Celsius: {temp.celsius}")

print(f"Fahrenheit: {temp.fahrenheit}") temp.celsius = 30

print(f"Jańa temperatura: {temp.celsius}°C")

6. Statikalıq metodlar:

class Calculator: @staticmethod def qosıw(a, b):

return a + b

@staticmethod def alıw(a, b):

return a - b

@staticmethod

def kóbeytiw(a, b): return a * b

@staticmethod def bóliw(a, b):

if b != 0: return a / b

return "Nolge bóliw múmkin emes"

# Qollanıw print(Calculator.qosıw(5, 3)) print(Calculator.kóbeytiw(4, 2))

Keliń, hár bir kodtı bólip-bólip túsindirip shıǵayıq:

1. OQÍWSHÍ KLASÍ:

class Oqıwshı:

 

 

def

__init__(self, atı, jasí):

 

 

self.atı = atı

# oqıwshınıń atı

 

self.jasí = jasí

# oqıwshınıń jası

 

self.bahalar = []

# bahalar dizimi

def

baha_qosıw(self, baha):

 

 

self.bahalar.append(baha)

# jańa baha qosıw

def

orta_baha(self):

 

 

 

if len(self.bahalar) > 0:

 

 

return sum(self.bahalar) / len(self.bahalar) # orta bahanı

esaplaw

 

 

 

 

return 0

 

 

# Qollanıw mısalı

 

 

 

 

oqıwshı1 = Oqıwshı("Azamat", 20)

# jańa oqıwshı jaratıw

oqıwshı1.baha_qosıw(5)

 

# bahalar qosıw

oqıwshı1.baha_qosıw(4)

 

 

Bul klasstıń:

Konstruktorı (init) - oqıwshınıń atı hám jasın saqlaydı

baha_qosıw() - jańa baha qosadı

orta_baha() - barlıq bahalardıń orta arifmetikalıq mánisin esaplaydı

2. MIYRASXORLÍQ MÍSALI:

class Adam:

def __init__(self, atı, jasí): self.atı = atı

self.jasí = jasí

def tanıstırıw(self):

return f"Men {self.atı}, {self.jasí} jastaman"

class Student(Adam): # Adam klassınan miyras aladı def __init__(self, atı, jası, kurs):

super().__init__(atı, jası) # ata-klass konstruktorın shaqırıw self.kurs = kurs

def tanıstırıw(self): # metodtı qayta jazıw (override) return f"Men {self.atı}, {self.kurs}-kurs studentimen"

Bul mısalda:

Adam - tiykarǵı klass (ata-klass)

Student - Adam klassınan miyras alǵan klass (bala-klass)

super().init() - ata-klass konstruktorın shaqırıw ushın qollanıladı

3. ENCAPSULATION (JASIRIW) MÍSALI:

class Bank_schet:

def

__init__(self,

iyesi, balans):

 

self.__iyesi =

iyesi

#

private attribute (__)

 

self.__balans = balans

#

private attribute

def

balans_kóriw(self):

 

 

 

return self.__balans

 

 

def aqsha_salıw(self, summa): if summa > 0:

self.__balans += summa return True

return False

Bul mısalda:

__ belgisi menen baslanǵan attributlar private boladı

Tek klasstıń metodları arqalı ǵana private attributlarǵa kiriwge boladı

Bul maǵlıwmatlardı jasırıw hám qorǵaw ushın qollanıladı

4. POLYMORPHISM (KÓP TÚRLILIK) MÍSALI:

class Figura:

def maydan(self): pass

class Tórtmúyesh(Figura): def maydan(self):

return self.a * self.b

class Úshmúyesh(Figura): def maydan(self):

return 0.5 * self.a * self.h

Bul mısalda:

Hár bir klass maydan() metodın óz jolı menen ámelge asıradı

Bir metod hár qıylı klasslar ushın hár qıylı isleydi

5. PROPERTY DEKORATORLAR:

class Temperature: @property

def celsius(self): return self._celsius

@celsius.setter

def celsius(self, value): if value < -273.15:

raise ValueError("Temperature cannot be below absolute zero") self._celsius = value

Property dekoratorlar:

@property - attributqa oqıw múmkinshiligin beredi

@celsius.setter - attributqa jazıw múmkinshiligin beredi

Attributtı validaciya qılıwǵa járdem beredi

6. STATIKALÍQ METODLAR:

class Calculator: @staticmethod def qosıw(a, b):

return a + b

Statikalıq metodlar:

Klasstıń instanciyasın jaratpay turíp shaqırıw múmkin

self parametri talap etilmeydi

Klass attributlarına tikkeley kire almadı

ÁMELIY MÍSALLAR:

1. Kitapxana sisteması:

class Kitap:

def __init__(self, atı, avtor, jılı): self.atı = atı

self.avtor = avtor self.jılı = jılı

self.bar = True # kitap kitapxanada bar ma?

def maǵlıwmat(self):

status = "bar" if self.bar else "alınǵan"

return f"'{self.atı}' - {self.avtor} ({self.jılı}) - {status}"

class Oqıwshı:

def __init__(self, atı, id): self.atı = atı

self.id = id self.alǵan_kitaplar = []

def kitap_alıw(self, kitap): if kitap.bar:

self.alǵan_kitaplar.append(kitap) kitap.bar = False

return f"{self.atı} '{kitap.atı}' kitabın aldı" return "Kitap házirde joq"

def kitap_qaytarıw(self, kitap):

if kitap in self.alǵan_kitaplar: self.alǵan_kitaplar.remove(kitap) kitap.bar = True

return f"{self.atı} '{kitap.atı}' kitabın qaytardı" return "Bul kitap sizde joq"

# Qollanıw

kitap1 = Kitap("Alpamıs", "Xalıq dástanı", 1999)

kitap2 = Kitap("Qaraqalpaq folklori", "Q.Ayımbetov", 2018)

oqıwshı1 = Oqıwshı("Arıslan", "ID001") oqıwshı2 = Oqıwshı("Gúlnara", "ID002")

print(kitap1.maǵlıwmat()) print(oqıwshı1.kitap_alıw(kitap1)) print(kitap1.maǵlıwmat()) print(oqıwshı1.kitap_qaytarıw(kitap1))

2. Bank esap sisteması:

class Bank_schet:

def __init__(self, iyesi, schet_nomeri): self.__iyesi = iyesi self.__schet_nomeri = schet_nomeri self.__balans = 0

self.__transport = []

def aqsha_salıw(self, summa): if summa > 0:

self.__balans += summa

return f"{summa} sum qosıldı. Jańa balans: {self.__balans}" return "Nadurıs summa"

def aqsha_alıw(self, summa):

if 0 < summa <= self.__balans: self.__balans -= summa

return f"{summa} sum alındı. Qalǵan balans: {self.__balans}" return "Balans jetkilisiz"

def transport_qosıw(self, transport_túri): self.__transport.append(transport_túri) return f"{transport_túri} qosıldı"

def balans_kóriw(self):

return f"Házirgi balans: {self.__balans} sum"

def transportlar(self):

return f"Sizde {len(self.__transport)} transport bar: {', '.join(self.__transport)}"

# Qollanıw

schet1 = Bank_schet("Alisher", "1234567890") print(schet1.aqsha_salıw(1000000)) print(schet1.aqsha_alıw(500000)) print(schet1.transport_qosıw("Nexia-3")) print(schet1.transport_qosıw("Damas")) print(schet1.transportlar())

3. Onlayn dúkan:

class Ónim:

def __init__(self, atı, baǵası, sanı): self.atı = atı

self.baǵası = baǵası self.sanı = sanı

def maǵlıwmat(self):

return f"{self.atı} - {self.baǵası} sum ({self.sanı} dana bar)"

class Sebet:

def __init__(self): self.ónimler = {} self.ulıwma_baǵa = 0

def ónim_qosıw(self, ónim, sanı): if ónim.sanı >= sanı:

if ónim in self.ónimler: self.ónimler[ónim] += sanı

else:

self.ónimler[ónim] = sanı ónim.sanı -= sanı

self.ulıwma_baǵa += ónim.baǵası * sanı

return f"{sanı} dana {ónim.atı} sebetke qosıldı" return "Ónim jetkilisiz"

def sebetti_kóriw(self): text = "Sebette:\n"

for ónim, sanı in self.ónimler.items():

text += f"{ónim.atı} - {sanı} dana = {ónim.baǵası * sanı} sum\n"

text += f"\nUlıwma baǵa: {self.ulıwma_baǵa} sum" return text

# Qollanıw

alma = Ónim("Alma", 15000, 100) nok = Ónim("Nok", 20000, 50) banan = Ónim("Banan", 25000, 30)

sebetim = Sebet() print(sebetim.ónim_qosıw(alma, 5)) print(sebetim.ónim_qosıw(nok, 3)) print(sebetim.ónim_qosıw(banan, 2)) print(sebetim.sebetti_kóriw())

TEST

1.Klass nege arnalǵan? a) Maǵlıwmatlardı saqlaw ushın b) Obyekt jaratıw ushın arnalǵan shablon c) Funkciyalardı saqlaw ushın d) Tek metodlardı saqlaw ushın

2.Klasstıń tiykarǵı elementlerin kórsetiń: a) Tek metodlar b) Tek konstruktor c) Attributlar, metodlar hám konstruktor d) Tek attributlar

3.Private attributtı qanday belgi menen belgilemiz? a) _ b) __ c) # d) $

4.Property dekoratorlardıń tiykarǵı wazıypası qanday? a) Klassqa jańa metod qosıw b) Attributqa oqıw hám jazıw múmkinshiligin basqarıw c) Klassqa jańa attribut qosıw d) Klasstı qayta ataw

5.Statikalıq metodtıń ózgesheligi nede? a) Klasstıń instanciyasın jaratıwdı talap etedi b) self parametrin talap etedi c) Klasstıń instanciyasın jaratpay turıp shaqırıw múmkin d) Tek bir márte shaqırıw múmkin

6.Miyrasxorlıqta super() funkciyası ne ushın qollanıladı? a) Jańa klass jaratıw ushın b) Ataklass konstruktorın shaqırıw ushın c) Metodtı óshiriw ushın d) Attributtı óshiriw ushın

7.Polymorphism (kóp túrlilik) degenimiz ne? a) Bir metodtıń hár qıylı klasslarda hár qıylı islewi b) Bir klassqa kóp attribut qosıw c) Bir klasstıń bir neshe instanciyasın jaratıw d) Bir neshe klasstı birlestiriw

8.self parametri neni bildiredi? a) Klasstıń atın b) Házirgı instanciyanı c) Klasstıń metodın d) Klasstıń attributın

9.Konstruktordıń wazıypası qanday? a) Klasstı óshiriw b) Klassqa metod qosıw c) Obyekttiń dáslepki qásiyetlerin belgilew d) Klasstıń atın ózgertiw

10.Encapsulation (jasırıw) principiniń tiykarǵı maqseti ne? a) Maǵlıwmatlardı jasırıw hám qorǵaw b) Maǵlıwmatlardı kóshiriw c) Maǵlıwmatlardı joq etiw d) Maǵlıwmatlardı kóbeytiw

Durıs juwaplar: 1-b, 2-c, 3-b, 4-b, 5-c, 6-b, 7-a, 8-b, 9-c, 10-a

Соседние файлы в предмете Программирование на Python