13Frames, Vererbung, Dämonen
Lösungen
13.1Frames
Schreiben Sie eine einfache Shell für die Verarbeitung von Frames nach den Vorlesungsunterlagen. Damit man einfach zu den Frame-Daten zugreifen kann, werden diese direkt in Fakten der Form
frame_id( slot, facet, value)
in Prolog repräsentiert.
Die Shell sollte folgende Operationen bereitstellen:
get_value( Frame, Slot, Value)
put_value( Frame, Slot, Value)
create_instance( Frame, Instance_Frame).
Das Prädikat create_instance( Frame, Instance_Frame) kreiert das Frame Instance_Frame mit der Beziehung is_a zu Frame.
Folgende Facets sollten unterstützt werden:
value, if_needed, if_added.
Die zugehörigen Dämonfunktionen werden automatisch beim Aufruf von get_value und put_value getriggert. Die Dämonfunktionen (Prolog-Prädikate) werden definiert als:
demon( Frame, Slot, Value) :- .... .
Lösung 13.1
13.2Anwendung: Hierarchie graphischer Objekte
Benützen Sie die Shell für den Aufbau einer Hierarchie graphischer Objekte:
Graphisches Objekt (Slots: Position (x,y)):
- Rechteck (eigene Slots: Seite_x, Seite_y, Fläche (if_needed))
- Quadrat (eigene Slots: Seite_x (if_added -> Seite_y), Seite_y (if_needed)).
- Ellipse (eigene Slots: Halbachse_x, Halbachse_y, Fläche (if_needed))
- Kreis (eigene Slots: Radius, Halbachse_x (if_needed), Halbachse_y (if_needed), Fläche (if_needed)).
Es soll möglich sein, Instanzen zu diesen Klassen durch möglichst wenig Angaben konsistent zu generieren.
Sie können weitere Slots zufügen, resp. die Hierarchie erweitern.