问题:
针对图书馆的一个简单的软件系统,会将图书馆建模为图书和读者的一个集合。读者在任何给定的时间内,最多只能够借3本图书。每本图书有一个等待借阅的读者的列表。
每本图书有一个标题、一个作者、已经借阅了它的一名读者,以及等待这本图书还回后再继续借阅读者的列表。编写 Book 和 Patron类来建模这些对象。首先考虑每个类的接口或方法,然后为对象的状态选择适当的数据结构。此外,还要编写一个简短的脚本来测试这些类。
解答:
以下是一个使用 Python 的示例代码,用于建模图书馆系统,包括 Book 和 Patron 类,并编写一个简短的脚本来测试这些类:
class Book:
def __init__(self, title, author):
self.title = title
self.author = author
self.borrower = None
self.waiting_list = []
def borrow_book(self, patron_name):
if not self.borrower and len(self.waiting_list) < 3:
self.borrower = patron_name
return True
else:
self.waiting_list.append(patron_name)
return False
def return_book(self):
self.borrower = None
if self.waiting_list:
next_borrower = self.waiting_list.pop(0)
self.borrower = next_borrower
class Patron:
def __init__(self, name):
self.name = name
# 测试类的功能
if __name__ == "__main__":
book1 = Book("Python Programming", "John Smith")
book2 = Book("Data Science for Beginners", "Emily Brown")
patron1 = Patron("Alice")
patron2 = Patron("Bob")
print(book1.borrow_book(patron1.name)) # True
print(book1.borrow_book(patron2.name)) # False (超出最大借阅数量)
print(book2.borrow_book(patron2.name)) # True
book1.return_book()
print(book1.borrow_book(patron2.name)) # True
在此示例中,定义了 Book 类和 Patron 类。Book 类有 borrow_book 和 return_book 方法来借阅和归还图书,并且 Patron 类用于表示图书馆中的读者。然后创建了几本书和几位读者,并且测试了借阅与归还图书的功能。