设计一个媒体类,其中包含书、CD及磁带三个子类。按照类的设计模式,完成他们的插入、删除、及查找功能。
时间: 2023-10-23 09:12:42 浏览: 178
好的,以下是基于面向对象的设计模式,实现媒体类及其三个子类的功能:
1. 媒体类 Media:
属性:名称、价格、库存数量、类型(book、CD、tape)、作者(书)、演唱者(CD、tape)、出版社(书、CD)、时长(CD、tape)等。
方法:插入(添加媒体)、删除(删除媒体)、查找(根据名称或者其他属性查找媒体)、修改(修改媒体信息)等。
2. 书类 Book:
属性:继承自媒体类,新增属性为 ISBN 编号、出版日期等。
方法:继承自媒体类,可重写父类方法。
3. CD类 CD:
属性:继承自媒体类,新增属性为曲目列表、发行日期等。
方法:继承自媒体类,可重写父类方法。
4. 磁带类 Tape:
属性:继承自媒体类,新增属性为磁带长度、发行日期等。
方法:继承自媒体类,可重写父类方法。
以上是媒体类及其三个子类的设计,下面是一些主要的方法实现:
1. 插入媒体
```python
def add_media(self, media):
self.medias.append(media)
self.stock_num += 1
```
2. 删除媒体
```python
def remove_media(self, media):
if media in self.medias:
self.medias.remove(media)
self.stock_num -= 1
else:
print("媒体库中没有该媒体")
```
3. 根据名称查找媒体
```python
def search_by_name(self, name):
result = []
for media in self.medias:
if media.name == name:
result.append(media)
return result
```
4. 根据其他属性查找媒体
```python
def search_by_attribute(self, attribute, value):
result = []
for media in self.medias:
if hasattr(media, attribute):
if getattr(media, attribute) == value:
result.append(media)
return result
```
5. 修改媒体信息
```python
def modify_media(self, media, attribute, value):
if media in self.medias:
setattr(media, attribute, value)
else:
print("媒体库中没有该媒体")
```
以上是媒体类及其三个子类的设计和主要方法实现。在实际应用中,我们可以根据需要进一步完善这些方法,以满足具体的业务需求。
阅读全文