Sistem Peminjaman
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Python di Coddy. Pelajaran 57 dari 64.
Tantangan
SedangDalam tantangan ini, kamu akan menambahkan fitur peminjaman ke sistem manajemen perpustakaan.
Edit library.py dan implementasikan method borrow_book dengan mengikuti komentar TODO.
File lainnya sudah disediakan dan dikunci:
book.py: classBookyang kamu buat pada tantangan sebelumnyauser.py: classUser, yang menyimpanuser_id,name, danbooks_borroweddriver.py: menjalankan skenario pengujian terhadap implementasimu
borrow_book(book_isbn, user_id) harus mengembalikan tepat satu dari: "Book not found", "User not found", "Book is not available", atau "Book borrowed successfully".
Coba sendiri
from book import Book
from user import User
from library import Library
# Penanganan kasus uji yang menyeluruh
test_case = input()
# Pengujian fungsi dasar
if test_case == "borrow_success":
library = Library("Community Library")
# Tambahkan buku dan pengguna
book = Book("The Great Gatsby", "F. Scott Fitzgerald", "123456")
library.add_book(book)
user = User("U001", "Alice")
library.add_user(user)
# Pinjam buku
result = library.borrow_book("123456", "U001")
print(result)
print(f"Book available: {book.available}")
print(f"Books borrowed by user: {len(user.books_borrowed)}")
elif test_case == "book_not_found":
library = Library("Community Library")
user = User("U001", "Alice")
library.add_user(user)
result = library.borrow_book("nonexistent", "U001")
print(result)
elif test_case == "user_not_found":
library = Library("Community Library")
book = Book("The Great Gatsby", "F. Scott Fitzgerald", "123456")
library.add_book(book)
result = library.borrow_book("123456", "nonexistent")
print(result)
elif test_case == "book_not_available":
library = Library("Community Library")
# Tambahkan buku dan pengguna
book = Book("The Great Gatsby", "F. Scott Fitzgerald", "123456")
book.available = False # Buku sudah dipinjam
library.add_book(book)
user = User("U001", "Alice")
library.add_user(user)
# Coba pinjam buku yang tidak tersedia
result = library.borrow_book("123456", "U001")
print(result)
# Kasus khusus dan pengujian tambahan
elif test_case == "multiple_books":
library = Library("Community Library")
user = User("U001", "Alice")
library.add_user(user)
# Buat beberapa buku
books = [
Book("Book 1", "Author 1", "111"),
Book("Book 2", "Author 2", "222"),
Book("Book 3", "Author 3", "333")
]
for book in books:
library.add_book(book)
# Pinjam beberapa buku
results = []
for book in books:
results.append(library.borrow_book(book.isbn, "U001"))
for result in results:
print(result)
print(f"Total books borrowed: {len(user.books_borrowed)}")
elif test_case == "multiple_users":
library = Library("Community Library")
book = Book("Popular Book", "Famous Author", "999")
library.add_book(book)
# Buat beberapa pengguna
users = [
User("U001", "Alice"),
User("U002", "Bob"),
User("U003", "Charlie")
]
for user in users:
library.add_user(user)
# Coba pinjam buku yang sama dengan pengguna yang berbeda
result1 = library.borrow_book("999", "U001")
result2 = library.borrow_book("999", "U002") # Seharusnya gagal
print(result1)
print(result2)
print(f"Book's borrower: {book.borrower.name}")
elif test_case == "return_book":
library = Library("Community Library")
book = Book("The Great Gatsby", "F. Scott Fitzgerald", "123456")
library.add_book(book)
user = User("U001", "Alice")
library.add_user(user)
# Pinjam buku
borrow_result = library.borrow_book("123456", "U001")
print(borrow_result)
# Periksa status buku
print(f"Book available: {book.available}")
print(f"Book borrower: {book.borrower.name}")
print(f"User's borrowed books: {len(user.books_borrowed)}")
print(f"First borrowed book title: {user.books_borrowed[0].title}")
elif test_case == "empty_library":
library = Library("Empty Library")
result = library.borrow_book("any_isbn", "any_user_id")
print(result)
elif test_case == "borrower_reference":
library = Library("Community Library")
book = Book("The Great Gatsby", "F. Scott Fitzgerald", "123456")
library.add_book(book)
user = User("U001", "Alice")
library.add_user(user)
# Pinjam buku
library.borrow_book("123456", "U001")
# Periksa referensi
print(f"Book's borrower name: {book.borrower.name}")
print(f"First book in user's borrowed list: {user.books_borrowed[0].title}")Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalPengantar OOPclass vs objectParameter selfmethodAtributMethod Konstruktor (__init__)Rangkuman: Kalkulator Sederhana4Pewarisan
Pewarisan DasarFungsi super()Penimpaan MethodPewarisan BergandaUrutan Resolusi MethodRingkasan: Hierarki Karyawan5Polimorfisme
Meninjau Ulang Method OverridingDuck Typingclass dan method AbstrakDesain InterfaceRingkasan: Kalkulator Bentuk8Konsep OOP Lanjutan
Komposisi vs PewarisanMixinsMetode Statis dan Metode ClassDecorator ClassPengelola Konteks11Pola Desain Bagian 2
Pola PerintahPola AdapterPola DecoratorPola Template MethodPola StatePola Composite3Property class
Variabel instance vs variabel classDekorator propertyAtribut privatRangkuman: Pengelola Rekening Bank6Enkapsulasi
Anggota Public, Protected, PrivateModifier AksesPenyembunyian InformasiDecorator Property Tingkat LanjutUlasan: Sistem Catatan Siswa12Proyek: Manajemen Perpustakaan
Ikhtisar Proyekclass Buku dan PenggunaSistem PeminjamanFitur PencarianAntarmuka AdminPengujian dan IntegrasiLatihan sendiri: Compiler Python online