Mit dem in TCE verwendeten Objektmodell lässt sich einerseits auf einfache Art eine Anwendung zusammenstellen, oder auch in idealer Weise eine regelgesteuerte Variantenkonfiguration aufbauen.
Jedes physikalische Produkt verfügt einerseits über Bestandteile, die über einen teils sehr unterschiedlichen Verwandtschaftsgrad aufweisen, sowie eine Struktur oder Bauplan, wie die Elemente zusammengehören. Dabei ist die Struktur teils sehr unterschiedlich, je nachdem, welches Ergebnis erwartet wird. So ist zum Beispiel die Stückliste der preislich bewertbaren Elemente eines Produktes unterschiedlich zu einem Arbeitsplan, wie ein Produkt hergestellt werden soll. Auch die Tiefe der Beschreibung der Stückliste kann sehr unterschiedlich sein. Ein Flugzeug bis zur letzten Schraube schlüssig zu beschreiben ist ungleich schwerer als sich nur auf wesentliche Merkmale eines Flugzeuges zu beschränken.
Daher sollte von vornherein überlegt werden, bis zu welcher Ebene und zu welchem Zweck ein Produkt beschrieben wird. So kann es beispielsweise sinnvoll sein, dass die Produktkonfiguration Materialnummern für unveränderliche Materialstücklisten liefert oder vielleicht auch nur einen Satz an Sachmerkmalen, die an ein nachfolgendes System weitergereicht werden, wo die Sachmerkmale in Arbeitspläne, Stücklisten aufgelöst werden.
Um dennoch die grundsätzliche Vorgehensweise in TCE zu beschreiben, wird hier davon ausgegangen, dass verschiedene Produkte hier konfiguriert werden sollen und diese Produkte über eine übersichtliche Zahl von Bestandteilen verfügen.
Klassen verfügen in TCE über eine größere Zahl von Basisfunktionalitäten. Dazu gehören Merkmale und Objekte.
Objekte werden von Klassen erzeugt, und Merkmale beschreiben Inhalte von Klassen. Dennoch können Objekte auch weitere Objekte als Kind-Objekte besitzen, die wiederum über einen Satz an Merkmalen verfügen.
Ein Objekt kann man grob gesagt als ein physikalisches Bauteil betrachten, deren Eigenschaften über Merkmale feiner beschrieben werden kann, z.B. mit Farbe, Material, Festigkeit. Dabei kann man auf Grenzen stoßen, die eine direkte Abbildung von Eigenschaften nur mit einem Merkmalsatz ermöglichen. Dann werden Merkmale wiederum zu Objekten. So kann zum Beispiel die Farbe durch eine Farbgruppe, z.B. NCS oder RAL, und eine Farbnummer beschrieben werden.
Betrachten wir nun, wie eine Produktstruktur aussehen könnte:
Nehmen wir an, wir sind in einem Unternehmen zur Leuchtenproduktion beschäftigt, und sollen eine Variantenkonfiguration zur preislichen Bewertung unterschiedlicher Leuchten aufbauen.
Das Unternehmen produziert Deckenleuchten und Schreibtischleuchten. Die Leuchten verfügen über einen Markennamen. Die meisten Leuchten verfügen über ähnlichen Aufbau in Modulen und können teils unterschiedlich zusammengesetzt werden.
Bitte verwenden Sie bei der Anlage der Klassen den Schalter Anzeige in Wertelisten, damit im späteren Verlauf die Produkte in einer Aufklappliste angezeigt werden können.
So könnte demnach die Produktstruktur beschrieben werden. Die einzelnen konfigurierbaren Bestandteile der verschiedenen Leuchten werden ebenfalls durch eine Klassenstruktur dargestellt:
Die Materialien, die letzten Endes den Preis bestimmen, stellen ebenfalls eine Klassenstruktur dar:
Nachdem nun die Klassenstruktur festgelegt ist, folgt nun die Verwendung von Klassen als Objekte:
Eine Überlegung ergibt, dass z.B. das Produkt Sigma immer über eine Aufhängung, einen Leuchtschirm und ein Leuchtmittel verfügt. Also kann dieser Zusammenhang in der Klasse Sigma festgelegt werden, und Sie werden sehen, dass diese Festlegung sich in alle unter Sigma definierten Klassen vererbt.
Legen Sie daher in der Klasse Sigma die Objektdefinitionen fest und initialisieren diese, damit zur Laufzeit beim Anlegen eines Objektes von Sigma auch gleich die Kind-Objekte mit erzeugt werden.
Nun kann auch das Produkt Sigma unabhängig von seinen Bestandteilen bereits preislich relevante Positionen aufweisen, z.B. Anschlusskabel, Netzteil und ähnliches.
Legen Sie daher auch Produktnummern unter Material an, die für diese Preispositionen verwendet werden.
In einer weiteren Überlegung stellen Sie fest, dass Sie ihre Produkte in verschiedenen Länderausführungen ausführen. Aus dem Festlegen der Länderausführung folgt die Festlegung z.B. des Anschlusskabels.
Länderausführungen gibt es für alle Produkte. Daher legen wir nun in Produkte ein Merkmal vom Typ String für die Länderausführung an und definieren Sie drei verschiedene Werte in der Pickliste, die Sie mit einem Doppelklick als wählbare Werte unter dem Merkmal anlegen.
Nun gibt es den Zusammenhang, dass ein Anschlusskabel von der Länderausführung abhängt:
Legen Sie daher diesen Zusammenhang in der Klasse Sigma fest. Sie können eine Steuerung anlegen, in dem Sie im Kontextmenü eines Objektes oder Merkmales
auswählen.
Bestimmen Sie nun die Werte aus der Pickliste, die Sie in die Steuerung aufnehmen wollen.
Legen Sie nun im Regeleditor für jeden Wert eine Regel an.
In einem nächsten Schritt geht es um die preisliche Bewertung einzelner Materialnummern.
Legen Sie hierzu in der Klasse Material ein Merkmal vom Type Currency an, um die verschiedenen Materialnummern mit einem Preis zu bewerten. Beachten Sie, dass für dieses Merkmal der Schalter Bei Objektänderung neu initialisieren gesetzt ist.
Gehen Sie nun in jede Klasse unterhalb von Material und initialisieren Sie das Merkmal Preis mit einem Wert.
Nun wollen wir in der Klasse Start die eigentliche Produktauswahl realisieren.
Legen Sie das Objekt Produkt dort an. Doppelklicken Sie die Klasse ‚Produkte’ in der Pickliste, um anzuzeigen, dass alle Produkte vom Anwender gewählt werden können.
Danach benötigen wir ein Merkmal für die Summierung aller Preise aller Materialobjekte.
Hierfür legen wir ein Merkmal Summe vom Typ Currency in der Klasse Start an. Dieses Merkmal soll beständig die Summe neu kalkulieren, wenn das Merkmal verwendet wird.
Um dies zu realisieren, verwenden wir den Get Event des Merkmals Summe. Legen Sie dort folgenden Code an:
Jetzt stellen wir fest, dass unser Produkt Sigma über Leuchtschirme in drei verschiedenen Farben besitzt. Da die Leuchtschirme von Sigma bereits über eine eigene Klasse verfügen, können wir dort auf diese Situation reagieren. Wir legen in der Klasse ein Merkmal für die Farbe an und steuern die Materialnummer für den Leuchtschirm über dieses Merkmal.
Das Ergebnis Ihrer Anstrengungen sollte also ungefähr folgendermaßen aussehen:
Im nächsten Schritt geht es um die Anpassung des Hauptformulars unserer kleinen Anwendung. Für die Auswahl von Produkt, Länderausführung Farbe des Leuchtschirms legen wir drei Comboboxen auf unsere Oberfläche. Zusätzlich benötigen wir ein Label für die Ausgabe der Summe der Materialien. Fügen Sie dafür die passende Typelib aus der Typenbibliothek hinzu.
Die Combobox Produkt erhält folgende Steuervariable zugewiesen:
Die Combobox Länderausführung erhält folgendes:
Die Combobox [Farbe des Leuchtschirmes]:
Das Label [Ausgabe der Summe] erhält:
Starten Sie nun die Anwendung. Sie sollten folgendes Ergebnis erhalten: