studyklar
GdI 2 · Übungsblatt 7 · Aufgabe 3

Songs und Playlists: Gesamtdauer berechnen

Eine Playlist ist eine Sammlung von Songs, und wie viele es werden, steht vorher nicht fest. Darum speichert sie die Songs in einer Liste. Rechts steht jeweils die Klasse, um die es gerade geht; die Zeilen zum aktuellen Schritt sind hervorgehoben. Mit Weiter geht es Schritt für Schritt voran.

Die Aufgabe

Aufgabe 3

Erstellen Sie eine Klasse „Song“. Ein Song soll einen Namen, den Namen des Interpreten und eine Spieldauer enthalten. Der Einfachheit halber wird die Spieldauer nur in vollen Minuten angegeben.

Erstellen Sie eine zweite Klasse „Playlist“. Eine Playlist hat ebenfalls einen Namen. Außerdem kann eine Playlist beliebig viele Songs enthalten. Es soll eine Methode geschrieben werden, mit der man einer Playlist einen Song hinzufügen kann. Zudem soll es eine Methode geben, die die Gesamtdauer aller Songs der Playlist ausrechnet.

Weitere Methoden sind nach Bedarf hinzuzufügen.

In der main-Methode einer weiteren Klasse sollen mehrere Songs und zwei Playlisten angelegt werden, wobei jeder Song einer der beiden Playlisten hinzugefügt werden soll.

Anschließend sollen die beiden Playlists mit ihrem Namen, der Gesamtdauer (Summe aus der Spieldauern der einzelnen Titel) und einer Auflistung der enthaltenen Titel, Interpreten und Spieldauern auf der Konsole ausgegeben werden.

Gebraucht werden drei Klassen. Song beschreibt einen einzelnen Titel. Playlist sammelt Songs und rechnet ihre Gesamtdauer aus. Musikplayer enthält main: Dort entstehen die Songs und zwei Playlists, dann folgt die Ausgabe. Jede Klasse steht in einer eigenen Datei.

Merke: Soll ein Objekt „beliebig viele“ andere Objekte enthalten, bekommt es eine Liste als Attribut. Ein Array passt nicht, denn seine Größe steht beim Anlegen fest.
  1. Klasse Song: Attribute, Konstruktor, Spieldauer, Text.
  2. Klasse Playlist: Liste, Song hinzufügen, Gesamtdauer, Text.
  3. Klasse Musikplayer: Songs und Playlists anlegen, ausgeben.

Drei Attribute

    private String name;    private String interpret;    private int spieldauer;

Ein Song hat laut Aufgabe drei Angaben: Name, Interpret, Spieldauer. Jede wird ein Attribut, also eine Variable, die jedes Song-Objekt für sich hat. Name und Interpret sind Texte (String). Die Spieldauer zählt volle Minuten, also eine ganze Zahl (int).

private heißt: Nur Code in der Klasse Song darf die Attribute direkt lesen und ändern.

Aus Blatt 5, Aufgabe 1 („Eine eigene Klasse Tier mit Konstruktor und toString“): Eine Klasse ist der Bauplan, ein Objekt ein Exemplar davon. Attribute stehen oben in der Klasse, außerhalb jeder Methode.

Der Konstruktor füllt die Attribute

    public Song(String name, String interpret, int spieldauer) {        this.name = name;        this.interpret = interpret;        this.spieldauer = spieldauer;    }

Der Konstruktor läuft bei new Song(…) und gibt dem neuen Objekt seine Werte. Seine Parameter heißen wie die Attribute. this.name meint das Attribut des Objekts, name allein den Parameter.

Beispiel: new Song("Neon Echo", "Synthwave Syndicate", 3) legt einen Song mit 3 Minuten an.

Noch 8 Schritte bis zum Ergebnis
Den ganzen Lösungsweg sehen Studierende und Lehrende der HS KL. Registriere dich mit deiner Adresse @stud.hs-kl.de oder @hs-kl.de, dann geht es hier direkt weiter.

Song.java

ein einzelner Titel

Abbildung 1Song.java

ein einzelner Titel

public class Song {     private String name;    private String interpret;    private int spieldauer;     public Song(String name, String interpret, int spieldauer) {        this.name = name;        this.interpret = interpret;        this.spieldauer = spieldauer;    }     public int getSpieldauer() {        return spieldauer;    }     public String toString() {        return name + " -- " + interpret + " -- " + spieldauer + " Minuten";    }}
LegendeDie ganze Klasse Song.