CodeBlanks Logo Icon CodeBlanks

Ödünç verme

checkout ve return fonksiyonlarıyla ödünç akışını yazarsın.

Ödünç verme

Ödünç verme için kütüphane hangi kitabın hangi üyede olduğunu takip etmelidir. Bunun için val borrowed = mutableMapOf<String, String>() kullanılır: anahtar kitap numarası isbn, değer ise üye numarası memberId.

fun checkout(memberId: String, isbn: String) metodu borrowed[isbn] = memberId ile kayıt ekler. fun returnBook(isbn: String) metodu borrowed.remove(isbn) ile kaydı siler. Böylece bir kitap aynı anda yalnızca bir üyede olabilir; iade edildiğinde kayıt temizlenir ve kitap tekrar uygun hale gelir.

checkout ve returnBook

checkout metodu kitabı üyeye verir: fun checkout(memberId: String, isbn: String) { borrowed[isbn] = memberId; println("Ödünç: $memberId -> $isbn") }.

returnBook metodu kitabı geri alır: fun returnBook(isbn: String) { borrowed.remove(isbn); println("İade: $isbn") }. Çıktı, işlemin yapıldığını konsola bildirir. Bu iki metot Library sınıfının yanına eklenir ve main içinde lib.checkout("M1", "978-1") biçiminde çağrılır.

Uygulama checkout ve returnBook ekle

Library sınıfına val borrowed = mutableMapOf<String, String>() ekle. fun checkout(memberId: String, isbn: String) metodu yaz: borrowed[isbn] = memberId ve println("Ödünç: $memberId -> $isbn"). fun returnBook(isbn: String) metodu yaz: borrowed.remove(isbn) ve println("İade: $isbn"). main içinde önce checkout("M1", "978-1") sonra returnBook("978-1") çağır.

Başlangıç kodu

Main.kt
data class Book(val title: String, val author: String, val isbn: String)
data class Member(val name: String, val id: String)

class Library {
    val books = mutableListOf<Book>()
    val members = mutableListOf<Member>()
    val borrowed = mutableMapOf<String, String>()

    fun addBook(book: Book) { books.add(book) }
    fun addMember(member: Member) { members.add(member) }
    // checkout ve returnBook metotlarını ekle
}

fun main() {
    val lib = Library()
    lib.addBook(Book("Suç ve Ceza", "Dostoyevski", "978-1"))
    lib.addMember(Member("Ayşe", "M1"))
    // önce checkout sonra returnBook çağır
}

Örnek çözüm

Main.kt
data class Book(val title: String, val author: String, val isbn: String)
data class Member(val name: String, val id: String)

class Library {
    val books = mutableListOf<Book>()
    val members = mutableListOf<Member>()
    val borrowed = mutableMapOf<String, String>()
    fun addBook(book: Book) { books.add(book) }
    fun addMember(member: Member) { members.add(member) }
    fun checkout(memberId: String, isbn: String) {
        borrowed[isbn] = memberId
        println("Ödünç: $memberId -> $isbn")
    }
    fun returnBook(isbn: String) {
        borrowed.remove(isbn)
        println("İade: $isbn")
    }
}

fun main() {
    val lib = Library()
    lib.addBook(Book("Suç ve Ceza", "Dostoyevski", "978-1"))
    lib.addMember(Member("Ayşe", "M1"))
    lib.checkout("M1", "978-1")
    lib.returnBook("978-1")
}

Beklenen çıktı

Ödünç: M1 -> 978-1
İade: 978-1

Soru ve cevaplar

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

1 borrowed.remove(isbn) ne yapar?

  • Ödünç kaydını siler Doğru cevap
  • Kitabı ödünç verir
  • Yeni üye ekler
  • Listeyi yazdırır

Açıklama: remove metodu anahtarı haritadan kaldırır, yani kitabı iade eder.

2 Ödünç kavramlarını eşle

Kavram Anlamı
borrowed[isbn] Ödünç kaydı
borrowed.remove(isbn) İade
memberId Üye
isbn Kitap

3 returnBook metodunu tamamla

Soru
fun returnBook(isbn: String) {
    borrowed.____(isbn)
}
Cevap
fun returnBook(isbn: String) {
    borrowed.remove(isbn)
}

Açıklama: remove(isbn) ödünç kaydını haritadan siler.

Orta seviye bölümündeki tüm dersler