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 dersteki Book ve User sınıflarını genişleterek Kütüphane Yönetim Sistemini oluşturmaya devam edelim. Şimdi, kullanıcıların kitap ödünç alabilme özelliğini ekleyerek bu iki varlık arasında gerçek bir bağlantı oluşturacaksınız.

Kodunuzu üç dosya halinde düzenleyeceksiniz:

  • Book.java: Önceki görevdeki Book sınıfınızı geliştirin. Mevcut tüm işlevleri (isbn, title, author, getter/setter metotlarıyla birlikte isAvailable ve getDetails()) koruyun. Şimdi, kitabı ödünç alan kullanıcının ID'sini (veya ödünç alınmamışsa null) saklayan String türünde özel (private) bir borrowedBy alanı ekleyin. borrowedBy için bir getter ve aynı zamanda isAvailable durumunu uygun şekilde güncelleyen bir setter ekleyin; bir kitap ödünç alındığında (borrowedBy null olmayan bir değere ayarlandığında), kitap kullanılamaz hale gelir; iade edildiğinde (null olarak ayarlandığında), tekrar kullanılabilir hale gelir.
  • User.java: Ödünç alınan kitapları takip etmek için User sınıfınızı genişletin. Mevcut id, name, yapıcı metot (constructor), getter metotları ve toString() metodunu koruyun. borrowedBooks adında özel (private) bir ArrayList<Book> alanı ekleyin (bunu yapıcı metot içinde başlatın). Kitabı kullanıcının listesine ekleyen ve kitabın borrowedBy değerini bu kullanıcının ID'sine ayarlayan bir borrowBook(Book book) metodu oluşturun. Kitabı listeden çıkaran ve borrowedBy değerini null olarak ayarlayan bir returnBook(Book book) metodu oluşturun. Kullanıcının şu anda kaç kitaba sahip olduğunu döndüren bir getBorrowedCount() metodu ekleyin.
  • Main.java: Ödünç alma sistemini iş başında gösterin. Beş girdi alacaksınız: Bir kitap için ISBN, başlık (title), yazar (author), ardından kullanıcı ID'si ve adı.

    Bu girdilerle bir Book ve bir User nesnesi oluşturun. Kitabın ayrıntılarını ve uygunluk durumunu yazdırın. Ardından kullanıcının kitabı ödünç almasını sağlayın. Kitabın uygunluk durumunu tekrar yazdırın, ardından Borrowed by: [userId] formatında kimin ödünç aldığını yazdırın. Kullanıcının kaç kitabı olduğunu [name] has [count] book(s) formatında yazdırın. Son olarak, kullanıcının kitabı iade etmesini sağlayın ve uygunluk durumunu bir kez daha yazdırın.

Sırasıyla beş girdi alacaksınız: ISBN (String), title (String), author (String), user ID (String) ve user name (String).

Örneğin, 978-0-13-468599-1, Effective Java, Joshua Bloch, U001 ve Alice girdileriyle çıktınız şöyle olacaktır:

[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, doğrudan önceki çalışmanızın üzerine inşa edilerek, bir kütüphane sistemini işlevsel kılan kitaplar ve kullanıcılar arasındaki kritik ilişkiyi ekler. Kompozisyon (Kullanıcının Kitaplara "sahip olması") kullanacak ve bir nesnedeki değişikliklerin iyi tasarlanmış metotlar aracılığıyla diğerini nasıl etkileyebileceğini göreceksiniz!

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, başlık ve yazar 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 ayrıntılarını yazdır
        System.out.println(book.getDetails());
        
        // Kitabın müsait olup olmadığını yazdır (format: "Available: true" veya "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üsaitlik durumunu tekrar yazdır
        System.out.println("Available: " + book.isAvailable());
        
        // Kimin ödünç aldığı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üsaitlik durumunu bir kez daha yazdır
        System.out.println("Available: " + book.isAvailable());
    }
}

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