# Studium - bitte dringend helfen !!!



## ipstyle (17. Apr 2010)

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...




Vorführaufgabe 6: Eine einfache Klasse​Wie schon im ersten Semester wird auch der zweite Teil ihrer grundlegenden Programmierausbildung
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)


----------



## Gast2 (17. Apr 2010)

ipstyle hat gesagt.:


> 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.


*wosch* ... das Semester in den Sand gesetzt



> 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.


geile Aussasge ... entweder hast Du gar keine Ahnung von der Materie oder Du bist zu faul ... Andere machen nicht so eine Aussage



> /home/meier/Musik/Falco_–_Rock Me Amadeus.mp3 (absoluter Pfad, beginnt mit /)


cool


----------



## André Uhres (17. Apr 2010)

ipstyle hat gesagt.:


> Der Quelltext zu dieser Aufgabe dürfte meiner Meinung nach nur ca. 50 Zeilen betragen


Statt den Beitrag zu schreiben, hättest du in dem Fall die Aufgabe schon zweimal fertig :lol:


----------



## XHelp (17. Apr 2010)

Und wo ist jetzt deine Frage? Oder erwartest du, dass es jemand für dich löst?

BTW: ich bin selber Tutor an der Uni und bin immer wieder erstaunt, wieviele Studenten aus allen Wolken fallen, wenn man die Quelle des Abschreibens aus dem Hut zaubert: "Wie, du kennst google???". Und man merkt es ziemlich gut, ob ein Student die Aufgabe selber gelöst hat, oder nicht.


----------



## Onkel Hatti (17. Apr 2010)

Ich überlege gerade, in welcher Phase er sich befindet:

http://www.java-forum.org/hausaufga...eim-erschleichen-loesungen-fuer-aufgaben.html

Hatti

P.S. Bis Dienstag ist noch Zeit. Mit den Kenntnissen des ersten Semesters dürfte die Aufgabe bis dahin lösbar sein.


----------



## Wortraum (17. Apr 2010)

Wenn ich das so überfliege, ist doch sehr detailliert beschrieben, was Du machen mußt, teilweise sogar, wie Du es machen mußt. Delegation mag in der Wirtschaft bedeutend sein, Deine Hausaufgaben aber wird Dir hier wahrscheinlich niemand machen. Du kannst natürlich gerne fragen, wenn Du an einer Stelle nicht weiterkommst oder etwas nicht funktioniert.

Ein kleiner Tip zu Deinem bisherigen Quelltext:
Die main-Methode sollte sich nicht in der Klasse AudioFile befinden, da die Klasse jeweils eine Audiodatei repräsentiert und mehrere Objekte davon erzeugt werden. Die Main-Methode hat damit nicht zu tun und hat auch in solchen Objekten nichts zu suchen.


----------



## nrg (17. Apr 2010)

Jobbörse - java-forum.org


----------



## OliverKroll (17. Apr 2010)

Die haben alle wieder mal schlechte Laune.

Wie wäre es damit:
Du darfst so oft du möchtest in meine Lösung schauen, aber um nicht beim Abschreiben erwischt zu werden, versuchst du trotzdem, dein Programm selber zu schreiben  :

Klasse AudioFile:

```
package pack1;

import java.io.*;

public class AudioFile
{
	private String pathname;
	private String author;
	private String title;
	
	public AudioFile(String pathname)
	{
		int a,b;
		int c,d;
		char sp;
		
		sp=File.separatorChar;
		
		this.pathname=pathname.trim();
		{
			a=this.pathname.lastIndexOf(" - ");
			if(a>0)
			{
				b=this.pathname.lastIndexOf(sp,a);
				this.title=this.pathname.substring(a+3);
				this.author=this.pathname.substring(b+1,a);
			}
			else
			{
				c=this.pathname.lastIndexOf(sp);
				d=this.pathname.lastIndexOf(".");
				this.author="";
				this.title=this.pathname.substring(c+1,d);
			}
		}
		
		System.out.println("pathname="+this.pathname);
		System.out.println("author  ="+this.author);
		System.out.println("title   ="+this.title);
		System.out.println();
	}
	
	public String getPathname()
	{
		return pathname;
	}
	
	public String toString()
	{
		String erg;
		
		erg="";
		
		if(this.author.equals(""))
		{
			erg=this.title;
		}
		else
		{
			erg=this.author+" - "+this.title;
		}
		
		return erg; 
	}
}
```

Klasse Hauptprogramm:

```
package pack1;

public class Hauptprogramm 
{
	public static void main(String[] args)
	{
		AudioFile af1,af2,af3,af4,af5,af6;
		
		af1=new AudioFile("C:\\\\home\\meier\\Musik\\Falco - Rock Me Amadeus.mp3");
		af2=new AudioFile("Falco - Rock Me Amadeus.mp3");
		af3=new AudioFile("C:\\\\home\\db-admin\\Frankie Goes To Hollywood - The Power Of Love.ogg");
		af4=new AudioFile("C:\\\\tmp\\Deep Purple - Smoke On The Water.wav");
		af5=new AudioFile("C:\\\\my-tmp\\file.mp3");
		af6=new AudioFile("file.mp3");
		
		System.out.println("af1="+af1);
		System.out.println("af2="+af2);
		System.out.println("af3="+af3);
		System.out.println("af4="+af4);
		System.out.println("af5="+af5);
		System.out.println("af6="+af6);
	}
}
```

Ausgabe des Hauptprogramms:
pathname=C:\\home\meier\Musik\Falco - Rock Me Amadeus.mp3
author  =Falco
title   =Rock Me Amadeus.mp3

pathname=Falco - Rock Me Amadeus.mp3
author  =Falco
title   =Rock Me Amadeus.mp3

pathname=C:\\home\db-admin\Frankie Goes To Hollywood - The Power Of Love.ogg
author  =Frankie Goes To Hollywood
title   =The Power Of Love.ogg

pathname=C:\\tmp\Deep Purple - Smoke On The Water.wav
author  =Deep Purple
title   =Smoke On The Water.wav

pathname=C:\\my-tmp\file.mp3
author  =
title   =file

pathname=file.mp3
author  =
title   =file

af1=Falco - Rock Me Amadeus.mp3
af2=Falco - Rock Me Amadeus.mp3
af3=Frankie Goes To Hollywood - The Power Of Love.ogg
af4=Deep Purple - Smoke On The Water.wav
af5=file
af6=file

Es kann sein, daß ich die Aufgabenstellung falsch verstanden habe, deshalb nützt dir bloßes Abschreiben sowieso nicht viel.


----------



## Wortraum (17. Apr 2010)

Mit schlechter Laune hat das nichts tun. Aber ich bin überrascht, daß er tatsächlich einen dummen gefunden hat. Glück für ihn.  Und ich bin überrascht, wie wenig man für das Hauptstudium können muß. Alles in allem also ein überraschender Tag für mich.


----------



## XHelp (18. Apr 2010)

Wortraum hat gesagt.:


> Und ich bin überrascht, wie wenig man für das Hauptstudium können muß


Ist doch 2. Semester... ausserdem bestimmt auch Bachelor. Aber selbst fuer 1. Semester ist die Aufgabe recht komisch


----------



## Wortraum (18. Apr 2010)

XHelp hat gesagt.:


> Ist doch 2. Semester... ausserdem bestimmt auch Bacheloar. Aber selbst fuer 1. Semester ist die Aufgabe recht komisch


Dann habe ich mich von den Worten „letzte Hoffnung“ und „Hauptstudium“ täuschen lassen.


----------



## Empire Phoenix (18. Apr 2010)

Also eigentlich ist das je betrug, wenn du im 2ten Semester sowas nicht programmieren kannst, würde ich mir sehr überelgen ob du das richtige studierst... (Btw jeder zukünftige arbeitgeber wird sofort merken ob du dich durch dein studium geschummelt hast oder, den ganzen Mist kannst)


----------



## XHelp (18. Apr 2010)

Empire Phoenix hat gesagt.:


> jeder zukünftige arbeitgeber wird sofort merken ob du dich durch dein studium geschummelt hast oder, den ganzen Mist kannst


Wird zwar langsam zu viel offtopic, aber dennoch:
Es ist doch eigentlich gut. Je mehr "unfähige" Informatiker es gibt, desto höher wirst du als Könner geschätzt.


----------



## Onkel Hatti (18. Apr 2010)

Da kannste machen, was de willst. Es passt einfach.

http://www.java-forum.org/hausaufga...ichen-loesungen-fuer-aufgaben.html#post390063

Hatti


----------



## Wortraum (18. Apr 2010)

Onkel Hatti hat gesagt.:


> Da kannste machen, was de willst. Es passt einfach.
> 
> http://www.java-forum.org/hausaufga...ichen-loesungen-fuer-aufgaben.html#post390063


Bekommen wir das jetzt alle zwölf Stunden zur Erinnerung?


----------



## André Uhres (18. Apr 2010)

Onkel Hatti hat gesagt.:


> Da kannste machen, was de willst. Es passt einfach.
> 
> http://www.java-forum.org/hausaufga...ichen-loesungen-fuer-aufgaben.html#post390063


----------



## Empire Phoenix (18. Apr 2010)

http://www.java-forum.org/hausaufga...ichen-loesungen-fuer-aufgaben.html#post390063


Gerne ^^ sogar öfters XD


----------



## Wortraum (21. Apr 2010)

Wie nett sich der Themenstarter bei OliverKroll bedankte. :lol:


----------

