Kapitel zurückUnterkapitel zurückThema zurückListe aller SprachelementeThema vorUnterkapitel vorKapitel vor
Anhang

B Weitere Beispiele

Dieser Anhang enthält Beispiele, die als Leseübung oder Lösungsvorschläge verwendet werden können. Sie sind nicht einem speziellen Thema zugeordnet und werden deshalb an dieser Stelle zusammengefasst. Alle diese Beispiele sind auch in der Liste der Beispiele aufgeführt und von dort über Links erreichbar.

Die Beispiele sind meist aus konkreten Anwendungsfällen herausgenommen und, falls nötig, so verändert, dass sie ohne Kenntnis des manchmal komplexen Hintergrunds verstanden werden können. Die hier vorgestellten Lösungen sind nicht als Best Practice zu verstehen, d.h. es ist durchaus möglich, dass bei hinreichendem Nachdenken bessere Lösungen gefunden werden können.

Alle Beispiele wurden aus früheren Tango-Versionen auf Tango 1.5 umgeschrieben. Dies könnte Auswirkungen auf die verwendete Struktur haben, d.h. Beispiele, die von vornherein in Tango 1.5 geschrieben sind, wären möglicherweise etwas anders aufgebaut.

 

Kapitel zurückUnterkapitel zurückThema zurückListe aller SprachelementeThema vorUnterkapitel vorKapitel vor
 

B.1 Beispiel: Kommando wählen

Dieses Beispiel zeigt eine Anwendung, die in einem Fenster Kommandos aus einer Liste wählen und ausführen kann.


Beispiel einer Tango-Spezifikation: Kommando wählen
!$KommandoListe
    ...Kommando
        .+EXECUTE

!WnKdoWahl
    .TxAktuelleZeit : _Uhrzeit
        .{Zeit wird ständig aktualisiert} 
    .SsEinKommando
        .$SELEKTION : [ NULL | _kdoList.Kommando ] 
        .$kdoList <- $KommandoListe
            ...Kommando 
                .+MausLinksklick
                    =>  .SsEinKommando.SELEKTION := {Dieses Kommando}
    .$LetztesErgebnis
    .$LetzterFehlerstatus : [ "Kein Fehler" | _{irgendein Fehlerstatus} ]
    .+BtAusführen
        =>  .?SELEKTION =
                = NULL
                    =>  .WnKdoWahl.LetztesErgebnis := LEER
                        .WnKdoWahl.LetzterFehlerstatus := "Kein Fehler"
                = "NOT NULL"     
                    =>  .SELEKTION.EXECUTE
                        .WnKdoWahl.LetztesErgebnis := {Ergebnis der Berechnung}
                        .WnKdoWahl.LetzterFehlerstatus := {Status dieser Berechnung}

!_Uhrzeit
    .Stunde : "0..23"
    .Minute : "0..59"
    .Sekunde : "0..59"
Der Aspekt WnKdoWahl.TxAktuelleZeit hält eine Uhrzeit. Wie diese Uhrzeit genau aufgebaut ist, wird in einem eigenen Definitionsblock beschrieben. WnKdoWahl.SsSelektion.SELEKTION kann NULL enthalten oder ein Kommando aus der KommandoListe, auf die über den Verweis kdoList referenziert wird. Im Select-Single-Aspekt SsEinKommando kann jedes Kommando mit der Maus angeklickt werden, eine Eigenschaft, die in der KommandoListe nicht vorhanden ist, deshalb wird über kdoList diese Liste neu interpretiert. Kapitel zurückUnterkapitel zurückThema zurückListe aller SprachelementeThema vorUnterkapitel vorKapitel vor
 

B.2 Beispiel: Ham and Eggs

Dies ist die Beschreibung eines Produktionsprozesses. Die Abläufe sind sequentiell geordnet, die einzelnen Schritte werden bei Bedarf weiter untergliedert. Da keine Fehlerfälle berücksichtigt werden, ist die Sequenz das geeignete Beschreibungshilfsmittel.


Beispiel einer Tango-Spezifikation: Ham and Eggs
!+HamAndEggs
    =>  - {Eier und Speck braten}
            .{Rührei}
                - {Eier aufschlagen}
                - {Milch dazu, verrühren}
                - {Salz und Pfeffer dran}
                - {in die Pfanne, stocken lassen, leicht zerteilen}
            .{gebratener Speck}
                - {Speck schneiden}
                - {in die Pfanne, anbraten}
        - {Rührei und Speck auf den Teller}
        - {Servieren}

Die Produktion von {Rührei} und {gebratener Speck} baut nicht auf Ergebnissen des anderen Vorgangs auf, die Vorgänge sind deshalb als Aufzählung nebeneinander gestellt. Mit einer Sequenz würden hier unnötige Implementierungsvorgaben entstehen.

 

 

 


Kapitel zurückUnterkapitel zurückThema zurückListe aller SprachelementeThema vorUnterkapitel vorKapitel vor