Mavzu: Android ilovalarini ishlab chiqishda Kotlin dasturlash tilidan foydalanish



Download 155,06 Kb.
bet5/11
Sana27.03.2022
Hajmi155,06 Kb.
#513361
1   2   3   4   5   6   7   8   9   10   11
Bog'liq
mus ish mobil

Ma'lumotlar sinflari


Ba'zan sinflar faqat ba'zi ma'lumotlarni saqlash uchun kerak bo'ladi. Kotlinda bunday sinflar ma'lumotlar sinflari deb ataladi. Ular ma'lumotlar modifikatori bilan aniqlanadi :

Bunday sinfni kompilyatsiya qilishda kompilyator avtomatik ravishda sinfga o'ziga xos dasturga ega bo'lgan funktsiyalarni qo'shadi, bu sinfning asosiy konstruktorda aniqlangan xususiyatlarini hisobga oladi:

  • teng () : tenglik uchun ikkita ob'ektni solishtiradi

  • hashCode () : ob'ektning xash kodini qaytaradi

  • toString () : ob'ektning satrli ko'rinishini qaytaradi

  • nusxa ko'chirish () : ob'ekt ma'lumotlarini boshqa ob'ektga ko'chiradi

Masalan, toString()ob'ektning satrli tasvirini qaytaradigan funktsiyani olaylik :

1
2018-05-01 xoxlasa buladi 121 2
3
4
5
6
7

fun main() {
val alice: Person = Person("Alice", 24)
println(alice.toString())
}
class Person(val name: String, val age: Int)

Dasturning chiqishi quyidagicha bo'ladi:
Shaxs @ 2a18f23c
Odatiy bo'lib, ob'ektning satr tasviri bizga deyarli hech narsa aytmaydi. Qoida tariqasida, bu funksiya ob'ekt holatini ko'rsatish uchun mo'ljallangan, ammo buning uchun uni bekor qilish kerak. Biroq, endi ma'lumotlar ta'rifini sinf ta'rifiga qo'shamiz :

1

data class Person(val name: String, val age: Int)

Va natija boshqacha bo'ladi:
Shaxs (ismi = Elis, yoshi = 24)
Ya'ni, ob'ektda qanday ma'lumotlar saqlanganligini, ular qanday qadriyatlarga ega ekanligini ko'rishimiz mumkin. Xuddi shu narsa boshqa barcha funktsiyalar uchun ham amal qiladi. Shunday qilib, ma'lumotlar sinflari bo'lsa, bizda bu funktsiyalar uchun tayyor dastur mavjud. Ularni qo'lda bekor qilish shart emas. Ammo biz ushbu amaliyotdan qoniqmasligimiz mumkin, keyin biz o'zimizni belgilashimiz mumkin:

1
2018-05-01 xoxlasa buladi 121 2
3
4
5

data class Person(val name: String, val age: Int){
override fun toString(): String {
return "Name: $name Age: $age"
}
}

Bunday holda, toString()kompilyator funktsiyaning bajarilishini aniqlamaydi .
Yana bir yaxshi misol - ma'lumotlarni nusxalash:

1
2018-05-01 xoxlasa buladi 121 2
3
4
5
6
7
sakkiz
to'qqiz

fun main() {
val alice: Person = Person("Alice", 24)
val kate = alice.copy(name = "Kate")
println(alice.toString()) // Person(name=Alice, age=24)
println(kate.toString()) // Person(name=Kate, age=24)
}
data class Person(var name: String, var age: Int)

Shunga qaramay, kompilyator biz foydalanishimiz mumkin bo'lgan standart nusxa ko'chirish funktsiyasini yaratadi. Agar ob'ekt uchun ba'zi ma'lumotlar boshqacha bo'lishini istasak, yuqoridagi misoldagi name xossasida bo'lgani kabi ularni nomli arglar ko'rinishida nusxa ko'chirish funksiyasida ko'rsatishimiz mumkin.
Bundan tashqari, sinfni ma'lumotlar sinfi sifatida aniqlash uchun u bir qancha shartlarga javob berishi kerak:

  • Asosiy konstruktor kamida bitta parametrga ega bo'lishi kerak

  • Birlamchi konstruktorning barcha parametrlaridan oldin val yoki var kalit so'zlari bo'lishi kerak , ya'ni xususiyatlarni belgilaydi

Asosiy konstruktordan tashqarida aniqlangan xususiyatlar toString, equals va hashCode funksiyalarida ishlatilmaydi.

  • Sinf ochiq , mavhum , muhrlangan yoki ichki modifikatorlar bilan aniqlanmasligi kerak .

Shuni ham ta'kidlash joizki, biz birlamchi konstruktordagi xususiyatlarni val orqali ham, var orqali ham aniqlay olamiz, masalan:

1

data class Person(var name: String, var age: Int)

Ammo umuman olganda, bir qator vaziyatlarda xususiyatlarni val orqali aniqlash, ya'ni ularni o'zgarmas qilish tavsiya etiladi, chunki ular asosida HashMap kabi to'plamda ob'ekt kaliti sifatida ishlatiladigan xesh kodini hisoblab chiqadi. .

Download 155,06 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   10   11




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish