CodeBlanks Logo Icon CodeBlanks

Görev modeli

Task veri sınıfını ve liste yapısını tasarlarsın.

Görev modeli: data class Task

Bu projede adım adım bir yapılacaklar uygulaması kuracaksın. İlk adım, bir görevi temsil eden data class Task'ı tanımlamak.

data class Task(val title: String, val done: Boolean = false) {
    fun format() = if (done) "[x] $title" else "[ ] $title"
}

Her görevin bir başlığı (title) ve tamamlanma durumu (done) olur. done başlangıçta false'tür. format fonksiyonu done ise [x] title, değilse [ ] title üretir.

data class ve equals

data class'ın en büyük avantajı, equals'ın içerik bazlı olmasıdır: iki Task, alanları aynıysa eşittir. Bu, listede arama ve indexOf gibi işlemleri içerik bazlı yapar.

val a = Task("Alışveriş")
val b = Task("Alışveriş")
a == b   // true
a.equals(b)  // true

Bu özellik ileride completeTask'ın indexOfFirst ile görev bulmasını kolaylaştırır.

Uygulama Task veri sınıfını tanımla ve yazdır

Bir data class Task(val title: String, val done: Boolean = false) tanımla; gövdesinde fun format() = if (done) "[x] $title" else "[ ] $title" olsun. main içinde val t = Task("Alışveriş") yapıp println(t.format()) ile yazdır.

Başlangıç kodu

Main.kt
fun main() {
    // Bir Task oluştur ve format çıktısını yazdır
}

// Task veri sınıfını tanımla: title (String), done (Boolean, varsayılan false)
// format fonksiyonu: done ise "[x] title", değilse "[ ] title"

Örnek çözüm

Main.kt
fun main() {
    val t = Task("Alışveriş")
    println(t.format())
}

data class Task(val title: String, val done: Boolean = false) {
    fun format() = if (done) "[x] $title" else "[ ] $title"
}

Beklenen çıktı

[ ] Alışveriş

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 data class otomatik olarak ne üretir?

  • Yalnızca equals üretilir
  • Yalnızca toString üretilir
  • toString, equals, hashCode, copy otomatik üretilir Doğru cevap
  • Hiçbir şey otomatik üretilmez

Açıklama: data class; toString, equals, hashCode ve copy yöntemlerini otomatik üretir.

2 Boşluğu doldur: veri sınıfı

Soru
____ class Task(val title: String, val done: Boolean = false)
Cevap
data class Task(val title: String, val done: Boolean = false)

Açıklama: data class Task ile veri sınıfı tanımlanır.

3 Sınıf parçasını rolüyle eşleştir

Kavram Anlamı
data class Task Veri sınıfı
val title Sabit başlık
val done Sabit tamamlanma
format() Okunabilir çıktı

Başlangıç bölümündeki tüm dersler