Birleştirme
- Kotlin kursu
- Başlangıç
- Ders 116/116
- 6 dk
Tüm parçaları birleştirerek çalışan bir final uygulaması yazarsın.
Birleştirme: tüm akış
Son derste tüm parçaları birleştirirsin: görev ekleme, tamamlama ve tamamlananları yazdırma. Uygulama, gerçek bir görev takip aracının küçük bir örneği olur.
val list = TaskList()
list.addTask("Kotlin çalış")
list.addTask("Alışveriş")
list.complete(0)
println(list.listDone())
// [[x] Kotlin çalış]Bu akış addTask, complete ve listDone yöntemlerini art arda çağırır. Her biri önceki derslerde tanımladığın bir parçadır. Böylece gerçek bir kullanım senaryosu tamamlanır.
Akışın tasarımı
Uygulamanın akışı şöyledir: önce listeye görevler eklenir, sonra biri tamamlanır, en son tamamlananlar yazdırılır. Her adım, önceki derslerde tanımlanan bir yöntemi çağırır.
list.addTask("Kotlin çalış") // L02
list.addTask("Alışveriş") // L02
list.complete(0) // L04
println(list.listDone()) // L03Bu akış, birikimli tasarımın gücünü gösterir. Her ders bir parça ekledi ve son ders hepsini bir araya getirdi. Gerçek dünyada da uygulamalar böyle aşama aşama büyür.
Uygulama Tüm akışı birleştir
main'de val list = TaskList() oluştur. list.addTask("Kotlin çalış") ve list.addTask("Alışveriş") çağır. list.complete(0) ile ilk görevi tamamla. Son olarak println ile list.listDone()'u yazdır.
Başlangıç kodu
class Task(val title: String) {
var done: Boolean = false
override fun toString(): String {
return if (done) "[x] $title" else "[ ] $title"
}
}
class TaskNotFound(message: String) : Exception(message)
class TaskList {
val tasks = mutableListOf<Task>()
fun addTask(title: String) {
tasks.add(Task(title))
}
fun listDone() = tasks.filter { it.done }
fun complete(index: Int) {
if (index >= tasks.size) throw TaskNotFound("Görev yok: $index")
tasks[index].done = true
}
}
fun main() {
val list = TaskList()
// İki görev ekle, birini complete ile bitir, tamamlananları yazdır
}Örnek çözüm
class Task(val title: String) {
var done: Boolean = false
override fun toString(): String {
return if (done) "[x] $title" else "[ ] $title"
}
}
class TaskNotFound(message: String) : Exception(message)
class TaskList {
val tasks = mutableListOf<Task>()
fun addTask(title: String) {
tasks.add(Task(title))
}
fun listDone() = tasks.filter { it.done }
fun complete(index: Int) {
if (index >= tasks.size) throw TaskNotFound("Görev yok: $index")
tasks[index].done = true
}
}
fun main() {
val list = TaskList()
list.addTask("Kotlin çalış")
list.addTask("Alışveriş")
list.complete(0)
println(list.listDone())
}Beklenen çıktı
[[x] Kotlin çalış]
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Yöntem ve amacı eşleştir
| Kavram | Anlamı |
|---|---|
addTask |
Görev ekle |
complete |
Görevi bitir |
listDone |
Tamamlananları al |
TaskNotFound |
Hata türü |
2 Bu projede dallar nasıl seçiliyor?
- Sadece for
- Sadece if
- when ile dallar Doğru cevap
- Sadece try
Açıklama: Proje akışında when ile dallar kullanılır.
3 Boşluğu doldur: complete çağır
try {
list.____(0)
} catch (e: TaskNotFound) {
println(e.message)
}
try {
list.complete(0)
} catch (e: TaskNotFound) {
println(e.message)
}
Açıklama: list.complete(0) ilk görevi tamamlar.