11.07.2015 Aufrufe

ODL-Sprachkonstrukte und interaktive Benutzerschnittstelle - TUM

ODL-Sprachkonstrukte und interaktive Benutzerschnittstelle - TUM

ODL-Sprachkonstrukte und interaktive Benutzerschnittstelle - TUM

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

5.3 VORBEREITUNG WEITERGEHENDER ÄNDERUNGEN 87}/** Die Menge aus den übergebenen Variablenbelegungen berechnen<strong>und</strong> ihre Größe zurückgeben. */public Object evaluate(Assignment freeVariables) {SetValue set =(SetValue)setExpression.evaluate( freeVariables );return new Integer( set.getSize() );}/** Methode aus dem Interface EvalTreeNode */public void apply(EvalTreeVisitor visitor) {visitor.caseSetSizeExpression( this );}Die Methode apply wird im Interface quest.odl.evaluation.model.analysis.EvalTreeNode definiert, die zur Implementierung des Visitor-Entwurfsmusters für <strong>ODL</strong>-Auswertungsbäume gehört (mehr dazu im Abschnitt 5.1.3). Als Bestandteil des Visitor-Entwurfsmusterswird die apply-Methode durch jede <strong>ODL</strong>-Auswertungsklasse implementiert –hier wird dann die der jeweiligen Klasse entsprechende Methode von EvalTreeVisitoraufgerufen. Das bedeutet unter Anderem, dass mit der Einführung einer neuen Auswertungsklasseauch eine entsprechende Methode in EvalTreeVisitor eingefügt <strong>und</strong> die KlassenEvalTreeVisitorAdapter <strong>und</strong> DepthFirstEvalTreeVisitorAdapter angepasstwerden müssen. Bei der Einführung der Auswertungsklasse SetSizeExpressionsind demnach folgende Änderungen an diesen Klassen vorzunehmen:– Interface EvalTreeVisitor:Hier muss die Methodendeklarationpublic void caseSetSizeExpression(SetSizeExpression expression);eingefügt werden.– Klasse EvalTreeVisitorAdapter:Defaultimplementierung der Methode caseSetSizeExpression einfügen:public void caseSetSizeExpression(SetSizeExpression expression){defaultCase( expression );}– Klasse DepthFirstEvalTreeVisitorAdapter:Die Methode caseSetSizeExpression ist zu implementieren, wobei die Strukturder Klasse SetSizeExpression berücksichtigt werden muss, d.h., dass für alle Auswertungsklassen,die von SetSizeExpression benutzt werden, die Methode applyaufzurufen ist:public void caseSetSizeExpression(SetSizeExpression expression){inSetSizeExpression( expression );expression.getExpression().apply( this );outSetSizeExpression( expression );}public void inSetSizeExpression(SetSizeExpression expression){defaultIn( expression );}public void outSetSizeExpression(SetSizeExpression expression){defaultOut( expression );}

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!