# Bücherregal



## xam90 (23. Jan 2013)

Hallo !!! =)
ich komme bei dieser Aufgabe einfach nicht weiter :/ 
weiß schon nicht wie ich den Konstruktor machen soll.
kann mir bitte jemand helfen und einen Ansatz geben ?







edit SlaterB: Bild als Link:
Directupload.net - izown89g.jpg


----------



## nillehammer (23. Jan 2013)

Ein Ansatz wäre, etwas zu lesen, damit man selbständig schlau wird. Z.B. das hier: Providing Constructors for Your Classes (The Java™ Tutorials > Learning the Java Language > Classes and Objects)


----------



## xam90 (23. Jan 2013)

gelesen hab ich genug !!!
mir fehlt nur der ansatz wie ich anfangen soll und womit...


----------



## SlaterB (23. Jan 2013)

fange mit einer leeren Klasse Buch an,
ergänze dann für den Titel ein String-Attribut

usw. usf.
ist gerade der Anfang nicht ausgesprochen offensichtlich?

> weiß schon nicht wie ich den Konstruktor machen soll.

was kann denn ein Konstruktor, ganz allgemein, was zeichnet ihn aus, wie geht der einfachste normalste leere Konstruktor?
was soll man dazu als Ansatz sagen, einfach die Regeln befolgen: Klassenname, () dahinter, {} dahinter, 
zu schwer?

sicherlich soll dann noch ein Parameter definiert werden, aber wie kann das eine Herausforderung sein?
es gibt ja nun nur eine Handvoll Sachen, die man mit einem Konstruktor machen kann, etwa einen Parameter dazu

das muss man irgendwann mal an einem Beispiel-Konstruktor oder auch einer Methode gesehen haben,
dann gibt es keine Geheimnisse mehr, ein Parameter hinzuzufügen geht genau so und so

(edit: oh ja, der Link oben handelt ja GENAU von Konstruktoren..)

-------
usw., ein einfacher Schritt nach dem anderen, 
klingt vielleicht viel, aber immer zerlegen und immer wieder wiederholen im Kopf
'ich soll einen Konstruktor schreiben, das kann doch nicht schwer sein, ein Konstruktor geht so, das mache ich jetzt, fertig'

oder hast du bestimmte Fragen, Fehlermeldungen?


----------



## nillehammer (23. Jan 2013)

Die Grundlagen sind bei mir schon so lange her, dass ich mir leider nicht vorstellen kann, was es für Probleme bei der Implementierung eines Konstruktors geben kann. Anders/Besser als in dem von mir geposteten Link könnte ich es jetzt auch nicht erklären. Was genau ist denn das Problem? Bzw. zeig doch mal, was Du schon hast.


----------



## Final_Striker (23. Jan 2013)

xam90 hat gesagt.:


> weiß schon nicht wie ich den Konstruktor machen soll.
> kann mir bitte jemand helfen und einen Ansatz geben ?



Na wenn es dir weiterhilft:

Der Konstruktor für die Klasse BuecherRegal wäre:

```
public BuecherRegal(String regalSignatur){

   this.regalSignatur = regalSignatur;
}
```


----------



## xam90 (23. Jan 2013)

da bekomme ich einen Fehler angezeigt !!!


----------



## Marcinek (23. Jan 2013)

Und da wären wir wieder bei dem ersten Posting... Grundlagen lernen.

Siehe auch den Link in meiner Signatur.


----------



## Final_Striker (23. Jan 2013)

xam90 hat gesagt.:


> da bekomme ich einen Fehler angezeigt !!!



Dann musst du schon deinen Code und den Fehler zeigen.


----------



## Spin (24. Jan 2013)

Final_Striker hat gesagt.:


> Dann musst du schon deinen Code und den Fehler zeigen.



Ich bekomme auch einen Fehler und ich habe herausgefunden dass ich keine Klasse drum habe 


```
class BuecherRegal {
public BuecherRegal(String regalSignatur){
 
   this.regalSignatur = regalSignatur;
}
}
```

Ach ja dann fiel mir auf, dass mein Dateinamen nicht so heißt wie die Klasse also habe ich dummy.java in BuecherRegal.java unbenannt.

Als letztes zeigte mir meine Entwicklungsumgebung an dass ich kein package angegeben habe, und meine Java Dateit liegt in src/buecher/BuecherRegal.java

Gelöst habe ich es mit : 

```
package buecher;
```

:toll:


----------



## xam90 (24. Jan 2013)

ich weiß auch nicht wie ich die List über die Instanzvariablen der Klasse Buch machen soll, um die Sortierung nach Autor zu machen :/


P.S.: das mitn Konsturktor hab ich jetzt auch hingekriegt...

Meine Codes bis jetzt:


```
package Bücherregal;

public class Buch {
	String titel;
	String autor;
	int ersch;
	
	
	Buch(String titel, String autor, int ersch){
		this.titel = titel;
		this.autor = autor;
		this.ersch = ersch;
	}
	String getAutor(String autor){
		return autor;
	}
	
	void printBook(){
		System.out.println("Titel:" + titel + "Autor:" + autor + "Erscheinungsjahr:" + ersch);
	}
	
	int data;
	Buch next;
	Buch(int d){
		data = d;
	}
	Buch(int d, Buch n){
		data = d;
		next = n;
	}

	Buch head;
	Buch(){
		head = null;
	}
	public String toString(){
		String s = "(";
		Buch tmp = head;
		while(tmp != null){
			s = s + tmp.data + " ";
			tmp = tmp.next;
		}
		s = s + ")";
		return s;
	}
	void insertSorted(int val){
		head = insertSortedBuchChain(head, val);
	}
	Buch insertSortedBuchChain(Buch rest, int val){
		if(rest == null || rest.data > val){
			return new Buch(val, rest);
		}else{
			rest.next = insertSortedBuchChain(rest.next, val);
			return rest;
		}
	}
	
}
```



```
package Bücherregal;

public class Buecherregal {
	
	Buch[][] regal;
	int anzahl;
	String regSig;
	
	Buecherregal(String regSig){
		this.regSig = regSig;
	}
	
	void addBook(Buch book){
		int result;
		
		String autor;
		for(int i = 0; i < regal.length; i++){
			for(int k = 0; k < regal[i].length; i++){
				if((result = autor.compareTo(regal[i][k]))){  /*wie krieg ich den Autor in die Methode*/
					regal[i][k] = book;
					k = regal[i].length;
					i = regal.length;
				}
			}
		}
	}
	
}
```


----------



## Spin (24. Jan 2013)

Dazu musst die compareTo Methode überschreiben.

Google Books Comapre to

Schau mal rein , das wird schon klappen


----------



## xam90 (24. Jan 2013)

in wie weit ist das denn richtig was ihc schon habe ?


----------



## SlaterB (24. Jan 2013)

du verwendest Buch als Elemente einer verketteten Liste, das kann ich als direkte Anforderung in der Aufgabe nicht lesen
und ist allgemein reichlich kompliziert, nicht zu empfehlen,

kennst du schon eine einfache ArrayList? oder ansonsten die beliebige List-Klasse, auch verlinkt, separat programmieren und testen,
das passt hier nicht ins Thema und sollte nicht mit der Buch-Klasse vermischt werden,
List muss für sich bestehen, dann ein Listen-Objekt erstellen und einfach Bücher einfügen, entfernen usw.

in Buecherregal hast du ja auch ein Array von Buch.., 
das ist nicht gerade die *Liste* aus der Aufgabe, zumindest aber verwendest du anscheinend nicht next & Co. aus Buch

beim Einfügen musst du auf die Reihenfolge achten, compareTo 0 steht für Gleichheit, bei > 0 ist ansonsten die Stelle gefunden, an der es einzufügen gilt,
mit ArrayList & Co. einfach nur ein add/ insert-Befehl, bei einem Array müsste man die weiteren Elemente umkopieren

falls es beim Array bleibt, außerdem darauf achten ob nicht Array-Elemente null sind, bisher ist auch noch gar kein Array-Objekt angelegt,
wieso eigentlich zwei Dimensionen?

na ich verirre in Details, das musst du einfach alles nach und nach programmieren, wenn das add() funktioniert,
Bücher auch wieder gefunden werden, dann kann es ja nicht so schlecht sein


----------

