2.1 KiB
2.1 KiB
Kapitel 05: Komposition – Objekte kombinieren & filtern 🎵
In der echten Softwareentwicklung (wie bei Spotify, Instagram oder Netflix) besteht ein System fast immer aus vielen verschiedenen Klassen, die zusammenarbeiten.
Wenn eine Klasse andere Objekte besitzt oder verwaltet, nennt man das Komposition (oder "hat-ein"-Beziehung):
- Eine Playlist hat viele Songs.
- Ein Kino hat viele Säle und Filme.
- Eine Schule hat viele Klassen und Schüler.
🎶 Das Zusammenspiel: Song & Playlist
Schauen wir uns an, wie eine Playlist mit Songs arbeiten kann:
class Song:
def __init__(self, titel, dauer_sekunden):
self.titel = titel
self.dauer_sekunden = dauer_sekunden
class Playlist:
def __init__(self, name):
self.name = name
self.songs = [] # Hier landen die Song-Objekte
def hinzufuegen(self, song):
self.songs.append(song)
def finde_lange_songs(self, min_sekunden):
gefundene = []
for song in self.songs:
if song.dauer_sekunden >= min_sekunden:
gefundene.append(song)
return gefundene
⏱️ Zeit-Formatierung: Aus Sekunden werden Minuten & Sekunden
Um z.B. 215 Sekunden als "03:35" darzustellen, teilt man mit Ganzzahldivision // und Modulo %:
sekunden_gesamt = 215
minuten = sekunden_gesamt // 60 # 3
sekunden = sekunden_gesamt % 60 # 35
# Mit :02d wird immer zweistellig mit führender Null formatiert:
print(f"{minuten:02d}:{sekunden:02d}") # "03:35"
🎯 Deine Aufgabe: Der Spotify-Playlist-Manager
In aufgabe.py baust du deine eigene Musikverwaltung:
- Klasse
Song:- Attribute:
titel,kuenstler,dauer_sekunden - Methode:
formatierte_dauer()->"MM:SS" __str__()->"{titel}" von {kuenstler} ({MM:SS})
- Attribute:
- Klasse
Playlist:song_hinzufuegen(song)anzahl_songs()gesamtdauer_sekunden()finde_songs_von(kuenstler)(Groß-/Kleinschreibung ignorieren!)laengster_song()(liefert das Song-Objekt mit der längsten Dauer)
Testen:
python3 test_aufgabe.py