Menu
Coddy logo textTech

Kitap ve Kullanıcı Sınıfları

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

challenge icon

Görev

Kolay

Önceki derste oluşturduğun Book ve User sınıflarını genişleterek Kütüphane Yönetim Sistemi'ni oluşturmaya devam edelim. Şimdi kullanıcıların kitap ödünç alabilmesini ekleyecek ve bu iki varlık arasında gerçek bir bağlantı oluşturacaksın.

Kodunu üç dosya arasında düzenleyeceksin:

  • Book.java: Önceki görevdeki Book sınıfını geliştir. Mevcut tüm işlevleri (isbn, title, author, getter/setter'lara sahip isAvailable ve getDetails()) koru. Şimdi, kitabı ödünç alan kullanıcının kimliğini (veya kitap ödünç alınmamışsa borrowedBy) saklayan String türünde özel bir null alanı ekle. borrowedBy için bir getter ve ödünç alındığında (borrowedBy null olmayan bir değere ayarlandığında) isAvailable değerini de uygun şekilde güncelleyen bir setter ekle; kitap iade edildiğinde (null olarak ayarlandığında) yeniden kullanılabilir hâle gelir.
  • User.java: Ödünç alınan kitapları takip etmek için User sınıfını genişlet. Mevcut id, name, constructor, getter'lar ve toString() işlevlerini koru. ArrayList<Book> adında özel bir borrowedBooks alanı ekle (constructor içinde başlat). Kitabı kullanıcının listesine ekleyen ve kitabın borrowBook(Book book) değerini bu kullanıcının ID'sine ayarlayan bir borrowedBy metodu oluştur. Kitabı listeden kaldıran ve returnBook(Book book) değerini null olarak ayarlayan bir borrowedBy metodu oluştur. Kullanıcının o anda sahip olduğu kitap sayısını döndüren bir getBorrowedCount() metodu ekle.
  • Main.java: Ödünç alma sisteminin çalışırken nasıl göründüğünü göster. Beş girdi alacaksın: bir kitap için ISBN, title, author; ardından kullanıcı ID'si ve adı.

    Bu girdilerle bir Book ve bir User oluştur. Kitabın ayrıntılarını ve kullanılabilirlik durumunu yazdır. Ardından kullanıcı kitabı ödünç alsın. Kitabın kullanılabilirlik durumunu tekrar yazdır; sonrasında kitabı kimin ödünç aldığını Borrowed by: [userId] biçiminde yazdır. Kullanıcının kaç kitabı olduğunu [name] has [count] book(s) biçiminde yazdır. Son olarak kullanıcı kitabı iade etsin ve kullanılabilirlik durumunu bir kez daha yazdır.

Sırasıyla beş girdi alacaksın: ISBN (String), title (String), author (String), kullanıcı ID'si (String) ve kullanıcı adı (String).

Örneğin, girdiler 978-0-13-468599-1, Effective Java, Joshua Bloch, U001 ve Alice olduğunda çıktın şöyle olur:

[978-0-13-468599-1] Effective Java by Joshua Bloch
Available: true
Available: false
Borrowed by: U001
Alice has 1 book(s)
Available: true

Bu görev, önceki çalışmanın üzerine doğrudan inşa edilir ve bir kütüphane sistemini işlevsel hâle getiren kitaplar ile kullanıcılar arasındaki önemli ilişkiyi ekler. Composition kullanacak (User "has" Books) ve iyi tasarlanmış metotlar aracılığıyla bir nesnedeki değişikliklerin başka bir nesneyi nasıl etkileyebileceğini göreceksin!

Kendin dene

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // Kitap bilgilerini oku
        String isbn = scanner.nextLine();
        String title = scanner.nextLine();
        String author = scanner.nextLine();
        
        // Kullanıcı bilgilerini oku
        String userId = scanner.nextLine();
        String userName = scanner.nextLine();
        
        // isbn, title ve author ile bir Book nesnesi oluştur
        Book book = new Book(isbn, title, author);
        
        // userId ve userName ile bir User nesnesi oluştur
        User user = new User(userId, userName);
        
        // getDetails() kullanarak kitabın detaylarını yazdır
        System.out.println(book.getDetails());
        
        // Print whether the book is available (format: "Available: true" or "Available: false")
        System.out.println("Available: " + book.isAvailable());
        
        // Kullanıcının kitabı ödünç almasını sağla
        user.borrowBook(book);
        
        // Kitabın müsaitliğini tekrar yazdır
        System.out.println("Available: " + book.isAvailable());
        
        // Kim tarafından ödünç alındığını yazdır
        System.out.println("Borrowed by: " + book.getBorrowedBy());
        
        // Kullanıcının kaç kitabı olduğunu yazdır
        System.out.println(user.getName() + " has " + user.getBorrowedCount() + " book(s)");
        
        // Kullanıcının kitabı iade etmesini sağla
        user.returnBook(book);
        
        // Müsaitliği bir kez daha yazdır
        System.out.println("Available: " + book.isAvailable());
    }
}

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

Kendi başına pratik yap: Online Java derleyicisi