Menu
Coddy logo textTech

Ödünç Alma Sistemi

Coddy'nin Java Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 79 / 87.

challenge icon

Görev

Kolay

Kitap ve kullanıcı koleksiyonunu yöneten bir Library sınıfıyla uygun bir ödünç alma sistemi oluşturarak Kütüphane Yönetim Sistemi'ni geliştirmeye devam edelim. Sisteminizin gerçek bir kütüphane gibi hissettirmeye başladığı yer burası: kimin neye sahip olduğunu takip etmek ve ödünç alma kurallarını uygulamak!

Kodunuzu dört dosyaya ayıracaksınız:

  • Book.java: Önceki görevdeki Book sınıfınızı tüm işlevleriyle koruyun: isbn, title, author, isAvailable, borrowedBy, getDetails() ve uygun getter/setter metotları.
  • User.java: id, name, borrowedBooks ArrayList'i, borrowBook(), returnBook(), getBorrowedCount() ve toString() içeren User sınıfınızı koruyun.
  • Library.java: Her şeyi yöneten merkezi Library sınıfını oluşturun. Kütüphaneniz iki ArrayList tutmalıdır: biri Book nesneleri, diğeri User nesneleri için. Şu metotları ekleyin:

    addBook(Book book) - bir kitabı kütüphanenin koleksiyonuna ekler.

    registerUser(User user) - bir kullanıcıyı kütüphanenin kayıtlı kullanıcılarına ekler.

    findBookByIsbn(String isbn) - kitaplar arasında arama yapar ve eşleşen ISBN'ye sahip Book nesnesini döndürür; bulunamazsa null döndürür.

    findUserById(String id) - kullanıcılar arasında arama yapar ve eşleşen ID'ye sahip User nesnesini döndürür; bulunamazsa null döndürür.

    borrowBook(String userId, String isbn) - kullanıcıyı ve kitabı bulur; ardından ikisi de mevcutsa ve kitap ödünç alınabilir durumdaysa kullanıcının kitabı ödünç almasını sağlar ve [userName] borrowed [bookTitle] yazdırır. Kitap kullanılamıyorsa Book not available yazdırın. Kullanıcı veya kitap bulunamazsa Invalid user or book yazdırın.

    returnBook(String userId, String isbn) - kullanıcıyı ve kitabı bulur; ardından kullanıcının kitabı iade etmesini sağlar ve [userName] returned [bookTitle] yazdırır. Kullanıcı veya kitap bulunamazsa Invalid user or book yazdırın.

  • Main.java: Kütüphane sisteminizi bir araya getirin! İki kitap için (her biri ISBN, başlık ve yazar), bir kullanıcı için (ID ve ad) ve ardından bir dizi işlem için girdi alacaksınız.

    Bir Library oluşturun, her iki kitabı ekleyin ve kullanıcıyı kaydedin. Ardından işlemleri işleyin: her işlemin borrow:userId:isbn veya return:userId:isbn biçiminde olduğu, virgülle ayrılmış bir dize alacaksınız.

    Tüm işlemleri işledikten sonra her kitabın durumunu [isbn]: [Available/Borrowed] biçiminde gösteren bir özet yazdırın.

Girdileri şu sırayla alacaksınız: book1 ISBN'i, book1 başlığı, book1 yazarı, book2 ISBN'i, book2 başlığı, book2 yazarı, kullanıcı ID'si, kullanıcı adı ve son olarak işlemler dizesi.

Örneğin, girdiler ISBN-001, Clean Code, Robert Martin, ISBN-002, Design Patterns, Gang of Four, U001, Alice ve borrow:U001:ISBN-001,borrow:U001:ISBN-002,return:U001:ISBN-001 olduğunda çıktınız şöyle olur:

Alice borrowed Clean Code
Alice borrowed Design Patterns
Alice returned Clean Code
ISBN-001: Available
ISBN-002: Borrowed

Bu görev, bütünlüklü bir sistem oluşturmak için composition, encapsulation ve metot tasarımını bir araya getirir. Library sınıfı, genel koleksiyonu yönetirken gerçek ödünç alma mantığını User ve Book sınıflarına devreden bir koordinatör görevi görür!

Kendin dene

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // Kitap 1 bilgilerini oku
        String isbn1 = scanner.nextLine();
        String title1 = scanner.nextLine();
        String author1 = scanner.nextLine();
        
        // Kitap 2 bilgilerini oku
        String isbn2 = scanner.nextLine();
        String title2 = scanner.nextLine();
        String author2 = scanner.nextLine();
        
        // Kullanıcı bilgilerini oku
        String userId = scanner.nextLine();
        String userName = scanner.nextLine();
        
        // İşlemler dizesini oku (virgülle ayrılmış, format: borrow:userId:isbn veya return:userId:isbn)
        String operationsStr = scanner.nextLine();
        
        // TODO: book1 ve book2 için Book nesneleri oluştur
        
        // TODO: Bir User nesnesi oluştur
        
        // TODO: Bir Library oluştur, her iki kitabı ekle ve kullanıcıyı kaydet
        
        // TODO: operationsStr'yi "," ile ayır ve her işlemi işle
        //       Her işlem için, action, userId, isbn almak üzere ":" ile ayır
        //       Buna göre library.borrowBook() veya library.returnBook() çağır
        
        // TODO: Her kitap için "[isbn]: [Available/Borrowed]" formatında özet yazdır
    }
}

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online Java derleyicisi