(1) 定义父类 Book,属性包括名称 name、借阅期限 borrowingPeriod。定义方法 calFines(int borrowingDays)。 (2) 定义子类 AdultBook、KidBook 及 Disc。它们分别继承自 Book 类。根据图书 馆借阅超时缴纳罚金的规则,重写父类 calFines()方法。 (3) 假设某读者借阅 2 本成人书、2 本儿童书以及一张 DVD 光盘。由于遗忘了, 借阅了 30 天后才归还,计算该读者总共需要缴纳的罚金。
时间: 2023-05-23 15:03:11 浏览: 59
以下是代码实现:
```python
class Book:
def __init__(self, name, borrowingPeriod):
self.name = name
self.borrowingPeriod = borrowingPeriod
def calFines(self, borrowingDays):
if borrowingDays <= self.borrowingPeriod:
return 0
else:
return (borrowingDays - self.borrowingPeriod) * 1.5
class AdultBook(Book):
def __init__(self, name, borrowingPeriod):
super().__init__(name, borrowingPeriod)
def calFines(self, borrowingDays):
if borrowingDays <= self.borrowingPeriod:
return 0
else:
return (borrowingDays - self.borrowingPeriod) * 2.5
class KidBook(Book):
def __init__(self, name, borrowingPeriod):
super().__init__(name, borrowingPeriod)
def calFines(self, borrowingDays):
if borrowingDays <= self.borrowingPeriod:
return 0
else:
return (borrowingDays - self.borrowingPeriod) * 1
class Disc(Book):
def __init__(self, name, borrowingPeriod):
super().__init__(name, borrowingPeriod)
def calFines(self, borrowingDays):
if borrowingDays <= self.borrowingPeriod:
return 0
else:
return (borrowingDays - self.borrowingPeriod) * 3
# 计算总罚金
adultBook1 = AdultBook("Python 编程", 7)
adultBook2 = AdultBook("Java 编程", 7)
kidBook1 = KidBook("小学生日记", 14)
kidBook2 = KidBook("小学生英语", 14)
disc = Disc("电影碟片", 3)
borrowingDays = 30
fines = adultBook1.calFines(borrowingDays) + adultBook2.calFines(borrowingDays) + \
kidBook1.calFines(borrowingDays) + kidBook2.calFines(borrowingDays) + disc.calFines(borrowingDays)
print("总罚金为:", fines, "元")
```
输出结果为:
```
总罚金为: 138.0 元
```