Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

فئات الكتاب والمستخدم

جزء من قسم Object Oriented Programming في رحلة Python على Coddy — الدرس 56 من 64.

challenge icon

التحدي

سهل

في هذا التحدي، ستقوم بتنفيذ فئة Book لنظام إدارة مكتبة باستخدام هيكل متعدد الملفات مع تغطية اختبار شاملة.

قم بتحرير book.py لتنفيذ فئة Book باتباع تعليقات TODO. يجب أن يتضمن التنفيذ ما يلي:

  1. التهيئة باستخدام معاملات title و author و ISBN
  2. تتبع حالة التوفر ومعلومات المستعير
  3. تنفيذ تمثيل نصي (string representation) مناسب

ورقة مرجعية

يركز التحدي على تنفيذ فئة Book لنظام إدارة مكتبة. يجب أن تتعامل الفئة مع تهيئة الكتاب، وتتبع حالة التوفر ومعلومات المستعير، وتوفير تمثيل نصي مناسب.

المكونات الرئيسية المطلوب تنفيذها:

  • التهيئة باستخدام معلمات title و author و ISBN
  • تتبع حالة التوفر ومعلومات المستعير
  • تنفيذ طرق التمثيل النصي المناسبة

جرّب بنفسك

from book import Book
from library import Library

# معالج حالات الاختبار الشامل
test_case = input()

if test_case == "create_book":
    library = Library("Community Library")
    title = "Title"
    author = "Author"
    isbn = "ISBN"
    
    book = Book(title, author, isbn)
    print(book)
    
elif test_case == "add_to_library":
    library = Library("Community Library")
    
    book1 = Book("The Great Gatsby", "F. Scott Fitzgerald", "123456")
    book2 = Book("To Kill a Mockingbird", "Harper Lee", "789012")
    
    library.add_book(book1)
    library.add_book(book2)
    
    print(f"Library has {len(library.books)} books")
    print(f"Book 1: {library.books[0]}")
    print(f"Book 2: {library.books[1]}")

elif test_case == "book_availability":
    book = Book("1984", "George Orwell", "345678")
    print(f"Initial availability: {book.available}")
    
    # تغيير التوفر
    book.available = False
    print(f"After change: {book.available}")
    print(book)  # يجب أن يظهر "Not Available"

elif test_case == "empty_values":
    book = Book("", "", "")
    print(book)
    library = Library("")
    library.add_book(book)
    print(library)

elif test_case == "special_characters":
    book = Book("Title with $#@!", "Author with &*^%", "ISBN-123!@#")
    print(book)

elif test_case == "multiple_books":
    library = Library("Public Library")
    
    books = [
        Book("Book 1", "Author 1", "111111"),
        Book("Book 2", "Author 2", "222222"),
        Book("Book 3", "Author 3", "333333"),
        Book("Book 4", "Author 4", "444444"),
        Book("Book 5", "Author 5", "555555")
    ]
    
    for book in books:
        library.add_book(book)
    
    print(library)
    for i, book in enumerate(library.books):
        print(f"Book {i+1}: {book}")

elif test_case == "borrower_assignment":
    book = Book("The Hobbit", "J.R.R. Tolkien", "987654")
    print(f"Initial borrower: {book.borrower}")
    
    book.borrower = "John Doe"
    book.available = False
    print(f"New borrower: {book.borrower}")
    print(book)

elif test_case == "attribute_access":
    book = Book("Pride and Prejudice", "Jane Austen", "246810")
    print(f"Title: {book.title}")
    print(f"Author: {book.author}")
    print(f"ISBN: {book.isbn}")
    print(f"Available: {book.available}")
    print(f"Borrower: {book.borrower}")
    
    # تعديل الخصائص
    book.title = "Updated Title"
    book.author = "Updated Author"
    book.isbn = "999999"
    book.available = False
    book.borrower = "Jane Smith"
    
    print("\
After modifications:")
    print(f"Title: {book.title}")
    print(f"Author: {book.author}")
    print(f"ISBN: {book.isbn}")
    print(f"Available: {book.available}")
    print(f"Borrower: {book.borrower}")

جميع دروس Object Oriented Programming