|
Dieses Lösung nutzt Typparameter aus Java 1.5 nicht,
es wird ausschließlich mit Object als Elementtyp gearbeitet.
|
| |
|
Eine 1 zu 1 Übertragung für die LinkedList Klasse in Java 1.5 mit
Generics
ist auch nicht möglich, dafür würden Typparameter zur Laufzeit
benötigt. Dieses ist in Java aber nicht erlaubt.
|
| |
LinkedList
|
Eine Klasse für verkettete Listen in Java.
Im Gegensatz zu C, wo die Liste durch einen Zeigertyp
repräsentiert wurde, die einzelnen Knoten durch einen record,
wird hier nur eine Klasse benötigt, da die implizite Indirektstufe
durch die Referenzen in den Variablen die Zeiger ersetzt.
|
|
Die leere Liste wird aber nicht durch die ungültige Referenz
repräsentiert, da mit dieser keine Operationen ausgeführt werden
können, es kann also keine Methode isEmpty auf die ungültige
Referenz angewendet werden.
|
|
Aus diesem Grund wird mit einer Referenz auf ein
spezielles "globales" Objekt als leere Liste gearbeitet.
Die Referenz wird als Klassenvariable, also mit dem Attribut
static in der Klasse selbst angelegt, diese Referenz wird nicht nach
außen bekannt gegeben, also mit dem Attribut private deklariert.
|
|
Compilation:
javac -source 1.7 -encoding iso-8859-1 LinkedList.java
|
| |
Accumulate
|
Eine Klasse für Kommandos (--> Entwurfsmuster) zum Verarbeiten
der Elemente in einem Container.
Diese Klasse bietet eine allgemein einsetzbare Schnittstelle,
nicht nur für die LinkedList Klasse.
|
|
Die Klasse enthält eine Verarbeitungsroutine
process zur Verarbeitung eines Elements.
Diese Klasse ist abstrakt, d.h. sie legt nur eine Schnittstelle fest.
Konkrete Klassen sind NoOfElements für die Berechnung der Anzahl der
Elemente, IntegerSum zum Aufsummieren und ToString zum Konvertieren eines
ganzen Containers in einen String.
|
|
Aufgerufen werden diese Kommandos aus der forall
Rountine in der LinkedList Klasse. Dort ist also
einmal festgelegt worden, wie der Container verkettete Liste
zu durchlaufen ist, in diesem Fall mit einer einfachen
while-Schleife.
|
|
Mit dieser einen Kontrollstruktur und den
allgemein verwendbaren Kommandos lassen sich also z.B.
die Längenberechnung, das Aufsummieren, die toString Konversion
und viele andere Operationen erzeugen.
|
| |
NoOfElements
IntegerSum
ToString
|
Die Kommandos, (die Klassen)
NoOfElements,
IntegerSum und
ToString
|
| |
LinkedListTest
|
Ein Testprogramm, noch unvollständig, das die LinkedList Klasse
systematisch testet.
|
|
Compilation:
javac -source 1.7 -encoding iso-8859-1 LinkedListTest.java
|
|
Testlauf:
java LinkedListTest
|