编写程序,以多态的方式,实现一个音频文件播放系统,其中包含不同类型的音频文件(MP3 、WAV、OGG),每种类型的文件都有对应的播放方式。
时间: 2024-02-26 16:57:21 浏览: 51
好的,我可以为您提供以下代码实现:
```python
class AudioFile:
def __init__(self, filename):
if not filename.endswith(self.ext):
raise Exception("Invalid file format")
self.filename = filename
class MP3File(AudioFile):
ext = "mp3"
def play(self):
print("Playing {} as mp3".format(self.filename))
class WAVFile(AudioFile):
ext = "wav"
def play(self):
print("Playing {} as wav".format(self.filename))
class OGGFile(AudioFile):
ext = "ogg"
def play(self):
print("Playing {} as ogg".format(self.filename))
class AudioPlayer:
def __init__(self):
self.audio_files = []
def add_audio_file(self, filename):
audio_file = None
if filename.endswith("mp3"):
audio_file = MP3File(filename)
elif filename.endswith("wav"):
audio_file = WAVFile(filename)
elif filename.endswith("ogg"):
audio_file = OGGFile(filename)
else:
raise Exception("Invalid file format")
self.audio_files.append(audio_file)
def play_audio_files(self):
for audio_file in self.audio_files:
audio_file.play()
# 示例用法
player = AudioPlayer()
player.add_audio_file("song1.mp3")
player.add_audio_file("song2.wav")
player.add_audio_file("song3.ogg")
player.play_audio_files()
```
在上面的代码中,我们首先定义了一个基类 `AudioFile`,然后定义了三个子类 `MP3File`、`WAVFile` 和 `OGGFile`,分别对应不同的音频文件类型,并实现了对应的播放方式。
接着,我们定义了一个 `AudioPlayer` 类,用于管理多个音频文件,并提供了添加音频文件和播放音频文件的方法。在添加音频文件时,我们根据文件扩展名来判断文件类型,并创建对应的子类实例。在播放音频文件时,我们遍历所有的音频文件,并调用其 `play` 方法进行播放。
您可以在 `add_audio_file` 方法中添加更多的文件类型,并在对应的子类中实现播放方式,以扩展该播放系统的功能。
阅读全文