Hi Leute!
Ich studiere Wirtschaftsinformatik im II.Semester und muss bis spätestens DIENSTAG ein Testat abgeben, damit ich zur Java-Prüfung am Ende des Semesters zugelassen werde.
Ich kann die Aufgabe leider nicht lösen, und brauche dringend eure Hilfe.
Der Quelltext zu dieser Aufgabe dürfte meiner Meinung nach nur ca. 50 Zeilen betragen, für einen erfahrenen Programmierer dürfte diese Aufgabe in ca. 5 Minuten gelöst sein.
Ich habe auch schon selber einen Ansatz dazu entwickelt, hier der Quelltext dazu, ist aber nicht sehr viel:
public class AudioFile {
public static void main(String[] args) {
/*Attribute*/
private String pathname;
private String author;
private String title;
/*Getter*/
public String getPathname()
{
return pathname;
}
}
}
ACHTUNG: Uns wurde bereits eine vorgefertigte JUNIT Datei zur Verfügung gestellt, eine eigene vordefinierete Klasse quasie, damit wir nicht so viel selber machen müssen:
public class AudioFile {
public static void main(String[] args) {
/*Attribute*/
private String pathname;
private String author;
private String title;
/*Getter*/
public String getPathname()
{
return pathname;
}
}
}
Hier nun die Aufgabenstellung: Ich hoffe sehr, dass ihr mir helft, bitte das ist meine letzte Hoffnung, sonst darf ich nicht ins Hauptstudium, also bitte helft mir.P.S. Ich wäre auch gerne bereit, demjenigen der mir das Programm schreibt eine kleine Spende als Dankbarkeit zu überweisen, falls das erlaubt ist, ich weiß ja nicht...
durch ein Praktikum begleitet. Die fünf zu erstellenden Vorführaufgaben bauen dabei
aufeinander auf und werden Sie schrittweise durch die Implementierung eines einfachen
Audioplayers begleiten.
(a) Legen Sie zunächst eine Klasse AudioFile an. Diese Klasse hat die Attribute pathname,
author und title, alle vom Typ String. Achten Sie darauf die Sichtbarkeiten dabei so
restriktiv wie möglich zu vergeben (d.h. im Regelfall private).
(b) Legen Sie für das Attribut pathname eine Getter-Methode an. Diese ist eine Methode
public String getPathname(), die pathname zurück gibt und damit auch außerhalb
der Klasse den (lesenden) Zugriff auf das Attribut pathname erlaubt.
Jedes Objekt der Klasse AudioFile bezieht sich auf eine einzelne Audiodatei. Der Pfadname
dieser Datei besteht aus dem optionalen Pfad und dem Dateinamen. Wird ein Pfad angegeben, so
kann dies eine absolute oder eine relative Angabe sein. Es kann also der vollständige Pfad, ein
relativer Pfad oder auch gar kein Pfad mit angegeben sein.
Beispiele für Unix/Linux Systeme:
/home/meier/Musik/Falco_–_Rock Me Amadeus.mp3 (absoluter Pfad, beginnt mit /)
../musik/Falco_–_Rock Me Amadeus.mp3 (relativer Pfad)
Falco_–_Rock Me Amadeus.mp3 (ohne Pfad)
Beispiele für Windows Systeme:
D:\Daten\Musik\Falco_–_Rock Me Amadeus.mp3 (absoluter Pfad, beginnt mit
Laufwerksangabe)
..\Musik\Falco_–_Rock Me Amadeus.mp3 (relativer Pfad)
Falco_–_Rock Me Amadeus.mp3 (ohne Pfad)
(Der Unterstrich '_' steht hier, ebenso wie im Rest der Abgabe, jeweils für ein Leerzeichen.)
Bitte beachten Sie, dass der Pfadseparator, also das Trennzeichen für die einzelnen Verzeichnisse,
je nach Betriebssystem unterschiedlich ist, etwa ein '/' unter Unix und ein '\' unter
Windows. Das statische Attribut (also das „objektorientierte Gegenstück" einer Konstante)
java.io.File.separatorChar beinhaltet aus diesem Grund den Pfadseparator betriebssystemunabhängig.
Dieser kann etwa mit
System.out.println(java.io.File.separatorChar);
ausgegeben werden.
GP2P / OOPP Seite 1 von 2 Vorführaufgabe 6 (SS 10)
Häufig finden sich bei Audiodateien Dateinamen nach folgendem Schema
Interpret_–_Titel.Endung (siehe hierzu auch die Beispiele oben)
Etwaige Leerzeichen vor und nach dem Bindestrich sind dabei natürlich optional und gehören -
sofern vorhanden - nicht zu Interpret und Titel. Ebenso spielt ein eventuell angegebener Pfad
natürlich keine Rolle.
(c) Implementieren Sie nun den Konstruktor der Klasse unter Berücksichtigung folgender
Vorgaben:
• Der Konstruktor hat einen Parameter vom Typ String, der den Pfadnamen enthält.
Dieser wird dem Attribut pathname der Klasse zugewiesen.
• Sofern der Dateiname einen Bindestrich ('-') im Namen hat, schließen Sie nach
obigem Schema auf Titel und Interpret. Weisen Sie diese den Attributen author
und title zu. (Hinweis: Leereichen am Anfang und am Ende von Titel und/oder Interpret gehören
nicht zu den Trackinformationen.)
• Sofern sich nach obigem Schema keine Trackinformationen ermitteln lassen,
initialisieren Sie das Attribut author mit einem leeren String und das Attribut title
auf den Dateinamen ohne Pfad und ohne Endung.
Sofern ein Objekt in einem String-Kontext verwendet wird, wird von der Laufzeitumgebung
automatisch die Methode toString() des Objektes aufgerufen. So wird etwa
Sting x = "Objekt: " + obj;
automatisch umgesetzt zu
String x = "Objekt: " + obj.toString();.
Die Methode toString(), die jede Klasse von java.lang.Object erbt, kann natürlich durch eine
eigene Methode überschrieben werden um die Ausgabe den eigenen Bedürfnissen anzupassen.
(d) Um eine komfortablere Ausgabe zu ermöglichen, überschreiben wie die Methode
java.lang.Object.toString mit einer an unsere Zwecke angepassten Methode.
Legen Sie hierzu einfach eine Methode public String toString() für die Klasse
AudioFile an. In unserem Beispiel soll diese Methode einen String nach dem
folgenden Schema zurück geben:
• falls das Attribut author ein leerer String ist: „Titel“
• ansonsten: „Interpret – Titel“
(e) Schreiben Sie eine main-Methode, in der Sie sechs AudioFile Objekte für folgende
Dateinamen anlegen:
• /home/meier/Musik/Falco - Rock Me Amadeus.mp3
• Falco - Rock Me Amadeus.mp3
• /home/db-admin/Frankie Goes To Hollywood - The Power Of Love.ogg
• /tmp/Deep Purple - Smoke On The Water.wav
• /my-tmp/file.mp3
• file.mp3
Bitte beachten Sie, dass Sie die Pfade ggf. für das verwendete Betriebssystem anpassen
müssen! Für ein Windowssysteme ersetzen Sie hierzu etwa die führenden '/' durch C:\\
und alle weiteren '/' durch \\ ersetzen. (Ein doppelter '\' ist nötig, da ein einfacher '\' - wie aus C
schon bekannt - eine Escape-Sequenz wie etwa einen Zeilenumbruch - "\n" - einleiten würde.)
Geben Sie die angelegten Objekte anschließend jeweils mit System.out.println auf
die Standardausgabe aus.
GP2P / OOPP Seite 2 von 2 Vorführaufgabe 6 (SS 10)
Ich studiere Wirtschaftsinformatik im II.Semester und muss bis spätestens DIENSTAG ein Testat abgeben, damit ich zur Java-Prüfung am Ende des Semesters zugelassen werde.
Ich kann die Aufgabe leider nicht lösen, und brauche dringend eure Hilfe.
Der Quelltext zu dieser Aufgabe dürfte meiner Meinung nach nur ca. 50 Zeilen betragen, für einen erfahrenen Programmierer dürfte diese Aufgabe in ca. 5 Minuten gelöst sein.
Ich habe auch schon selber einen Ansatz dazu entwickelt, hier der Quelltext dazu, ist aber nicht sehr viel:
public class AudioFile {
public static void main(String[] args) {
/*Attribute*/
private String pathname;
private String author;
private String title;
/*Getter*/
public String getPathname()
{
return pathname;
}
}
}
ACHTUNG: Uns wurde bereits eine vorgefertigte JUNIT Datei zur Verfügung gestellt, eine eigene vordefinierete Klasse quasie, damit wir nicht so viel selber machen müssen:
public class AudioFile {
public static void main(String[] args) {
/*Attribute*/
private String pathname;
private String author;
private String title;
/*Getter*/
public String getPathname()
{
return pathname;
}
}
}
Hier nun die Aufgabenstellung: Ich hoffe sehr, dass ihr mir helft, bitte das ist meine letzte Hoffnung, sonst darf ich nicht ins Hauptstudium, also bitte helft mir.
Vorführaufgabe 6: Eine einfache Klasse
Wie schon im ersten Semester wird auch der zweite Teil ihrer grundlegenden Programmierausbildungdurch ein Praktikum begleitet. Die fünf zu erstellenden Vorführaufgaben bauen dabei
aufeinander auf und werden Sie schrittweise durch die Implementierung eines einfachen
Audioplayers begleiten.
(a) Legen Sie zunächst eine Klasse AudioFile an. Diese Klasse hat die Attribute pathname,
author und title, alle vom Typ String. Achten Sie darauf die Sichtbarkeiten dabei so
restriktiv wie möglich zu vergeben (d.h. im Regelfall private).
(b) Legen Sie für das Attribut pathname eine Getter-Methode an. Diese ist eine Methode
public String getPathname(), die pathname zurück gibt und damit auch außerhalb
der Klasse den (lesenden) Zugriff auf das Attribut pathname erlaubt.
Jedes Objekt der Klasse AudioFile bezieht sich auf eine einzelne Audiodatei. Der Pfadname
dieser Datei besteht aus dem optionalen Pfad und dem Dateinamen. Wird ein Pfad angegeben, so
kann dies eine absolute oder eine relative Angabe sein. Es kann also der vollständige Pfad, ein
relativer Pfad oder auch gar kein Pfad mit angegeben sein.
Beispiele für Unix/Linux Systeme:
/home/meier/Musik/Falco_–_Rock Me Amadeus.mp3 (absoluter Pfad, beginnt mit /)
../musik/Falco_–_Rock Me Amadeus.mp3 (relativer Pfad)
Falco_–_Rock Me Amadeus.mp3 (ohne Pfad)
Beispiele für Windows Systeme:
D:\Daten\Musik\Falco_–_Rock Me Amadeus.mp3 (absoluter Pfad, beginnt mit
Laufwerksangabe)
..\Musik\Falco_–_Rock Me Amadeus.mp3 (relativer Pfad)
Falco_–_Rock Me Amadeus.mp3 (ohne Pfad)
(Der Unterstrich '_' steht hier, ebenso wie im Rest der Abgabe, jeweils für ein Leerzeichen.)
Bitte beachten Sie, dass der Pfadseparator, also das Trennzeichen für die einzelnen Verzeichnisse,
je nach Betriebssystem unterschiedlich ist, etwa ein '/' unter Unix und ein '\' unter
Windows. Das statische Attribut (also das „objektorientierte Gegenstück" einer Konstante)
java.io.File.separatorChar beinhaltet aus diesem Grund den Pfadseparator betriebssystemunabhängig.
Dieser kann etwa mit
System.out.println(java.io.File.separatorChar);
ausgegeben werden.
GP2P / OOPP Seite 1 von 2 Vorführaufgabe 6 (SS 10)
Häufig finden sich bei Audiodateien Dateinamen nach folgendem Schema
Interpret_–_Titel.Endung (siehe hierzu auch die Beispiele oben)
Etwaige Leerzeichen vor und nach dem Bindestrich sind dabei natürlich optional und gehören -
sofern vorhanden - nicht zu Interpret und Titel. Ebenso spielt ein eventuell angegebener Pfad
natürlich keine Rolle.
(c) Implementieren Sie nun den Konstruktor der Klasse unter Berücksichtigung folgender
Vorgaben:
• Der Konstruktor hat einen Parameter vom Typ String, der den Pfadnamen enthält.
Dieser wird dem Attribut pathname der Klasse zugewiesen.
• Sofern der Dateiname einen Bindestrich ('-') im Namen hat, schließen Sie nach
obigem Schema auf Titel und Interpret. Weisen Sie diese den Attributen author
und title zu. (Hinweis: Leereichen am Anfang und am Ende von Titel und/oder Interpret gehören
nicht zu den Trackinformationen.)
• Sofern sich nach obigem Schema keine Trackinformationen ermitteln lassen,
initialisieren Sie das Attribut author mit einem leeren String und das Attribut title
auf den Dateinamen ohne Pfad und ohne Endung.
Sofern ein Objekt in einem String-Kontext verwendet wird, wird von der Laufzeitumgebung
automatisch die Methode toString() des Objektes aufgerufen. So wird etwa
Sting x = "Objekt: " + obj;
automatisch umgesetzt zu
String x = "Objekt: " + obj.toString();.
Die Methode toString(), die jede Klasse von java.lang.Object erbt, kann natürlich durch eine
eigene Methode überschrieben werden um die Ausgabe den eigenen Bedürfnissen anzupassen.
(d) Um eine komfortablere Ausgabe zu ermöglichen, überschreiben wie die Methode
java.lang.Object.toString mit einer an unsere Zwecke angepassten Methode.
Legen Sie hierzu einfach eine Methode public String toString() für die Klasse
AudioFile an. In unserem Beispiel soll diese Methode einen String nach dem
folgenden Schema zurück geben:
• falls das Attribut author ein leerer String ist: „Titel“
• ansonsten: „Interpret – Titel“
(e) Schreiben Sie eine main-Methode, in der Sie sechs AudioFile Objekte für folgende
Dateinamen anlegen:
• /home/meier/Musik/Falco - Rock Me Amadeus.mp3
• Falco - Rock Me Amadeus.mp3
• /home/db-admin/Frankie Goes To Hollywood - The Power Of Love.ogg
• /tmp/Deep Purple - Smoke On The Water.wav
• /my-tmp/file.mp3
• file.mp3
Bitte beachten Sie, dass Sie die Pfade ggf. für das verwendete Betriebssystem anpassen
müssen! Für ein Windowssysteme ersetzen Sie hierzu etwa die führenden '/' durch C:\\
und alle weiteren '/' durch \\ ersetzen. (Ein doppelter '\' ist nötig, da ein einfacher '\' - wie aus C
schon bekannt - eine Escape-Sequenz wie etwa einen Zeilenumbruch - "\n" - einleiten würde.)
Geben Sie die angelegten Objekte anschließend jeweils mit System.out.println auf
die Standardausgabe aus.
GP2P / OOPP Seite 2 von 2 Vorführaufgabe 6 (SS 10)