6.4 Tischlein deck dich!

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

6.4 Tischlein deck dich!
Hallo habe ein Problem mit folgender Aufgabenstellung:

Die get. . . -Methoden im BesteckKasten sollen den jeweiligen Array-Eintrag zurückgeben und stattdessen null eintragen.

Was heißt stattdessen?? Wo soll null eingetragen werden??

lg hans

edit:

habs von selbst verstanden… Das Messer soll also aus dem Besteckkasten entnommen werden… also kein eigentlicher Getter…

edit 2:

Soll überprüft werden ob das Array überhaupt diesen Index hat… z.B. Array[] a = new Array[20] und ich spreche a[35] an… soll ich eine exception werfen oder ist das ok wenn ich einfach annehme dass das Object richtig angesprochen wird?


Du kannst davon ausgehen, dass der Index im Array vorhanden ist. Andernfalls fliegt sowieso eine ArrayOOB-Exception.


Frage : Nur weil ein Attribut laut der Aufgabe und der UML Darstellung nicht verwendet wird heißt es nicht, dass die Implementierung falsch ist wenn es nicht verwendet wird oder ? D.h. wenn man etwas implementiert, dass durch die fehlende Aufgabenstellung keinen Nutzen hat dann is das egal es geht nur ums implementiern?! right?


jupp.


Hab’ an der Stelle auch ne Frage zur Klasse Besteckkasten.
Sollen wir im Konstruktor das MesserArray nach dem initialisieren noch mit einem zahlenwert wie 1 belegen?
Weil ansonsten muesste das MesserArray ja voller null sein.
Und die getter-Methode, welche ja ueberpruefen muss ob das Messer mit dem jeweiligen Index ueberhaupt noch im Besteckkasten liegt (messer[index] != null)
wuerde dann ja immer die exception schmeiszen.

edit:
die frage hat sich erledigt.


-anzahlMesser: int
-anzahlGabeln: int

Das sind doch laut UML weder Arrays noch vom Typ Messer oder Gabel.

“Der Konstruktor von BesteckKasten soll die beiden Array-
Attribute mit entsprechenden Arrays der Größe groesse belegen.”

Ist das jetzt ein Fehler oder steh ich völlig aufm Schlauch?


Stimmt.
Neben anzahlMesser und anzahlGabeln musst du laut UML-Diagramm
nochmals messer[] und gabeln[] im Kontstruktor initialisieren.
Kannst du dem Ende des Pfeils von BesteckKasten nach Messer/Gabel entnehmen.


Brauchen eigentlich alle meine Klassen jeweils eine main-Methode?


Eigentlich nur eine. Sonst weiß dein Compiler ja nicht wo er anfangen soll ; )


Es braucht nur eine Klasse eine main-Methode, ja. Aber man kann auch mehrere main-Methoden schreiben, ohne den Compiler zu verwirren:

test1.java:

public class test1 {
	public static int foo = 23;
	public static void main(String[] args) {
		System.out.println(test2.foo);
	}
}

test2.java:

public class test2 {
	public static int foo = 42;
	public static void main(String[] args) {
		System.out.println(test1.foo);
	}
}

Kann man wie folgt übersetzen und ausführen:

malte@malte-laptop:~$ javac test1.java malte@malte-laptop:~$ java test1 42 malte@malte-laptop:~$ java test2 23 malte@malte-laptop:~$
Dabei ists egal, ob man javac jetzt test1.java oder test2.java oder beide gibt, weil aufgrund von Abhängigkeiten sowieso beide kompiliert werden.


wenn die eine Klasse nicht public ist, koennte man sich auch in eine Datei packen…


Nur um’s nochmal zu klaeren: War das jetzt allgemeingueltig gemeint?
In unserer gezippten Abgabe muss keine unsere Klassen eine main-Methode haben, oder?
So hat mir das naemlich ein Tutor in 'ner Rechneruebung nochmals versichert.


es steht aber nirgends, dass man anzahlMesser und anzahlGabeln im Konstruktor von BesteckKasten initialisieren soll.
die beiden Attribute werden hier nie verwendet.

nur meine gedanken, ka obs stimmt…


Ebenfalls eine kurze Frage zu dem tollen Besteck.
Falls in dem Diagramm keine Konstruktoren vorgegeben sind, sollen wir diese ebenfalls unter den “Tisch” fallen lassen?


Seh ich auch so…
Schwammig gestellte Aufgabe…


Nein, ich braucht keine main-Methode, es steht ja keine im UML-Diagramm.
Zum Testen würde ich die main auch in eine eigene Klasse packen und diese dann einfach nicht mit abgeben.


anzahlMesser und anzahlGabeln braucht ihr nicht zu initialisieren, aber messer und gabel die richtige Größe zu geben, fänd ich sinnvoll. wird in der Aufgabenstellung verlangt.