Kotlin
Özet - Data class
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.
Örnek çözümü göster
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)
}
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.
Örnek çözümü göster
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)
}
Kendini test et
-
Aşağıdakilerden hangisi bir veri sınıfında otomatik üretilmez?
- equals
- hashCode
- toString
- factory metot
Cevabı göster
factory metot — factory metot otomatik üretilmez; bunu companion object içinde kendin yazarsın.
-
copy çağrısını tamamla
val v = u.____(age = 31)
Cevabı göster
val v = u.copy(age = 31)
Sıradaki ders: Modül tasarımı