Aufgaben-Python/05_objekte_kombinieren
2026-08-29 12:46:08 +02:00
..
aufgabe.py Initialisiere didaktische Python OOP-Übungsreihe für Nachhilfe (Kapitel 01 bis 06) 2026-08-29 12:46:08 +02:00
musterloesung.py Initialisiere didaktische Python OOP-Übungsreihe für Nachhilfe (Kapitel 01 bis 06) 2026-08-29 12:46:08 +02:00
README.md Initialisiere didaktische Python OOP-Übungsreihe für Nachhilfe (Kapitel 01 bis 06) 2026-08-29 12:46:08 +02:00
test_aufgabe.py Initialisiere didaktische Python OOP-Übungsreihe für Nachhilfe (Kapitel 01 bis 06) 2026-08-29 12:46:08 +02:00

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:

  1. Klasse Song:
    • Attribute: titel, kuenstler, dauer_sekunden
    • Methode: formatierte_dauer() -> "MM:SS"
    • __str__() -> "{titel}" von {kuenstler} ({MM:SS})
  2. 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