Wie Objekte ausgeben?

jaykop

Grünschnabel
Hallo liebe tutorial.de mitglieder

Ich bin neu hier und bräuchte eure Hilfe beim lösen einer aufgaben Stellung.
Ich habe den Anfang geschaft aber bin jetzt an einer Stelle zum stotern gekommen und hoffe das ihr mir einen ansatz geben könnt wie man es Lösen könnte.

DIe aufgabenstellung steht immer ganz oben im CODE:
Hier unten habe ich erst mal eine Klasse namens Buch erstellt und die methoden definiert.

Code:
/* 
Erstellen Sie eine Java-Klass Buch fuer die Repraesentation von Buecher. Jedes Buch habe
• einen Titel, 
• einen Autor, 
• eine Seitenzahl und 
• einen Preis.
Sehen Sie fuer Titel, Autor, Seitenzahl und Preis entsprechende Instanzvariablen vor. 
Sorgen Sie dafuer, dass ausserhalb der Klasse Buch nicht auf die Instanzvariablen zugegriffen werden kann (siehe Foli- en 27–28). 
Stellen Sie stattdessen sogenannte Getter- und Setter-Methoden bereit, mit denen die Eigen- schaften Titel, Autor, Seitenzahl und 
Preis fuer ein Buch abgefragt bzw. gesetzt werden koennen (vgl. Folien 29–31).
Hinweis: Sehen Sie keine main-Methode in der Klasse Buch vor.
 * 
 * 
 */


public class Buch {
	
	//Eigenschaften
		private String titel;
		private String autor;
		private int seitenzahl;
		private double preis;
	
	//Titel abfragen
		String getTitel()
		{
			return titel;
			
		}
		
	//Titel zuweisen
		void setTitel( String neuTitel)
		{
			titel = neuTitel;
			
		}
		
	//Autor abfragen
		String getAutor()
		{
			return autor;
		}
		
	//Autor zuweisen
		void setAutor(String neuAutor)
		{
			autor = neuAutor;
		}
		
	//Seitenanzahl abfragen
		int getSeitenzahl()
		{
			return seitenzahl;
		}
		
	//Seitenzahl zuweisen
		void setSeitenzahl( int neuSeitenzahl)
		{
			seitenzahl = neuSeitenzahl;
		}
		
	//Preis abfragen
		double getPreis()
		{
			return preis;
		}
	
	//Preis zuweisen
		void setPreis(double neuPreis)
		{
			preis = neuPreis;
		}
}


Jetzt habe ich eine andere Klasse namens druckBuecher erstellt und dort die daten von den Büchern eingetragen die dann abgerufen werden sollen.
Die abruf methode soll soweit ich das verstanden habe unter dem punk " public static void druckeBuecher(Buch[] buecher) " stehen.
Nur komme ich nicht drauf wie ich die drei Bücher im CODE mit einem schlag ausgeben kann.

Code:
/*Erstellen Sie in einer weiteren Klasse (ausserhalb der Klasse Buch und in einer separaten Quelltext- Datei) 
eine Methode mit folgender Signatur:

public static void druckeBuecher(Buch[] buecher) 

Diese Methode soll zu allen Buch-Objekten, die durch das Feld buecher referenziert werden,
Titel, Autor, Seitenzahl und Preis auf der Konsole ausgeben. 
Erstellen Sie weiterhin eine main-Methode, in der Sie
• ein Feld fuer Buch-Objekteanlegen, 
• Buch-Objekte erzeugen und deren Referenzen in dem Feld speichern, 
• Titel, Autor, Seitenzahl und Preis fuer die Buecher setzen und 
• abschließend die Methode druckeBuecher aufrufen.
Was passiert in der Methode druckeBuecher, wenn nicht jede Komponente des Feldes buecher ein Buch-Objekt referenziert? 
Wie koennen Sie dies verhindern?
 * 
 * 
 */
public class druckeBuecher {
	

	public static void druckeBuecher(Buch[] buecher) {
		
	                          	//keine ahnung wie ich hier die daten von unten ausgeben soll

	}
	
	public static void main(String[] args) {
		
		Buch algodat = new Buch();
		Buch java = new Buch();
		Buch java6 = new Buch();
		
		algodat.setTitel("Algorithmen und Datenstrukturen");
		algodat.setAutor("T.Ottmann, P.Widmeyer");
		algodat.setSeitenzahl( 716 );
		algodat.setPreis( 61.50 );
		
		java.setTitel("Grundkurs Programmieren in Java");
		java.setAutor("D.Ratz, J.Scheffler, D.Seese, J.Wiesenberger");
		java.setSeitenzahl( 687 );
		java.setPreis( 34.90 );
		java6.setTitel("Java von Kopf bis Fuß");
		java6.setAutor("K.Sierra, B.Bates");
		java6.setSeitenzahl( 688 );
		java6.setPreis( 49.90 );	
		
		System.out.println(algodat);
		System.out.println(java);
		
	}

}

Ich bedanke mich im vorraus für eure Hilfe :)
 
Zum Beispiel so:
Java:
public static void druckeBuecher(Buch[] buecher) {
    for(int i = 0; i<buecher.length; i++){
        System.out.println(buecher[i].getTitle()+" (von "+buecher[i].getAutor()+"): "+buecher[i].getSeitenzahl()+" Seiten, Preis: "+buecher[i].getPreis()+" €\n");
    }
}
Grüße
Jellysheep
 
Um sich Arbeit bei der Ausgabe zu sparen, kann man in der Klasse Buch noch die Methode toString() überlagern. In der Aufgabenstellung konnte ich nichts finden, was das verbietet.

Also folgedes in die Buch-Klasse hinzufügen:
Java:
@Override
public String toString() {
	return String.format("%s[%s, %s, %d, %.2f]", getClass().getName(), getTitel(), getAutor(), getSeitenzahl(), getPreis());
}

Und die druckeBuecher()-Methode ist dann nur noch ein Klacks:
Java:
public static void druckeBuecher(Buch[] buecher) {
    for(int i = 0; i<buecher.length; i++){
        System.out.println(buecher[i]);
    }
}

Ich persönlich bevorzuge allerdings die for-each-Schleife und dann würde das so aussehen:
Java:
public static void druckeBuecher(Buch[] buecher) {
    for( Buch buch : buecher){
        System.out.println(buch);
    }
}

Damit das auch funktionieren kann musst du deine drei Bücher noch in ein Buch-Array einfügen und dieses dann einfach an die Methode druckeBuecher() übergeben und fertig.
 
Danke für eure Hilfe.
Es wurde auch gestern abend eine Lösung bereitgestellt im Internet.
Die Lösung ist so ähnlich wie die von " Akeshihiro " :D

LG
 

Neue Beiträge

Zurück