CodeBlanks Logo Icon CodeBlanks

Proje tasarımı

İleri seviye finali mini uygulamasının iskeletini tasarlarsın.

Proje: Ktor API + Exposed DB + coroutines

Bu beş derslik projede küçük bir kullanıcı servisi kuracaksın. UserRepo ile veri saklama, Api ile yol yönlendirme, UsersTable ile tablo soyutlama ve suspend ile eşzamanlı erişim birleştirilecek.

Bu yapı, Ktor'ın API katmanını, Exposed'ın DB soyutlamasını ve coroutines'in suspend çağrılarını küçük çapta taklit eder. İlk derste User veri sınıfı ve UserRepo iskeletini oluşturacaksın; save ve find metotlarıyla bir kullanıcı ekleyip bulacaksın.

UserRepo iskeleti

Birinci ders User veri sınıfını ve UserRepo sınıfını tanımlar. Repo, kullanıcıları bir listede saklar; save ekler, find id ile bulur.

Örnek: data class User(val id: Int, val name: String). UserRepo içinde private val users = mutableListOf<User>(). save(u) listeye ekler; find(id) ile id eşleşen kullanıcıyı döndürür. Sonraki derslerde bu repoyu Apı ve UsersTable ile genişleteceksin.

Uygulama User ve UserRepo tanımla

User(id: Int, name: String) adında data class tanımla. UserRepo sınıfı yaz; private val users = mutableListOf<User>(), fun save(u: User) ve fun find(id: Int): User? metotları olsun. main içinde repoya User(1, "Ayşe") ekle ve println(repo.find(1)) yazdır.

Başlangıç kodu

Main.kt
// User veri sınıfı: id ve name
// UserRepo: users listesi, save ve find
// main'de bir kullanıcı ekle, find ile bul ve yazdır

Örnek çözüm

Main.kt
data class User(val id: Int, val name: String)

class UserRepo {
    private val users = mutableListOf<User>()
    fun save(u: User) { users.add(u) }
    fun find(id: Int): User? = users.find { it.id == id }
}

fun main() {
    val repo = UserRepo()
    repo.save(User(1, "Ayşe"))
    println(repo.find(1))
}

Beklenen çıktı

User(id=1, name=Ayşe)

Soru ve cevaplar

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

1 Projenin ilk dersinde hangi yapılar tanımlanır?

  • Apı ve routing
  • User veri sınıfı ve UserRepo Doğru cevap
  • UsersTable
  • suspend fonksiyonlar

Açıklama: İlk ders User ve UserRepo iskeletini kurar.

2 User veri sınıfını tamamla

Soru
____ User(val id: Int, val name: String)
Cevap
data User(val id: Int, val name: String)

Açıklama: data class User otomatik equals ve toString üretir.

3 UserRepo parçalarını eşle

Kavram Anlamı
data class User Veri sınıfı
mutableListOf<User>() Depolama
fun save(u) Ekleme
fun find(id) Bulma

İleri seviye bölümündeki tüm dersler