- Published on
Swiftda Class va Obyekt
- Authors
- Name
- ShoxruxC
- @iOSdasturchi
Swift ham obyektga yo'naltirilgan dasturlash tilidir. Boshqa OOP tillari kabi, u ham obyektlar va classlar tushunchalarini qo'llab-quvvatlaydi.
Obyekt β bu ma'lumotlar (o'zgaruvchilar) va metodlar (funksiyalar) to'plami.
Class esa β obyekt uchun chizma (shablon) hisoblanadi.
Obyektlarni o'rganishdan oldin, swiftdagi classlar bilan tanishamiz.
Classes
Class β obyektlarning chizmasi hisoblanadi. Uni uy chizmasiga o'xshatish mumkin: unda pol, eshik, derazalar haqida ma'lumot bo'ladi. Shu chizma asosida uy quriladi β uy obyekt bo'ladi.
Bitta chizmadan juda ko'p uy qurish mumkin. Xuddi shu kabi, classdan ko'plab obyektlar yaratish mumkin.
Class e'lon qilish
Swiftda class yaratish uchun class kalit so'zi ishlatiladi:
class ClassName {
// class ta'rifi
}
Misol:
class Bike {
var name = ""
var gear = 0
}
Bu yerda:
- Bike β class nomi
- name/gear β class ichidagi o'zgaruvchilar, mos ravishda "" va 0 bilan boshlanadi
Class ichidagi o'zgaruvchi va konstantalar property deb ataladi.
Objects
Obyekt β classning namunasi (instance).
Agar Bike β class bo'lsa, undan bike1, bike2 kabi obyektlar yaratish mumkin.
Sintaksis:
var objectName = ClassName()
Misol:
// class yaratish
class Bike {
var name = ""
var gears = 0
}
// classdan obyekt yaratish
var bike1 = Bike()
bike1 β bu classning obyekti. Endi biz bu obyekt orqali class property'lariga murojaat qilishimiz mumkin.
Obyekt orqali class Property'larini olish
Property'larni olish/o'zgartirish uchun . (nuqta) ishlatiladi:
// name property'sini o'zgartirish
bike1.name = "Mountain Bike"
// gears property'sini olish
bike1.gears
Misol:
Bu yerda:
- Bicycle classi yaratildi
- bike1 obyekt yaratildi
- Property'lar
. notationorqali o'zgartirildi
Classdan bir necha obyekt yaratish
Classdan xohlagancha ko'p obyekt yaratish mumkin:
Class ichida funksiya (method)
Class ichida funksiya yozish ham mumkin. Class ichidagi funksiyalar method deb ataladi.
Misol:
Bu yerda:
- length va breadth β property'lar
- calculateArea() β metod
- studyRoom β obyekt
.calculateArea()β metod chaqirilishi
Initializer
Oldin property'ga default qiymat berilgan edi:
class Bike {
var name = ""
}
var bike = Bike()
Initializerni ishlatib, property'ga qiymatlarni obyekt yaratilayotganda berish mumkin:
class Bike {
var name: String
init(name: String){
self.name = name
}
}
Bu yerda:
init()β initializerself.nameβ obyektning o'z property'si
Obyekt yaratish:
var bike1 = Bike(name: "Mountain Bike")
Misol:
Struct va Class
Har ikkisi o'xshash bo'lsa-da, orasida farqlar bor.
1. Inheritance (Meros olish)
- Class β obyektga yo'naltirilgan tushuncha bo'lgani uchun meros olish (inheritance) imkoniyatini beradi.
- Struct β meros olishni qo'llab-quvvatlamaydi.
2. Reference type va Value type
Class β reference type
Bitta obyektga o'zgartirish kiritsangiz, boshqa nusxalarda ham o'zgaradi.
bike2 ham o'zgardi, chunki ikkalasi bir obyektni ko'rsatadi.
Struct β value type
Har bir obyekt o'zining mustaqil nusxasiga ega.
Bu holatda bike2 o'zgarmadi.
Birinchi masalaning yechimi
Keling, birinchi masala "Oddiy class yaratish" ni birga yechib ko'ramiz:
1-qadam: Masalani tushunish
Book classini yarating:
- title va author property'lari
- Initializer orqali qiymat bering
- getInfo() methodi String qaytarsin
2-qadam: Yechim algoritmi
- Initializer yozamiz - property'larga qiymat beramiz
- getInfo() methodini yozamiz - String qaytaradi
3-qadam: Kodni yozamiz
Natija: Book classini yaratdik, initializer va getInfo() methodini to'g'ri yozdik!