Özet - Data class
- Kotlin kursu
- Orta seviye
- Ders 18/116
- 5 dk
data class, copy ve destructuring'i birleştirerek bir User modeli yazarsın.
Özet - Data class
Bu grupta data class tanımını, copy ile kopyalamayı, equals ve hashCode otomatik üretimini, toString biçimini ve destructuring ile bileşenlerine ayırmayı öğrendin.
Şimdi bunları birleştireceksin: bir veri sınıfı tanımlayıp copy ile değişiklik yapacak ve destructuring ile bileşenlerini ayıracaksın. Bu yapı, Kotlin'de veri modelleme ve aktarmanın temelidir. İleride sealed sınıflar ve jenerikler bu temelin üzerine eklenecek.
Uygulama User modelini birleştir
User adında bir veri sınıfı tanımla; primary constructor val name: String, val age: Int, val email: String alsın. main içinde User("Ayşe", 30, "ayse@x.com") örneği oluştur. u.copy(age = 31) ile v örneği üret. u'yu destructuring ile name, age ve email değişkenlerine ayır. name, age ve v'yi ayrı ayrı println ile yazdır.
Başlangıç kodu
// User veri sınıfı tanımı
// name, age, email özellikleri ile
// main'de örnekle, copy ile v üret
// destructuring ile ayır, üçünü yazdırÖrnek çözüm
data class User(val name: String, val age: Int, val email: String)
fun main() {
val u = User("Ayşe", 30, "ayse@x.com")
val v = u.copy(age = 31)
val (name, age, email) = u
println(name)
println(age)
println(v)
}Beklenen çıktı
Ayşe 30 User(name=Ayşe, age=31, email=ayse@x.com)
Sırada ne var?
Veri sınıflarını öğrendin. Sonraki gruplarda sealed class ile kapalı hiyerarşileri, when ile exhaustive dallanmayı ve object ile singleton yapıları keşfedeceksin.
Bu grup; data class, copy, equals, toString ve destructuring kavramlarını birleştirdi. Bunlar Kotlin veri modellemenin çekirdeğidir. Bir sonraki adımda kapalı hiyerarşilerle güvenli kalıtım desenleri göreceksin.
Uygulama Money veri sınıfı ve add metodu
Money adında bir veri sınıfı tanımla; primary constructor val amount: Double, val currency: String alsın. Sınıf gövdesine fun add(other: Money): Money metodu ekle; gövdesi Money(amount + other.amount, currency) döndürsün. main içinde Money(100.0, "TL") ve Money(50.0, "TL") örneklerini oluştur, add ile topla ve sonucu yazdır.
Başlangıç kodu
// Money veri sınıfı tanımı
// amount ve currency özellikleri ile
// add metodu: başka Money ile toplar
// main'de iki örnek, topla, yazdırÖrnek çözüm
data class Money(val amount: Double, val currency: String) {
fun add(other: Money): Money {
return Money(amount + other.amount, currency)
}
}
fun main() {
val a = Money(100.0, "TL")
val b = Money(50.0, "TL")
val c = a.add(b)
println(c)
}Beklenen çıktı
Money(amount=150.0, currency=TL)
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Aşağıdakilerden hangisi bir veri sınıfında otomatik üretilmez?
- equals
- hashCode
- toString
- factory metot Doğru cevap
Açıklama: factory metot otomatik üretilmez; bunu companion object içinde kendin yazarsın.
2 copy çağrısını tamamla
val v = u.____(age = 31)
val v = u.copy(age = 31)
Açıklama: copy metodu özellik değiştirerek kopya üretir.