Einfaches Tischprojekt

Mixin-Standardstruktur

Eine Mixin-Standardstruktur wird für jede Komponente im Modell verwendet. Jede Komponente wird in drei primäre Mixins unterteilt: das Mixin UI, das Mixin Rules und das Mixin Graphics. Auf diese Weise kann die Geschäftslogik (Mixin Rules) von der Benutzeroberfläche (Mixin UI) und den Grafiken (Mixin Graphics) getrennt werden. Die Reihenfolge der Mixins ist in diesem Fall wichtig, da das Mixin UI typischerweise einige im Mixin Rules angegebene Vorgabewerte überschreibt. Die Designs für Tisch (Table), Tischplatte (TableTop) und Beine (Leg) \ sind wie folgt definiert:

Design Table : TableDesigns TableUI TableRules TableGraphics
Design TableTop : TableTopDesigns TableTopUI TableTopRules TableTopGraphics
Design Leg : LegDesigns LegUI LegRules LegGraphics

Die Mixins TableDesigns, TableTopDesigns und LegDesigns sind einfach organisatorischer Natur. Sie enthalten keine wirklichen Regeln. Die Unterteilung von Designs in die oben genannten Strukturen ist eine sinnvolle Intent-Programmierungspraxis. Die Verwendung der dargestellten Strukturen ermöglicht nicht nur den Einsatz der in Intent verfügbaren leistungsfähigen Mehrfachübernahme-Funktion, sondern bietet dem Benutzer zudem eine strukturierte Methode zur einfacheren Implementierung der Objektzusammensetzung in der Design architektur.

Vorgabewerte

Normalerweise ist der Vorgabewert einer Regel einfach der Wert der Regel selbst, und jeder geänderte Wert wird in einem dynamischen Wert für diese Regel gespeichert. Allerdings werden die UI-Eigenschaften in den UI-Werkzeugen durch getrennte UIProperty-Teile im Intent-Modell gesteuert, die als "Vermittler" zwischen den Vorgabewerten und den vom Intent-Modell verwendeten tatsächlichen Werten fungieren. Dies erfolgt, damit die gesamte UI-Logik der Eigenschaft (Wert, Auswahlmöglichkeiten usw.) im Design UIProperty eingeschlossen werden kann. Der tatsächliche dynamische Wert wird im UIProperty-Bauteil statt in der Geschäfts regel gespeichert, und die Geschäfts regel verweist einfach auf die Regel mit dem UIProperty-Wert. Der Entwickler kann einfach einen Wert an den Parameter DefaultValue eines UIProperty-Bauteils übergeben.

Es gibt zudem eine Schnellmethode zum Definieren des Vorgabewerts einer Regel. Bei dieser Schnellmethode erhalten Regeln mit Vorgabewerten das Präfix "dv" und ihre zugehörigen UIProperty-Bauteile das Präfix "ui". Beispielsweise gibt es im Tisch design eine Regel Length, und deren Vorgabewert ist in der Regel dvLength gespeichert. Wenn dem Tisch eine untergeordnete UIProperty namens uiLength hinzugefügt wird, verwendet die Eigenschaft uiLength den Wert der Regel dvLength als Wert für ihre Regel DefaultValue. Eine Einschränkung dieser Schnellmethode ist, dass die UI-Eigenschaften von BasicUIProperty abgeleitet sein müssen, einer Erweiterung des UIProperty-Designs.

Typischerweise enthält das Mixin Rules die Definition der Vorgabewerte. Die Geschäftslogik-Regeln, die diese Vorgabewerte verwenden, werden durch das Mixin Rules einfach nur durchgeleitet. Im vorherigen Beispiel gibt Length einfach den Wert von dvLength im Mixin Rules zurück.

   Parameter Rule dvLength As Number = 60.0
   Rule Length As Number = dvLength

Im Mixin UI jedoch verweisen die Geschäftslogik-Regeln auf die Regeln mit den Werten der UI-Eigenschaften, da dies die Werte sind, die vom Benutzer über die UI-Werkzeuge angegeben wurden.

Rule Length As Number = uiLength.Value

Durch die Festlegung des Vorgabewerts und die Durchleitung von Regeln im Mixin Rules und die anschließende Verknüpfung der UIProperty im Mixin UI kann die Benutzeroberfläche deaktiviert werden und das Modell erforderlichenfalls ohne die UI-Werkzeuge ausgeführt werden, indem einfach die verschiedenen UI-Mixins durch leere Designs überschrieben werden. Dies ist nützlich bei Stapelverarbeitungen, für die keine Benutzeroberfläche benötigt wird, und bei der Fehlerbehebung, wenn es erforderlich ist, die UI-Logik vollständig zu trennen.

Designs für einfaches Tischprojekt

Tischplatte

Das Design Tischplatte (TableTop) ist ein einfacher Quader (Block) mit einer Länge, Breite und Dicke. Dies sind alles Parameter für das Design und verwenden die oben beschriebene Standardstruktur.

   Parameter Rule dvLength As Number = 60.0
   Rule Length As Number = dvLength
   
   Parameter Rule dvWidth As Number = 24.0
   Rule Width As Number = dvWidth

   Parameter Rule dvThickness As Number = 1.0
   Rule Thickness As Number = dvThickness

Das Design TableTopGraphics wird an Block beteiligt und überschreibt einfach die Regel für die Höhe des Quaders, um zur Dicke der Tischplatte zu werden.

Rule Height As Number = Thickness

Schenkel

Das Design Bein (Leg) ist ebenfalls ein einfacher Quader. Es besitzt jedoch nur eine Breite und eine Höhe.

   Parameter Rule dvWidth As Number = 1.0
   Rule Width As Number = dvWidth
   
   Parameter Rule dvHeight As Number = 24.0
   Rule Height As Number = dvHeight

Das Design LegGraphics wird ebenfalls an Block beteiligt, überschreibt aber die Regel für die Länge des Quaders, um zur Breite des Beins zu werden. Dies erfolgt, damit die Beine viereckig werden.

Rule Length As Number = Width

Tisch

Die Baugruppe Tisch (Table) enthält eine Tischplatte und vier Beine. Sie enthält außerdem die Parameter der obersten Ebene für das gesamte Modell, wie z. B. die Gesamthöhe des Tischs, seine Länge und Breite.

   Parameter Rule dvHeight As Number = 24
   Rule Height As Number = dvHeight
	
   Parameter Rule dvLength As Number = 60
   Rule Length As Number = dvLength
	
   Parameter Rule dvWidth As Number = 24
   Rule Width As Number = dvWidth

Die Tischplatte erhält ihre Vorgabewerte für die Länge und Breite von der Baugruppe Table. Entsprechend erhalten auch die einzelnen Beine ihre Vorgabewerte für die Höhe von der Baugruppe Table.

   Child TableTop As :TableTop
      dvLength = length
      dvWidth = Width
   End Child

   Child Leg As :Leg, Quantity = 4
      dvHeight = LegHeight
   End Child