Die Klasse "Glied" beschreibt einen allgemeinen, noch unspezifizierten Eintrag in der Datenbank. Alle Methoden werden hier skizziert, die von allgemeiner Gültigkeit sind. Zusammen mit der Klasse "GliedStart", dem ersten Glied einer jeden Kette, stellen beide auch Methoden zur Verfügung, welche ganze Ketten verarbeiten können. Wir wollen auf den folgenden Seiten die wichtigsten, für alle Glieder wiederkehrenden Methoden am Beispiel der Klasse "Glied" erklären. Sie sind nach Gruppen geordnet, so, wie sie auch in Smalltalk geordnet sind. Wo besonders erwähnt, ist eine Methode nur für die Klasse "GliedStart" anwendbar, also nur auf das jeweils erste Glied einer Kette; solche sind typische Methoden für ganze Ketten.
Folgende Gruppen legen den Funktionsumfang eines Gliedes fest:
Generierung: Erzeugung eines neuen Gliedes der eigenen Klasse oder aber Erzeugung eines Gliedes einer anderen Klasse gemäss den eigenen Parametern.
Hülle: Zugriff auf die inneren Objekte (Lesen und Schreiben lokaler Variablen, aber auch Lesen und Schreiben von Werten über Relationen und Lesen von berechneten Werten); von manchen Gliedern werden Methoden zur Berechnung von Grössen bereitgestellt, die aus den Feldern abgeleitet werden können. Solche Methoden sind in der Gruppe "Hülle Berechnungen" zusammengefasst.
Wenn ein Glied einen inneren Zustand haben kann (frei / besetzt oder so), dann können die Methoden zur Abfrage und Veränderung des Zustandes in der Gruppe Zustand vereinbart werden. Muss ein Element seine Methoden in die Event-Liste setzen können (damit sie zu einer bestimmten Zeit ausgeführt werden), sind die dafür benötigten Methoden in der Gruppe Scheduling zu finden. Neutrale Kettenglieder verfügen jedoch nicht über die beiden erwähnten Gruppen.
zeichnen nach Ebenen und gewöhnliches Zeichnen: Darstellung auf dem Bildschirm,
Fehler: allgemeine Fehlermeldungen in einem neuen Unterfenster,
Zugriff mit Graphik: Steuerung des Gliedes über den Bildschirm,
DB: Bauplan: die Standard-Bande werden hier festgelegt,
DB: Glieder Speicherung: Speicherung des Kettengliedes,
DB: Glieder Selektion: arbeitet ganze Ketten ab und wählt einzelne Glieder aus,
DB: Glieder Graphik: Methoden im Zusammenhang mit der Darstellung eines Gliedes auf dem Bildschirm. Die Methoden sind hier bereits implementiert, obwohl ein "Glied" keine graphische Darstellung hat.
DB: Bande Speicherung: Speicherung der (Kette der) Bande eines Gliedes; der Aufbau eines Band-Gliedes ist im vorhergehenden Kapitel bereits erörtert worden.
DB: Bande Selektion: durchsucht die Bande eines Gliedes nach verschiedenen Kriterien.
DB: Bande Relationen: arbeitet mit vorhandenen Beziehungen zu anderen Gliedern.
DB: Bande Meldungen: Senden und Empfangen von Meldungen entlang von Relationen; das gilt auch für Meldungen, die auf Meldewegen zirkulieren und die entlang der Relationen von Knoten zu Knoten fliessen.
globale Variable: Zugriff auf globale Variable wie "Modell" und "Stift", die allen Objekten aller Unterklassen bekannt sind.
I/O: Input / Output, vor allem zum Importieren und Exportieren des Inhaltes der Datenbank in lesbarem ASCII-Format.
neu ist die allgemeine Methode, welche bei der Definition eines jeden neuen Gliedes (welcher Unterklasse es auch sei) aufgerufen werden sollte. Sie initialisiert die lokalen Variablen (inneren Objekte) mit Anfangswerten. Unterklassen, welche neue innere Objekte definieren, sollten diese Methode ebenfalls implementieren.
copyFrom: glied verschiebt alle lokalen Variablen von einem anderen Glied auf das eigene; insbesondere werden dabei alle Bande auf das neue Glied gerichtet.
generiereDich dient zur Erzeugung eines neuen Gliedes, gesteuert vom Bildschirm aus; diese Methode kann weitere Unter-Methoden aufrufen, je nachdem, in wieviele Teilschritte die Generierung aufgeteilt wird. Jede Methode definiert die Reaktion auf Maus-Aktionen oder auf die Eingabe von Buchstaben und Zahlen.
Auf alle inneren Objekte kann lesend und schreibend zugegriffen werden. Besondere Erwähnung verdient allein das folgende Objekt:
flags übermittelt alle definierten Flags, die aus Gründen der effizienten Speicherung bitweise codiert sind; die Bits bedeuten an den Positionen:
1: ist das Element augenblicklich überhaupt sichtbar? (Die Sichtbarkeit kann, unter Umgehung des Ebenen-Mechanismus, mit diesem Flag verhindert werden.)
2: ist das Element im Moment versteckt? (Auch wieder unter Umgehung des Ebenen-Mechanismus kann ein Element für eine Zeit lang versteckt werden.)
3: ist das Element augenblicklich selektiert (und deshalb speziell auf dem Bildschirm dargestellt)?
4: Delete Request: hat der DB-Manager schon ein bevorstehendes Löschen mitgeteilt?
5: Change Request: hat der DB-Manager schon eine bevorstehende Änderung mitgeteilt?
Die Bits 4 und 5 dienen zur Vermeidung von Schleifen aus Elementen, welche sich reihum dieselbe Änderung mitteilen wollen.
Es gibt meist drei verschieden Methoden, wie ein Glied und der Bildschirm miteinander in Aktion treten können. Wir zeigen ein Beispiel:
1. invertiereDich: schreibt das Glied invertierend auf den Bildschirm, komme was wolle (egal wie Sichtbarkeit und Flags stehen).
2. invertiere: schreibt das Glied invertierend auf den Bildschirm, aber nur dann, wenn es einer Ebene angehört, die gerade sichtbar ist, und wenn es überhaupt sichtbar ist (gemäss seinem Flag der Sichtbarkeit).
3. invertiereKette: aufgerufen über ein "GliedStart", schreibt es die ganze Kette invertierend auf den Bildschirm, aber nur, wenn Ebene und Flags es zulassen.
Und so sind die folgenden Methoden analog zu verstehen:
maleDich, male, maleKette zum deckenden Anzeigen der Darstellung.
loescheDich, loesche, loescheKette zum Löschen der Darstellung auf dem Schirm.
zeigeDich, zeige, zeigeKette zeigt das Glied auf dem Bildschirm an; es wird vorausgesetzt, dass der "Stift" (der Zeichenstift für das aktuelle Fenster) schon korrekt initialisiert ist; wird der "Stift" verändert, so muss am Schluss der Originalzustand wiederhergestellt werden.
zeigeGlied: glied wird nur von der Klasse "GliedStart" benützt, um ein einzelnes Glied anzuzeigen, welches in der Kette zu finden ist, welche auf das Startglied folgt. Im Startglied steht die Information über den Punkt, wo die Zeichenfläche ihren Nullpunkt hat (konkret wird die Information über den Zeichenstift genutzt; die globale Variable "Stift" dient als Zwischenablage des Zeichenstiftes).
darstellen, darstellenKette ruft ohne weiteres Nachdenken die Methoden "zeige" und "zeigeKette" auf, eröffnet aber die Möglichkeit, dass eine Unterklasse dies umdefiniert.
Die folgenden Methoden sind nur auf einzelne Glieder anwendbar:
macheUnsichtbar um ein Glied unsichtbar zu machen,
macheSichtbar um das Glied wieder sichtbar zu machen,
selektiere um ein Glied zu selektieren (und somit seine Darstellung zu verändern),
unselektiere um die Selektion rückgängig zu machen,
versteckeDich zum zeitweisen Verstecken eines Gliedes,
versteckeDichNichtmehr um das Glied wieder aus dem Versteck zu holen.
fehler: wegen text: was spezielles Fenster, das bei einem Fehler eingeblendet wird.
dbfehler: wegen text: was Fenster, das eingeblendet wird, wenn die Regel einer Relation verletzt wird; "wegen" ist das Glied, welches den Fehler verursacht hat, "was" ist die auszugebende Fehlermeldung.
aendern: Hauptroutine für alle Glieder, wenn sie durch Befehle vom Bildschirm verändert werden sollen. Die Unterklassen müssen folgende Methoden vorsehen, wenn sie vom Standard abweichen:
Element ist selektiert, und es wird bewegt: verschieben (aenVer),
Element ist selektiert, und es wird "del" gedrückt: löschen (aenDel),
Element ist selektiert, und es wird "ctrl" (die Taste "A") gedrückt: Menu,
Element ist selektiert, und es wird "esc" gedrückt: Irrtum.
aenVer: Routine, welche für das Verschieben eines Elementes zuständig ist.
aenDel: Routine, welche für das Löschen eines Elementes zuständig ist.
attribute: fenster: Fenster-Inhalt zur Veränderung der Attribute, die das Glied charakterisieren.
attributFenster ruft das Grundmenu für Änderungen an einem Glied auf (die Methode "attribute: fenster".
hatMaus: maus prüft, ob die Position "maus" innerhalb der aktiven Fläche des Gliedes liegt, und übermittelt "true", wenn dem so ist.
retteOriginale: inFenster wird aufgerufen, bevor ein Fenster zur Veränderung der Parameter eines Gliedes geöffnet wird; das Fenster lässt es zu, dass die ursprünglichen Werte in Form eines Objektes (meist vom Typ Array) in ihm abgespeichert werden. Wird am Schluss "ok" gewählt, werden die veränderten Parameter gültig, wird "cancel" gewählt, so hat das Glied die Möglichkeit, die ursprünglichen Parameter wiederzufinden (mit der Methode "holeOriginale: ausFenster").
holeOriginale: ausFenster dient zum Wiederfinden der ursprünglichen Parameter des Gliedes.
defaultAdd: nummer übermittelt die Regel "ON ADD" des Gliedes (für das Band Nummer "nummer").
defaultBand: nummer fuer: partner übermittelt das defaultmässige Band für das "nummer"-te Band. "partner" ist 1 oder 2, der Eintrag an erster Stelle (Hin-Relation) oder an zweiter (Rück-Relation).
geplanteBande gibt Auskunft darüber, wieviele Bande im Bauplan des Gliedes zu finden sind.
Hier finden sich weiter Methoden der Form "xxxBand" (z.B. oberfensterBand). welche das Band des Gliedes übermitteln, welches zur Verhängung der Relation "oberfenster" dient.
Es folgen drei Dienst-Methoden, welche vom Datenbank-Manager für die Behandlung der Relationen benötigt werden:
methodName: number rechnet die Methode Nummer "number" in einen String um.
methodNumber: sym rechnet die Methode "sym" (als Symbol übergeben) in ihre zugehörige Nummer um. Die Nummer wird zur Speicherung in den Banden benutzt.
methodSymbol: number rechnet die Nummer der Methode in das zugehörige Symbol um.
grow: neuesGlied fügt "neuesGlied" nach "self" in der Kette ein.
grow: hier nach: vorher fügt das Glied "hier" nach "vorher" in der Kette ein.
growLetzt: neuesGlied fügt das Glied "neuesGlied" an letzter Stelle ein. Das letzte Glied wird nicht explizit gespeichert, wohl ist dies aber der Fall bei den ersten Gliedern einer Kette ("GliedStart").
loeseVerhaengung löst die Verhängung eines Gliedes: das Glied wird aus der umgebenden Kette herausgelöst.
erstesGlied übermittelt das erste Glied der Kette.
letztesGlied übermittelt das letzte Glied der Kette (das letzte Glied kann bei einem Objekt der Klasse GliedStart auch mit einer Methode gesetzt werden).
gliedNummer: nummer holt das Glied Nummer "nummer" aus der Kette nach dem Startglied (ohne das Startglied selbst gerechnet).
anzahlGlieder lässt ein GliedStart zählen, aus wievielen Gliedern seine Kette besteht (ohne sich selbst mit einzurechnen).
loescheGlied: mitAbklaerung löscht ein Glied aus der Kette. Als Resultat wird "true" übermittelt, wenn es geklappt hat, sonst "false", aber nur, wenn die Variable "mitAbklaerung" auf "true" gesetzt ist; sonst werden keine Abklärungen getroffen (was vorkommt, wenn das Glied als Folge eines CASCADE gelöscht wird, denn in einem solchen Fall wird ganz am Anfang, vom zuerst gelöschten Glied, die Abklärung über alle Kaskadierungen hinweg vorgenommen). Ist das Löschen nicht möglich, so wird die Routine abgebrochen und dasjenige Glied zurückübermittelt, welches das Löschen verunmöglicht hat.
loescheGlied löscht das Glied ohne vorherige Abklärungen aus der Kette; sollte beim Löschen dann ein Fehler auftreten, so stimmt etwas mit der Datenbank nicht, und es wird eine Fehlermeldung generiert; das Glied bleibt in einem solchen Fall bestehen.
loescheKette löscht die gesamte Kette, die auf dieses Glied folgt, indem einzeln die Kettenglieder herausgebrochen werden.
wegwerfen als Grundverhalten ist die Methode "wegwerfen" identisch zu der Methode "loescheGlied". Unterklassen können Abweichendes vereinbaren, Dinge, welche unternommen werden müssen, bevor das Glied gelöscht werden darf.
verhaenge: mitKette verhängt zwei Ketten miteinander: verhänge "self" (ohne sich selbst, sondern erst vom folgenden Glied an) mit der Kette "mitKette".
Für die Start-Glieder sind folgende Methoden definiert, welche Referenz-Ketten abarbeiten:
referenzNummer: nummer holt das referenzierte Glied Nummer "nummer" aus der Referenz-Kette, welche nach dem Start-Glied folgt.
waegeab: refKette dient zur Auswahl eines Elementes, das von der Maus berührt wird, nachdem eine Referenz-Kette mit allen möglichen Kandidaten ermittelt worden ist. Wenn die Wahl eindeutig ist (nur ein Element steht zur Auswahl), wird das Glied für eine Veränderung vorbereitet; sonst muss das Element erst über den Bildschirm genauer definiert werden.
waehleElementaus: refKette glied: dasGlied ist die Referenz-Kette von Elementen, die für eine Veränderung ausgewählt sind, nicht eindeutig, kann mit dieser Methode die Wahl des Elementes eindeutig gemacht werden. Pro Klick mit der Maus-Taste (ohne die Maus zu bewegen) wird das nächste Element der Referenz-Kette selektiert. Das Element gilt als gewählt, sobald die Maus gedrückt wird oder irgend eine Tasten-Eingabe vor sich geht. Gelangt die Methode an das Ende der Referenz-Kette, wird der Selektions-Vorgang ohne Resultat abgebrochen.
forEach: aBlock evaluiert den Block "aBlock" für alle Glieder, die auf "self" folgen. "aBlock" erwartet das jeweilige Glied als Parameter.
searchFor: bedingung sucht das nächste Glied, welches der Bedingung "bedingung" genügt; "bedingung" erwartet das aktuelle Glied der Kette als Parameter.
lokalisierbar gibt an, ob das Glied eine Darstellung auf dem Bildschirm besitzt (Trajektorien besitzen beispielsweise auch keine).
koordinaten antwortet mit den relativen Koordinaten des Gliedes.
koordAbsolut antwortet mit den absoluten Koordinaten des Gliedes.
nullOffset antwortet mit dem absoluten Offset des Nullpunktes (des Start-Gliedes).
linksOben wenn nichts anderes vereinbart wird, so ist die linke obere Ecke identisch dem Referenz-Punkt "koordinaten" für ein Glied mit flächiger Ausdehnung oder auch ohne.
rechtsUnten für flächige Glieder die rechte untere Ecke der eingenommenen Fläche, sonst auch hier die Koordinaten selbst.
reagiertAuf: einPunkt teilt mit, ob das Glied auf ein Berühren am Punkt "einPunkt" reagiert.
zeichenflaeche antwortet mit der Zeichenfläche der Kette (das Fenster, innerhalb welches die Elemente der Kette angezeigt werden können).
Folgende Methoden sind nur für die Klasse GliedStart implementiert:
beruehrte: einPunkt ermittelt in der Kette, welche mit "self" startet, alle Elemente, welche vom Cursor an seiner jetzigen Position berührt werden, unter Berücksichtigung einer gewissen Treffer-Toleranz, die für jedes Element individuell sein kann. Übermittelt am Schluss das erste Glied der Referenz-Kette, das, wie üblich, vom Typ GliedStart ist. Die Kette ist geordnet in der Reihenfolge: Punkte, Linien (mit Marken und Teilnehmern), Rechtecke.
beruehrt: einPunkt wenn: bedingung ermittelt in der Kette, welche mit "self" startet, alle Elemente, welche der Bedingung "bedingung" gehorchen und welche vom Cursor an der Position "einPunkt" berührt werden, unter Berücksichtigung einer gewissen Treffer-Toleranz. Übermittelt am Schluss das erste Glied der Referenz-Kette; die Referenz-Kette ist ungeordnet.
Hierzu gehören die Methoden beruehrterKnopf: wo, beruehrterKnoten: wo und beruehrterPunkt: wo.
clear löscht alle berechneten und gespeicherten Grössen, welche auf referenzierte Werte zurückgreifen, nicht aber ohne vorher den Abhängigen mitzuteilen, dass eine Änderung bevorsteht. Vorher, da die Abhängigen meist auf die noch gültigen Werte der Felder zugreifen wollen, um sich vielleicht vom Bildschirm zu verkrümeln oder sonstige Werte unschädlich zu machen. Die Methode muss von den betreffenden Unterklassen implementiert werden.
bandNummer: nr übermittelt das Band Nummer "nr" des Gliedes "self" (indem die Band-Kette abgesucht wird).
istBandNummer: einBand übermittelt, an welcher Stelle sich das Band "einBand" beim Glied "self" befindet.
loescheBand: ba löscht das Band "ba", ohne irgend welche Delete Rules zu berücksichtigen.
loescheBandMit: anderer löscht das Band zwischen "self" und dem Glied "anderer", ohne irgend welche Delete Rules zu berücksichtigen.
loescheBande löscht alle Bande des Gliedes; es werden keine Rules beachtet.
wechsleBandmit: vonGlied auf: aufGlied wechselt das Band mit dem Glied "vonGlied" auf das Glied "nachGlied".
wechslealleBandeauf: auf wechselt alle Bande vom eigenen Glied "self" auf ein anderes Glied "auf".
alleBande: vorschrift sammelt die Bande aller Glieder, bestimmt durch die Vorschrift "vorschrift" (d.h. nur dann, wenn die Vorschrift wahr ist), welche durch Bande an das Glied "self" gebunden sind; es wird eine "OrderedCollection" übermittelt.
alleGlieder: vorschrift sammelt die gezeigten Glieder selbst, und nicht nur die weisenden Bande.
erstesBand: vorschrift schaut nach dem ersten (und vielleicht einzigen) Glied, auf welches die Vorschrift "vorschrift" zutrifft und welches durch ein Band an das Glied "self" gebunden ist; übermittelt aber das Band.
erstesGlied: vorschrift übermittelt das Glied selbst statt nur des Bandes.
performGetNumber: nr führt die Methode mit der Nummer "nr" (die in GRADESS lokal diese Nummer bekommen hat) für das Glied "self" aus. Es geschieht in GRADESS keine Prüfung, ob das Objekt die Methode auch wirklich versteht, sondern Smalltalk wird in einem solchen Fall eine Fehlermeldung generieren.
performPutNumber: nr with: value ist von seiner Funktionalität wie "performGetNumber", nur dass hier ein Wert gesetzt wird, und zwar dort hin, wo die andere Routine liest. Auch hier wird von GRADESS keine Prüfung auf Existenz der Routine vorgenommen. Es gibt Methoden, die nicht "beschreibbar" sind; sie liefern "false" als Resultat, alle anderen "true".
holeWert: bandNummer holt den Wert, welcher durch das Band Nummer "bandNummer" erreichbar ist.
setzeWert: bandNummer auf: wert setzt den Wert, welcher durch das Band Nummer "bandNummer" erreichbar ist. Das Resultat ist "true", wenn das Glied erreichbar ist (jedoch wenn es die vereinbarte Methode nicht versteht, meldet sich Smalltalk mit einem Fehler).
loeschbar wenn das Glied löschbar ist, wird "nil" gemeldet, sonst das erste gefundene Glied, welches das Löschen verhindert.
fixiert fragt, ob das Glied fixiert oder beweglich ist. Unterklassen können diese Information ihren Relationen entnehmen.
verschiebbar wenn das Glied verschiebbar ist, wird "nil" gemeldet, sonst das erste gefundene Glied, welches das Verschieben verhindert.
oberfenster ist eine Hilfs-Methode, welche es ermöglicht, das Fenster zu finden, in welchem das Glied angezeigt wird. Es wird ermittelt, indem die Verhängung des Start-Gliedes gesucht wird und über diese die Zeichenfläche festgestellt wird.
addNotificationBefore: feldNr glied: glied empfängt die Meldung, dass ein neues Glied am Entstehen ist, ein Glied, das durch eine Referenz auf das eigene Feld "feldNr" zeigen wird. "feldNr" kann auch ein "IntegerSet" sein, wenn mehrere Felder miteinander verbunden werden sollen.
addNotificationAfter: feldNr glied: glied empfängt die Meldung, dass ein neues Glied entstanden ist.
changeNotificationBefore: feldNr empfängt die Meldung, dass ein anderes Glied sich zu ändern gedenkt.
changeNotificationAfter: feldNr empfängt die Meldung, dass ein anderes Glied sich geändert hat.
deleteNotificationBefore: feldNr empfängt die Meldung, dass ein anderes Glied sich löschen wird.
localAddBefore: nummer glied: glied wird aufgerufen, bevor das Feld Nummer "nummer" des Gliedes neu angefügt wird; kann von einer Unterklasse implementiert werden.
localAddAfter: nummer glied: glied wird aufgerufen, nachdem das Feld Nummer "nummer" des Gliedes neu angefügt worden ist.
localChangeBefore: nummer wird aufgerufen, bevor das Feld Nummer "nummer" des Gliedes über eine Relation verändert wird.
localChangeAfter: nummer wird aufgerufen, nachdem das Feld Nummer "nummer" verändert worden ist.
localDeleteBefore: nummer wird aufgerufen, bevor das Feld Nummer "nummer" gelöscht wird.
sendChangeNotificationBefore: methode sendet allen Gliedern, welche durch Relationen an die Methode (an das Feld) "methode" des eigenen Gliedes gebunden sind, die Meldung, dass sich der Wert ändern wird.
sendChangeNotificationAfter: methode sendet die Meldung, dass sich der Wert geändert hat.
Modell und Zeichenstift sind als globale Variable allen Instanzen von Unterklassen zugänglich. Über die Methoden "modell" und "stift" können sie auch von aussen abgefragt und gesetzt werden.
Der Import und der Export der Datenbank wird kettenweise durchgeführt. So stellt die Klasse GliedStart dafür die folgenden Methoden zur Verfügung:
fileIn: file importiert die gesamte Datenbank aus dem File "file", das sich im ASCII-Format befindet und mehr oder weniger auch für Menschen lesbar ist. Das Format ist in [2] genauer beschrieben.
fileOut: file exportiert die gesamte Datenbank im ASCII-Format auf das File "file".
absolutiere: start benutzt die "prev"-Pointer, um jedem Glied eine absolute Nummer zu verleihen. Die Numerierung startet mit dem nächsten Glied und mit der Zahl "start". Als Funktionswert wird die letzte vergebene Nummer +1 zurückgegeben.
relativiere führt die "prev"-Pointer wieder ihrer ursprünglichen Bestimmung zu, nachdem sie von der Methode "absolut" zur Speicherung von Zahlen missbraucht worden sind.
generiereGlied: string generiert ein Glied nach den Anweisungen im "string".
Jedes Glied verfügt dafür über die folgenden Methoden:
alsString dient zum Exportieren der Datenbank: der gesamte Inhalt des Gliedes wird als String dargestellt und mit Semikolon und Leerschlag abgeschlossen; die Bande sind hiervon ausgenommen.
bandeAlsString dient zum Exportieren der Datenbank: alle Bande des Gliedes werden in einem String dargestellt.
evaluiereNamen: name erzeugt ein Glied gemäss dem im String "name" übermittelten Namen.
ausString: string dient zum Importieren der Datenbank aus einem ASCII-File: der String wird zerpflückt, und die erkannten Variablen werden den inneren Objekten zugeordnet; die Bande sind hiervon ausgenommen.
verhaengeBande: string code: code verhängt die Bande, deren Inhalt im String "string" gespeichert ist, mit Gliedern der Kette, die bei "code" beginnt, um die Datenbank nach einem ASCII-File wieder aufzubauen.
absolut: wert missbraucht die Variable "prev" zur Speicherung eines Zahlenwertes "wert" (der inkrementiert zurückübermittelt wird); die Methode wird gebraucht, wenn die Datenbank exportiert werden soll und die Pointer-Kette in absolute Zahlen umgerechnet werden muss.
alsNummer ermittelt die Nummer, wenn die Kettenglieder absolute Nummern bekommen haben.
sucheNachNummer: nummer sucht nach der Nummer "nummer" in einer Kette, in welcher die "prev"-Pointer zur Speicherung einer Nummer verwendet werden.
boolread: inhalt ist eine Service-Routine: ist der Inhalt des Strings gleich "true", wird eine Boolean-Variable mit dem Wert "true" übermittelt; sonst ist der Wert "false".
inhaltAlsString ist die Methode, über welche ein Glied veranlasst wird, seinen Inhalt in Form eines Strings darzustellen. Dazu ruft es jeweils die Methode "alsString" auf.
name Name des Elementes, welches durch das Glied verkörpert wird (sprachabhängig).
nameNorm Name des Elementes, welches durch das Glied verkörpert wird (sprachunabhängig).