www.r-krell.de |
Webangebot für Schule und Unterricht, Software, Fotovoltaik und mehr |
Willkommen/Übersicht > Informatik > Informatik mit Java, Teil e) > LinADT-Test
Nach dem Webstart erscheint links oben ein Extra-Fenster mit dem Testprogramm:
Zunächst muss eine Speicherstruktur gewählt werden, bevor Daten
eingegeben werden können. Zahlen bitte mit Punkt (statt Komma) eintippen.
Wenn die Java-JRE installiert ist, können Sie das Programm jetzt sofort ausführen:
Hier klicken zum Webstart des Keller&Schlange-Tests |
Danach Öffnen von Keller_Schlange_alt.jnlp [mit Java(TM) Webstart Launcher
(Standard)] wählen/bestätigen
und bei evtl. Sicherheitswarnung vor der Ausführung von LApp_Start das Risiko akzeptieren und OK drücken.
Wenn Sie außerdem gefragt werden, ob Sie eine Desktop- und eine Startmenüverknüpfung
anlegen wollen,
sollten Sie zustimmen, wenn Sie das Test-Programm auch nach Verlassen dieser Webseite nochmal ausprobieren wollen.
Wird nach dem Klick Keller_Schlange_alt.jnlp herunter geladen oder werden Sie gefragt, womit Sie
Keller_Schlange_alt.jnlp öffnen wollen
oder ob/wohin Sie die Datei speichern wollen, haben Sie entweder kein Java installiert oder ihr Browser (z.B. Opera) unterstützt keinen
Webstart.
Im letzten Fall empfiehlt sich nachfolgend der Download der .jar-Datei:
Sie können die Sortier- und Such-Demo auch als ausführbare Java-Datei Keller&Schlange_alt(r-krell.de).jar (28 kB) herunter laden und später lokal auf Ihrem Rechner starten (Java-Umgebung JRE vorausgesetzt). Die Ausführung als Applet im Browser wird von mir hingegen nicht mehr angeboten: Gründe, Abhilfe und alle Downloads (in neuem Tab)
Hinweis: "alt" bzw. "alte Version" bezieht sich darauf, dass hier (noch)
beliebige Elemente als Objekte in den abstrakten Datenspeicher aufgenommen werden können und insofern keine Typsicherheit besteht. Im Beispiel
kann ein einziger Keller sowohl Zahlen, Zeichen als auch Zeichenketten gemischt aufnehmen; auch weitere Typen wären möglich. Seit Java
auch parametrisierte Datentypen anbietet, gilt es als "neu" und besser (weil zum allgemeinen Konzept von Java passend, dass die Typen von Variablen
festgelegt sind), spätestens beim Erzeugen eines Kellers oder einer Schlange einen festen Elementtyp anzugeben, der dann für diesen
Speicher nicht mehr verändert werden kann, sodass nur Elemente gleichen Typs aufgenommen werden können - es würde also z.B. einen
Zahlenkeller, einen Zeichenkeller oder einen Zeichenkettenkeller geben müssen, wobei jeder jeweils nur für den angegebenen Elementtyp
verwendet werden kann. Insofern muss etwa beim raus-Befehl dann auch nicht mehr (wie unten) der Objekttyp ermittelt werden, weil klar und
sicher ist, was im Keller ist bzw. war.
"Neue", parametrisierte Implementierungen finden sich z.B. bei den linearen abstrakten Datenspeichern Liste oder SortList [siehe "Informatik mit
Java", Teil e), wobei die SortList sowohl in "alter" als auch in "neuer" Version gezeigt wird].
Wie auf der Seite e) berichtet, stelle ich den Schülerinnen und Schülern in meinem Unterricht eine Oberfläche zur Verfügung, in der sie die selbstgeschriebenen Implementationen der verschiedenen Speicherstrukturen testen können.
Natürlich verhalten sich verschiedenen Kellerrealisationen völlig gleich und können jetzt hier im Test nicht unterschieden
werden. Keller (auch stacks genannt) sind eben LIFO-Speicher (last in - first out): Die gespeicherten Element kommen in umgekehrter Reihenfolge
wieder raus, das zuletzt mit rein gespeicherte, das immer auch mit zeige angesehen werden kann, zuerst.
Die Schlangen (auch als Warteschlangen oder als queues bezeichnet), die auch auf unterschiedliche Weise realisiert werden können und deren
Funktionsfähigkeit hier getestet werden kann, sind hingegen LIFO-Speicher (first in - first out): Das zuerst mit rein gespeicherte Element
steht vorne, wird mit zeige gezeigt und kann mit raus entfernt werden.
Da die Datenstrukturen jeweils für beliebige Objekte ausgelegt wurden, kann man verschiedene Wrapper-Klassen wählen, von denen passende Objekte gebildet werden. Im Programmtext der Oberfläche befinden sich Programmzeilen für die Auswahl:
// Bei der Eingabe wird je nach Knopfdruck ein Objekttyp gewählt: String ein = tfEingabe.getText(); Object Obj = null; switch (objekttyp) //je nach Knopfdruck enthält diese Variable einen der 3 konstanten Werte { case ALS_ZAHL : try { Obj = new Double (ein); //Wrapper-Objekt für Kommazahlen break; } catch (Exception nf) { ausgabe.append ("** "+ein+" keine gültige Zahl -- neu eingeben!\n"); return; } case ALS_ZEICHEN : Obj = new Character (ein.charAt(0)); break; //Wrapper-Objekt für Schriftzeichen case ALS_ZKETTE : Obj = ein; //String ist bereits ein Objekttyp } datenstruktur.rein (Obj); |
// Identifikation eines Objekts bei der Ausgabe: Java erkennt Objekttypen mit instanceof Object Obj = datenstruktur.raus(); if (Obj instanceof Double) { aus = "Zahl "+Obj; //hier und im Folgenden wird ausgenutzt, dass Java bei ".."+... implizit } //Objekte in Textform umwandelt -- wie explizit bei ".."+Obj.toString(); else if (Obj instanceof Character) { aus = "Zeichen '"+Obj+"'"; } else if (Obj instanceof String) { aus = "Zeichenkette \""+Obj+"\""; } ausgabe.append (aus+" entfernt!\n"); |
zurück zur Seite „Informatik mit Java, Teil e)"