| 1 | |
| 2 | = Special Task = |
| 3 | |
| 4 | Aufgabe: Es soll der Wert einer Variablen aus einem Slot über mehrere Ebenen "nach oben" und eine Ebene "nach unten" gegeben werden. [[BR]] |
| 5 | Das ganze soll möglichst ohne Adapter und "visuelle" Links passieren [[BR]] |
| 6 | |
| 7 | Beispiel: Klasse b enthält die Slots a und c. Klasse a enthält ein "Storage", welches ein Terminal mit der Variablen c0 enthält. c0 soll in Klasse c verfügbar gemacht werden.[[BR]] |
| 8 | Vorschlag:[[BR]] |
| 9 | |
| 10 | {{{ |
| 11 | (define-module |
| 12 | :class "class_a" |
| 13 | :super-classes ("dynamic-model") |
| 14 | :modules |
| 15 | (("storage_intra" |
| 16 | :is-a "storage-intra") |
| 17 | ("trans1a_fi1" |
| 18 | :is-a "trans1a-fi1")) |
| 19 | :links |
| 20 | (("storage_intracf_trans1a_fi1a" |
| 21 | :terminals ("storage_intra.cf" "trans1a_fi1.a"))) |
| 22 | :variables |
| 23 | (("c" |
| 24 | :is-a "concentration")) |
| 25 | :equations |
| 26 | (("test" |
| 27 | :relation "c == storage_intra.cf.c"))) |
| 28 | |
| 29 | |
| 30 | (define-module |
| 31 | :class "class_c" |
| 32 | :super-classes ("dynamic-model") |
| 33 | :variables |
| 34 | (("c" |
| 35 | :is-eq-to "parent.c") |
| 36 | ("d" |
| 37 | :is-a "var-concentration") |
| 38 | ("e" |
| 39 | :is-a "var-concentration")) |
| 40 | :equations |
| 41 | (("testc" |
| 42 | :relation "e == d+c"))) |
| 43 | |
| 44 | |
| 45 | (define-module |
| 46 | :class "class_b" |
| 47 | :super-classes ("dynamic-model") |
| 48 | :modules |
| 49 | (("class_a" |
| 50 | :is-a "class_a") |
| 51 | ("class_c" |
| 52 | :is-a "class_c")) |
| 53 | :variables |
| 54 | (("c" |
| 55 | :is-a "concentration")) |
| 56 | :equations |
| 57 | (("test" |
| 58 | :relation "c == class_a.c"))) |
| 59 | }}} |
| 60 | |
| 61 | |
| 62 | Problem: Es entsteht ein überbestimmtes System.. müsste mit den richtigen system-theoretic Typen behebbar sein.. |