Technische Universität München
Fakultät für Informatik
Prof. Dr. Helmut Seidl
R. Höllerer


Praktikum des Übersetzerbaus SS 2004:

Generierung von Benutzungsoberflächen


Aufgabenblatt 3

12. Mai 2004

4. Aufgabe  (Referenzproduktionen im Adressbuch)

Schauen Sie das Adressbuch-Beispiel vom Blatt 2 an. Wir erweitern die Eingabe, so dass das Adressbuch drei Listen enthält: die Liste der privaten, die Liste der geschäftlichen und ganz oben die Liste der wichtigen Personen enthält. Die Liste der wichtigen Personen könnte Chef, Mama, Papa, Oma, Freundin usw. enthalten. Wichtig für uns ist, dass die wichtigen Personen Referenzen auf Personen in den anderen Listen sind. Personen sollen neben den Namen und Telefonnummer auch die Adresse enthalten.

Referenzen definiert man in EMUGEN mit Referenzproduktionen. Referenzen beziehen sich immer auf einen Tupeltyp (z.B. Person). Syntaktisch sieht eine Referenzproduktion folgendermaßen aus:

PersonRef::= Nachname -> Person
Dabei definiert PersonRef eine Referenz auf den benutzerdefinierten Typ Person. Die Angabe einer Komponente des Referierten Typs vor dem Pfeil (hier Nachname) ist Plicht; der Wert dieser Komponente (z.B. Müller) wird auf der Benutzungsoberfläche als Auswahl angezeigt. (Als Referenzbezeichnung wird standardmäßig die erste Komponente des Tupels gespeichert).

Eine Liste von Referenzen definieren Sie dann z.B.

WichtigePersonen::= Wichtig*
Wichtig = PersonRef: Person

Bei oben definierten Referenz werden alle Personen, die in der Liste der privaten oder geschäftlichen Liste eingetragen sind als Auswahl angezeigt. Sie haben durch Angabe von Einschränkungen die Möglichkeit die Auswahl zu begrenzen. Sie könnten bei Personen als neue Komponente Persontyp angeben (z.B. Kunde, Freund, Chef). Dann könnten Sie folgendermaßen die Auswahl auf Feunde begrenzen.

PersonRef::= Vorname -> Person [Persontyp is Freund]

Vergessen Sie nicht das Adressbuchformular um Aktionen zu ergänzen, mit denen man die Formulardaten in eine Datei schreibt bzw. aus der Datei einliest (wie auf dem Blatt 2 erklärt).

Definieren Sie ein Adressbuch wie oben beschrieben ist und geben Sie als Lösung der Aufgabe die erzeugte jar-Datei und eine mit code2html erzeugte html-Datei mit der VisualEmugen-Eingabe und einem Screenshot Ihres Formulars. Geben Sie auch die *.emu-Quelldatei sowie die Formulardaten-Datei *.xml ab.

5. Aufgabe  (Formular für EMU-Datenmodell)

In dieser Aufgabe wollen wir eine Oberfläche definieren, mit der man EMU-Datenmodelle eingeben kann, wie z.B. das obige Adressbuch. Das heißt wir definieren eine Oberfläche für EMUGEN mit Hilfe von EMUGEN.

Die konkrete EMU-Datenmodell-Grammatik ist in der Dissertation von Herrn Brandl auf der Seite 160 angegeben. Sie fängt an mit

<Datamodel> ::= <Tupelprod> <Prod>*
Wir werden das Datenmodell nur mit Tupel- und Listenproduktionen definieren, also Varianten- und Referenzproduktionen lassen wir weg. Als Basistypen können Sie String und Integer wählen. Als erste Produktion in der EMUGEN-Eingabe könnte man nun folgendes angeben:

Datamodel ::= String:Datum Prod*
Das Datum nehmen wir dazu, weil wir in EMUGEN-Eingabe mit einer Tupelproduktion anfangen müssen (was wir in unserer Datenmodell-Definition ignorieren). Eine Typdefinition für die Tupelkomponenten könnte so aussehen:

Type ::= UserType | StringType | IntegerType
wobei mit UserType die benutzerdefinierten Typen, wie Adressbuch, Person usw. im Adressbuch-Beispiel gemeint ist.

In der konkreten EMU-Datenmodell-Grammatik kommt <Ident> mehrfach vor, wobei manchmal Name manchmal Type gemeint ist. Sie sollten diese Unterscheidung in Ihrer Definition durchführen, so dass die Oberfläche wirklich hilfreich ist.

Als Eingabe zu Ihrer EMUGEN-Oberfläche verwenden Sie das Adressbuch-Beispiel ohne Referenzen (also ohne die wichtigen Personen und Referenzen).

Vergessen Sie nicht das Formular um Aktionen zu ergänzen, mit denen man die Formulardaten in eine Datei schreibt bzw. aus der Datei einliest (wie auf dem Blatt 2 erklärt).

Geben Sie als Lösung der Aufgabe die erzeugte jar-Datei und eine mit code2html erzeugte html-Datei mit der VisualEmugen-Eingabe und einem Screenshot Ihres Formulars. Geben Sie auch die *.emu-Quelldatei sowie die Formulardaten-Datei *.xml ab.


Abgabetermin für die Hausaufgaben: Dienstag, 18. Mai 15:00