Besprechung von inneren und generischen Klassen (Keep or throw)

In der letzten Stunde haben wir uns mit den inneren und generischen Klassen im Keep or Throw-Projekt beschäftigt. Der Grundgedanke dahinter war, die Stapel-Klasse unabhängig von der Karte-Klasse zu machen. Dafür musste man eine neue innere Klasse machen, die wir „StapelElement“ nannten und noch einen Typparameter T der für die generische Klasse steht.

Innere Klassen

Innere Klassen sind Klassen, die, wie der Name schon sagt, in einer anderen Klasse drin sind. Sie fungieren wie eine normale Klasse wie Karte. Da aber diese Klassen nie außerhalb erzeugt, kann man sie in eine andere Klasse schreiben.

So sieht dann die innere Klasse aus

Wir haben das Attribut next aus der Karte-Klasse in die StapelElement-Klasse verschoben und in der Karte-Klasse wurde es gelöscht.

Generische Klassen

Da wir jetzt aber die Stapel-Klasse von der Karte-Klasse abgelöst haben, müssen wir einen Typparameter t angeben. Dieser Typparameter wird dann neben dem Klassennamen in spitzen Klammern definiert.

Der Typparameter wurde in diesen Fall T genannt

Wir haben jetzt einen Typparameter erstellt und müssen somit alle Karte- und Objekt-Datentypen mit T ersetzen. Zusätzlich müssen wir noch ein Objekt von StapelElement in der Methode push und pop definieren.

So sieht es in der pop Methode aus. Das content gibt dann letztendlich das s aus.
So sieht es bei der push Methode aus.

Man muss bei jedem return nach dem Objekt .content schreiben welches in der StapelElement-Klasse definiert wurde, da sonst das Objekt nicht ausgegeben werden kann.

Hausaufgabe: Die Fehler in der Spiel-Klasse beheben

Schreibe einen Kommentar