www.r-krell.de
Webangebot für Schule und Unterricht, Software, Fotovoltaik und mehr

Willkommen/Übersicht   >   Informatik   >  Informatik mit Java, Teil e)   >  LinADT-Test


Testprogramm für die
linearen abstrakten Datentypen
Keller und Schlange (alte Version)

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)"


zum Anfang dieser Seite
Willkommen/Übersicht   -   Was ist neu?   -   Software   -   Mathematik   -   Physik   -   Informatik   -   Schule: Lessing-Gymnasium und -Berufskolleg   -   Fotovoltaik   -   & mehr   -   Kontakt: e-Mail,  News-Abo, Gästebuch, Impressum   -   Grußkarten, site map, Download und Suche

Diese Seite ist Teil des Webangebots http://www.r-krell.de . Sie können diese Seite per e-Mail weiter empfehlen (tell a friend).