RAQAMLI TEXNOLOGIYALAR VAZIRLIGI
MUHAMMAD AL – XORAZMIY NOMIDAGI
TOSHKENT AXBOROT TEXNOLOGIYALARI
UNIVERSITETI
FARG‘ONA FILIALI
Komyuter injiniringi yo‘nalishi
710-21– guruh talabasi
Muhtorov Nodirbekning
“WEB DASTURLASH”
Fanidan tayyorlagan
MUSTAQIL ISHI
Topshirdi: Muhtorov Nodirbek
Qabul qildi: Uzakov Barhayot
Obyekt konstruktori odatda sinf deb ataladigan muayyan turdagi obyektlarni yaratuvchi funksiyadir. Undan yaratilgan ob'ektlarda mavjud bo'ladigan xususiyatlar va usullarni belgilaydi. JavaScript-da siz
funktsiya
kalit so'zidan foydalangan holda ob'ekt konstruktorini yaratishingiz va
this
kalit so'zidan foydalanib xususiyatlar va usullarni belgilashingiz mumkin. Masalan:
function Person(name, age) {
this.name = name;
this.age = age;
this.greet = function() {
console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
}
}
const john = new Person('John', 30);
john.greet(); // Output: "Hello, my name is John and I am 30 years old."
Ushbu misolda,
Shaxs
- ob'ekt konstruktori bo'lib, u
Shaxs
obyektlarini
name
,
age
, va
salomlashish
usuli.
new
kalit so'zi
Person
konstruktoridan yangi ob'ekt yaratish uchun ishlatiladi.
Sinflarda konstruktor tushunchasi Konstruktor – bu sinfning instansiya a’zolarini initsializatsiya qilish uchun ishlatiladigan maxsus metod (funktsiya) turi. Konstruktorlar ikki xil bo’lishi mumkin: Parametrlangan konstruktor Parametrlanmagan konstruktor Ushbu sinf ob’ektini yaratganimizda konstruktor ta’rifi bajariladi. Shuningdek, konstruktorlar ob’ekt uchun biron bir ishga tushirish vazifasini bajarish uchun yetarli resurslar mavjudligini tasdiqlaydilar. Python-da konstruktor yaratish Pythonda __init__ metodi sinf konstruktorini simulyatsiya qiladi. Ushbu usul sinfni qo’zg’atganda chaqiriladi. Biz __init__ ta’rifiga qarab, sinf ob’ektini yaratishda istalgan sonli argumentlarni berishimiz mumkin. Bu asosan sinf atributlarini ishga tushirish uchun ishlatiladi. Har bir sinf konstruktorga ega bo’lishi kerak, hatto u oddiygina konstruktorga tayansa ham. Employee sinfining atributlarini ishga tushirish uchun quyidagi misolni ko’rib chiqing. Example: class Employee: def __init__(self,name,id): self.id = id; self.name = name; def display (self): print(“ID: %d \nName: %s”%(self.id,self.name)) emp1 = Employee(“John”,101) emp2 = Employee(“David”,102) #accessing display() method to print employee 1 information emp1.display(); #accessing display() method to print employee 2 information emp2.display(); ID: 101 Name: John ID: 102 Name: David PYTHON ASOSLARI | ABBOSBEK IBRAGIMOV 103 Misol: Sinf ob’ektlari sonini hisoblash class Student: count = 0 def __init__(self): Student.count = Student.count + 1 s1=Student() s2=Student() s3=Student() print(“The number of students:”,Student.count) The number of students: 3 Pythonning parametrlanmagan konstruktorga misoli class Student: # Constructor – parametrlanmagan def __init__(self): print(“This is non parametrized constructor”) def show(self,name): print(“Salom”,name) student = Student() student.show(“Abbosbek”) Salom Abbosbek Pythonning parametrlangan konstruktorga misol class Student: # Constructor – parameterized def __init__(self, name): print(“This is parametrized constructor”) self.name = name def show(self): print(“Hello”,self.name) student = Student(“John”) student.show() Hello John PYTHON ASOSLARI | ABBOSBEK IBRAGIMOV 104 Python ichki sinf vazifalari Sinfda aniqlangan ichki funktsiyalar quyidagi jadvalda tavsiflangan. SN Funksiya Vazifasi 1 getattr (obj, name, default) Ob’ektning atributiga kirish uchun ishlatiladi. 2 setattr (obj, name, value) U ob’ektning o’ziga xos atributiga ma’lum bir qiymatni belgilash uchun ishlatiladi. 3 delattr (obj, name) U ma’lum bir atributni o’chirish uchun ishlatiladi. 4 hasattr (obj, name) Ob’ektda o’ziga xos atribut bo’lsa, u haqiqiy qiymatni qaytaradi. Misol: class Student: def __init__(self,name,id,age): self.name = name; self.id = id; self.age = age #creates the object of the class Student s = Student(“John”,101,22) #prints the attribute name of the object s print(getattr(s,’name’)) # reset the value of attribute age to 23 setattr(s,”age”,23) # prints the modified value of age print(getattr(s,’age’)) # prints true if the student contains the attribute with name id print(hasattr(s,’id’)) # deletes the attribute age delattr(s,’age’) # this will give an error since the attribute age has been deleted print(s.age) John 23 True AttributeError: ‘Student’ object has no attribute ‘age’ PYTHON ASOSLARI | ABBOSBEK IBRAGIMOV 105 O’rnatilgan sinf atributlari Boshqa atributlar bilan bir qatorda, python klassida sinf haqida ma’lumot beradigan ba’zi bir o’rnatilgan sinf atributlari mavjud. O’rnatilgan sinf atributlari quyidagi jadvalda keltirilgan: __dict__ - Bu sinf nomlari maydoni haqidagi ma’lumotlarni o’z ichiga olgan lug’atni taqdim etadi. __doc__ - U sinf hujjatiga ega bo’lgan qatorni o’z ichiga oladi __name__ - U sinf nomiga kirish uchun ishlatiladi. __module__ - Ushbu sinf aniqlangan modulga kirish uchun foydalaniladi. __bases__ - Unda barcha asosiy sinflarni o’z ichiga olgan korniş mavjud. Misol: class Student: def __init__(self,name,id,age): self.name = name; self.id = id; self.age = age def display_details(self): print(“Name:%s, ID:%d, age:%d”%(self.name,self.id)) s = Student(“John”,101,22) print(s.__doc__) print(s.__dict__) print(s.__module__) {‘name’: ‘John’, ‘id’: 101, ‘age’: 22} __main__ PYTHON ASOSLARI | ABBOSBEK IBRAGIMOV 106 Sinflarda Vorislik tushunchasi Vorislik – bu atama sinflarga xosdir. Vorislik deb bir sinfdagi barcha funksiya va xususiyatlarni boshqa bir sinf o’ziga o’zlashtirishiga aytiladi. Funksiyalari meros qilib olinadigan sinf ona sinf deyiladi. Meros qilib olingan funksiyalarni o’ziga o’zlashtiradigan sinf voris sinf deyiladi. Ona sinf hosil qilish Istalgan sinf ona sinf bo’lishi mumkin. Shu sababli ona sinfni hosil qilish xuddi oddiy sinfni hosil qilish kabidir. Hozir Odam degan sinf hosil qilamiz. Unda ism va familiya parametrlari va tanish degan funksiyasi bo’ladi. So’ngra shu sinf orqali x obyekt hosil qilamiz: class Odam: def __init__(self, ism, familiya): self.ism = ism self.familiya = familiya def tanish(self): print(self.ism, self.familiya) x = Odam (“Abbosbek”, “Ibragimov”) x.tanish() Abbosbek Ibragimov Voris sinf hosil qilish Voris sinf hosil qilish uchun yangi sinf tuzilayotganda ona sinfni paramet sifatida kiritamiz. Shunda voris sinf ona sinfdan barcha xususiyatlarni o’zlashtiradi. Hozir Talaba degan sinf hosil qilamiz. Odam sinfi uning onam sinfi bo’ladi. Qavslar ichida ona sinfni kirittamiz va uning barcha xususiyatlarini voris sinf o’zlashtiradi. Qo’shimcha parametr qo’shish shart emas, ammo sinf hosil qilayotganda ichi bo’sh bo’lishi ham mumkin emas. Agar hechnarsa yozishni istamasak xatolik yuz bermasligi uchun pass kalit so’zini qo’shib qo’yamiz: class Odam: def __init__(self, ism, familiya): self.ism = ism self.familiya = familiya def tanish(self): print(self.ism, self.familiya) PYTHON ASOSLARI | ABBOSBEK IBRAGIMOV 107 # Endi voris sinf ya’ni bola sinfni hosil qilamiz class Talaba (Odam): pass x = Talaba (“Asadbek”, “Suvonov”) x.tanish() Asadbek Suvonov __init__() funksiyasini qo’shish Avvalgi misolimizda voris sinf hosil qilganimizda pass kalit so’zi bilan cheklanib qo’ya qoldik. Shu sababli voris sinf barcha funksiyalarni avtomatik tarzda o’zlashtirgan edi. Endi voris sinfga __init__() funksiyasi bilan parametrlarini joylashtiramiz. Bunda voris sinf ona sinfdagi __init__() funksiyasidan emas o’zidagidan foydalanadi. Class Odam: def __init__(self, ism, familiya): self.ism = ism self.familiya = familiya def tanish(self): print(self.ism, self.familiya) # Endi voris sinf ya’ni bola sinfni hosil qilamiz class Talaba (Odam): def __init__(self, ism, familiya): self.ism = ism self.familiya = familiya x = Talaba (“Asadbek”, “Suvonov”) x.tanish() Asadbek Suvonov Ammo ona sinfdagi __init__() funksiyasidan foydalanmoqchi bo’lsak, voris sinfdagi __init__() funksiyasi ichiga ona sinfning shu funksiyasini yozamiz: class Odam: def __init__(self, ism, familiya): self.ism = ism self.familiya = familiya def tanish(self): print(self.ism, self.familiya) PYTHON ASOSLARI | ABBOSBEK IBRAGIMOV 108 # Endi voris sinf ya’ni bola sinfni hosil qilamiz class Talaba (Odam): def __init__(self, ism, familiya): Odam.__init__(self, ism, familiya) x = Talaba (“Asadbek”, “Suvonov”) x.tanish() Asadbek Suvonov super() funksiyasi Sinflar bilan ishlash uchun maxsus super() funksiyasi ham mumkin. Bu funksiya ona sinfdagi barcha funksiya va parametrlarni voris sinfga o’zlashtiradi: class Odam: def __init__(self, ism, familiya): self.ism = ism self.familiya = familiya def tanish(self): print(self.ism, self.familiya) # Endi voris sinf ya’ni bola sinfni hosil qilamiz class Talaba (Odam): def __init__(self, ism, familiya): super().__init__(ism, familiya) x = Talaba (“Asadbek”, “Suvonov”) x.tanish() Asadbek Suvonov Parametr qo’shish Voris sinf hosil qilingach unga yana qo’shimcha parameter qo’shmoqchi bo’lsak quyidagicha amalga oshirish mumkin. Hozir yil parametrini qo’shamiz: class Odam: def __init__(self, ism, familiya): self.ism = ism self.familiya = familiya def tanish(self): print(self.ism, self.familiya) PYTHON ASOSLARI | ABBOSBEK IBRAGIMOV 109 # Endi voris sinf ya’ni bola sinfni hosil qilamiz class Talaba (Odam): def __init__(self, ism, familiya): super().__init__(ism, familiya) self.yil = 2002 x = Talaba (“Asadbek”, “Suvonov”) print(x.yil) 2002 Yuqoridagi misolimizda yangi parametrni qo’shgan zahotimiz unga qiymat berdik. Endi __init__() funksiyasining o’ziga yil parametrini qo’shib unga o’zlashtiramiz. Shundan so’ng uning qiymatini yangi obyekt hosil qilayotganda o’zimiz kirtishimiz kerak bo’ladi. Class Odam: def __init__(self, ism, familiya): self.ism = ism self.familiya = familiya def tanish(self): print(self.ism, self.familiya) # Endi voris sinf ya’ni bola sinfni hosil qilamiz class Talaba (Odam): def __init__(self, ism, familiya, yil): super().__init__(ism, familiya) self.yil = 2002 x = Talaba (“Asadbek”, “Suvonov”, 2002) print(x.yil) 2002 Funksiya qo’shish Voris sinfga qo’shimcha funksiyalar ham qo’shish mumkin. Natijada u ona sinfdan o’zlashtirgan funksiyalari va biz qo’shgan qo’shimcha funksiyalarga ega bo’ladi. Hozir voris sinfga tugilgan() funksiyasini qo’shamiz. Bu funksiya talabaning tug’ilgan yili haqida ma’lumot beradi: PYTHON ASOSLARI | ABBOSBEK IBRAGIMOV 110 class Odam: def __init__(self, ism, familiya): self.ism = ism self.familiya = familiya def tanish(self): print(self.ism, self.familiya) # Endi voris sinf ya’ni bola sinfni hosil qilamiz class Talaba (Odam): def __init__(self, ism, familiya, yil): super().__init__(ism, familiya) self.yil = 2002 def tugilgan(self): print(“Men” , self.yil , “ – yilda tug’ilganman”) x = Talaba (“Asadbek”, “Suvonov”, 2002) x.tugilgan() Men 2002 – yilda tug’ilganman
Ro'yxatga olish turlari, shuningdek, ro'yxatlar sifatida ham tanilgan, dasturlash tilida belgilangan qiymatlar yoki konstantalar to'plamini aniqlash usulidir. Ular odatda aniq va cheklangan diapazonga ega bo'lgan tegishli qiymatlar to'plamini ifodalash uchun ishlatiladi.
Ko'pgina dasturlash tillarida sanash turlari
enum
kalit so'zi, so'ngra tur nomi va mumkin bo'lgan qiymatlar ro'yxati yordamida aniqlanadi. Masalan, C# da:
enum Color {
Red,
Green,
Blue
}
Ushbu misolda
Rang
- uchta mumkin bo'lgan qiymatga ega bo'lgan raqam turi:
Red
,
Yashil
va
Moviy
.
Usullarga kelsak, ular ob'ektga yo'naltirilgan dasturlashda ob'ekt yoki sinf bilan bog'langan funksiyalardir. Ular ob'ekt yoki sinfning harakatini belgilaydi va muayyan harakatlar yoki hisoblarni bajarish uchun chaqirilishi mumkin.
Ko'pgina dasturlash tillarida usullar
funksiya
kalit so'zi, so'ngra usul nomi va unga tegishli har qanday parametrlar yordamida aniqlanadi. Masalan, JavaScript-da:
class Calculator {
add(a, b) {
return a + b;
}
}
const calc = new Calculator();
const result = calc.add(2, 3); // result = 5
Ushbu misolda
Kalkulyator
- bu
add
usuli bo'lgan sinf bo'lib, u ikkita parametrni oladi va ularning yig'indisini qaytaradi.
add
usuli qo'shish amalini bajarish uchun
Calculator
klassi misolida chaqiriladi.
Massiv - bir xil ma'lumot turiga ega bo'lib bir nechta o'zgaruvchini har birini alohida e'lon qilish o'rniga. Bir o'zgaruvchiga bir nechta qiymat saqlash uchun ishlatiladi.
Dasturlashda massiv - bu raqamlar, satrlar yoki ob'ektlar kabi elementlar to'plamini saqlaydigan ma'lumotlar strukturasi. Massivlar bir-biriga bog‘langan va indeks yordamida kirish mumkin bo‘lgan qiymatlar guruhini saqlash kerak bo‘lganda foydalidir.
Ko'pgina dasturlash tillarida massivlar kvadrat qavslar
[]
yordamida e'lon qilinadi va elementlar vergul bilan ajratiladi. Masalan, JavaScript-da:
const numbers = [1, 2, 3, 4, 5];
const fruits = ['apple', 'banana', 'orange'];
Ushbu misolda
raqamlar
raqamlar massivi,
mevalar
esa qatorlar massividir.
Siz birinchi element uchun 0 dan boshlanadigan indeksidan foydalanib massiv elementlariga kirishingiz mumkin. Masalan:
console.log(numbers[0]); // Output: 1
console.log(fruits[1]); // Output: "banana"
Shuningdek, siz massiv elementlarini indeksiga yangi qiymatlar belgilash orqali oʻzgartirishingiz mumkin. Masalan:
numbers[2] = 6;
console.log(numbers); // Output: [1, 2, 6, 4, 5]
Masivlar, shuningdek, o'z elementlarini manipulyatsiya qilishning ko'plab o'rnatilgan usullariga ega, masalan,
push
,
pop
,
shift
,
unshift< /code>,
splice
,
concat
va
slice
. Bu usullar massivdagi elementlarni qo‘shish, olib tashlash yoki o‘zgartirish imkonini beradi.
Eslatma: Massiv indekslari 0 dan boshlanadi: [0] birinchi element. [1] ikkinchi element va boshqalar.
Dostları ilə paylaş: |