Analysis continued: inner contradictions of object field vs attribute
...after re-reading my own documentation, it occured to me that we need to draw a border line and thus decide, what not to support
This commit is contained in:
parent
d3869d2280
commit
72f9b4edb1
3 changed files with 388 additions and 117 deletions
|
|
@ -47,8 +47,8 @@
|
|||
** the message into the target object's own time grid.
|
||||
**
|
||||
** @note this header is defined such as to be used with or without including the time quantisation
|
||||
** facility, which is a more heavyweight regarding code size and compilation times. For this
|
||||
** toggle to work, the header \c timequant.hpp needs to be included \em prior to \c mutation.hpp
|
||||
** facility, which is a more heavyweight inclusion regarding code size and compilation times. For
|
||||
** this toggle to work, the header `timequant.hpp` needs to be included \em prior to `mutation.hpp`
|
||||
** Obviously, you can't define any mutation involving quantised (grid aligned) values without this.
|
||||
** @warning when defining more fancy kinds of concrete mutations using the technique with
|
||||
** the EncapsulatedMutation to hide the implementation, then please be sure to understand
|
||||
|
|
|
|||
|
|
@ -8340,7 +8340,7 @@ attached to a clip, or the mixture of clips, effects and labels found within a [
|
|||
You should note that this entire design is recursive: only after understanding the part, where, for handling a sub-structure, a nested mutator is fabricated and placed into a given buffer, it becomes clear to what effect we're creating a customised mutator: we always need some (relative) parent scope, which happens to know more about the actual data to be treated with a TreeMutator. This scope assists with creating a suitable binding. Obviously, from within that binding, it is known what the sub-structures and children of that local data are all about and what semantics to give to the fundamental operations.
|
||||
</pre>
|
||||
</div>
|
||||
<div title="TreeMutatorEvolution" creator="Ichthyostega" modifier="Ichthyostega" created="201603160255" modified="201604292056" tags="Model Concepts design draft" changecount="8">
|
||||
<div title="TreeMutatorEvolution" creator="Ichthyostega" modifier="Ichthyostega" created="201603160255" modified="201605192259" tags="Model Concepts design draft" changecount="12">
|
||||
<pre>The TreeMutator is an intermediary to translate a generic structure pattern into heterogeneous local invocation sequences.
|
||||
|
||||
!Motivation
|
||||
|
|
@ -8456,6 +8456,34 @@ Since our goal is to represent changes to structured objects in the form of a di
|
|||
* attributes may be reordered
|
||||
* attributes may be added and deleted
|
||||
-- none of which has any tangible meaning for a regular (language) object. To the contrary, our ExternalTreeDescription was built specifically to support diff language and diff messages, and thus has the ability to represent those changes. So, in theory, a given diff, when applied both to a GenNode and via TreeMutator to a native data structure, might lead to states not semantically equivalent. We can not reliably protect ourselves against that possibility, but, on the other hand, it is not clear if such is an actual threat.
|
||||
|
||||
''A possible path to reconcile'' these inner contradictions is to support the mutation primitives ''as far as is sensible''.
|
||||
Through analysis of the semantics, we could distinguish several flavours of "attributes", especially...
|
||||
;object fields
|
||||
:mandatory elements enforced by class definition, where values need to be supplied at construction time
|
||||
;defaultable object fields
|
||||
:regular object fields proper, where some construction logic is able to fill in defaults. After construction, they are indistinguishable from mandatory object fields
|
||||
;optional properties
|
||||
:elements rooted in the class definition, yet not necessarily given. The object is able to //detect their absence//, and may fill in a default or ignore missing properties
|
||||
;attribute map
|
||||
:an ordered collection of key-value associations, which can be enumerated, searched and extended
|
||||
Thus we //could define a sensible handling for each of those cases, and deal with combinations// -- but --
|
||||
it seems more adequate to limit ourselves just to object fields and to include the defaultable object fields through implementation leeway. Because, in the end we really do need object fields, and anything beyond is just a representation of special behaviour and can be kept out of the diff system altogether. Through diff messages, we want to express structured changes, not metadata, nor closures, nor strategies, nor prototypes. And the attribute map is really something different than an object, and should be implemented separately, when it comes to applying diff messages to GenNode elements; the latter are able to //emulate// or //represent// objects, but actually are rather key-value associations arranged in and nested scopes.
|
||||
|
||||
!!!mapping rules to handle object fields
|
||||
So we basically ''disallow'' anything related to ''order'', ''re-ordering'' and ''deletion'' of object fields.
|
||||
* when an object requires field values at construction time, this requirement has to be satisfied when inserting the object. The {{{ins}}} message must hold a complete value description in this case
|
||||
* beyond that, fields can //only// be either assigned, or opened for nested mutation.
|
||||
* for sake of consistency with the handling of a GenNode based [[ETD|ExternalTreeDescription]], we translate an {{{ins}}} message into an auto-accept followed by an assignment. In fact, any //defaultable object field,// when specified for the first time, //should// be given as {{{ins}}} message, because otherwise we would not be able to apply the same diff sequence to an equivalent GenNode representation of the same logical structure.
|
||||
Consequently, we're left with only a very limited subset of diff expression applicable to an »object field onion layer«
|
||||
* either a {{{pick}}} for every known field, possibly (optionally) followed by a {{{set}}} message with a new value
|
||||
* or an {{{after END}}}, followed (optionally) by an arbitrary sequence of {{{set}}} messages.
|
||||
To create a ''binding'' for any object field, we need
|
||||
* a ''name'' for matching keys
|
||||
* either a ''setter'' (lambda) or a ''mutator builder'' (lambda)
|
||||
We have a distinct typing for each individual attribute, but this typing remains implicit: the lambda has to know what value to extract from the GenNode payload within the accepted diff message
|
||||
|
||||
|
||||
</pre>
|
||||
</div>
|
||||
<div title="TypedID" modifier="Ichthyostega" created="201003200157" modified="201505310143" tags="Model Types Rules design draft" changecount="12">
|
||||
|
|
|
|||
|
|
@ -45,8 +45,7 @@
|
|||
heißt: Element registriert sich am UI-Bus
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1448078473068" ID="ID_510866826" MODIFIED="1461888853783" TEXT="zerstören">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
|
|
@ -58,8 +57,7 @@
|
|||
heißt: Element deregistriert sich am UI-Bus
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1448078308690" ID="ID_185716114" MODIFIED="1448078316540" TEXT="Aktionen">
|
||||
|
|
@ -73,8 +71,7 @@
|
|||
...ist <i>immer</i> ein <b>tangible</b>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1448078516094" ID="ID_201691188" MODIFIED="1448078519937" TEXT="Commands"/>
|
||||
<node CREATED="1448078325679" ID="ID_946047770" MODIFIED="1448078510722" TEXT="tweaks"/>
|
||||
|
|
@ -134,8 +131,7 @@
|
|||
dafür genügt der normale Reset
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="button_cancel"/>
|
||||
</node>
|
||||
<node CREATED="1448078748448" ID="ID_1000763850" MODIFIED="1461888853799" TEXT="Nachrichten löschen">
|
||||
|
|
@ -148,8 +144,7 @@
|
|||
mark "clearMsg"
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1448078778916" ID="ID_1657108949" MODIFIED="1461888853817" TEXT="Fehler löschen">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
|
|
@ -161,8 +156,7 @@
|
|||
mark "clearErr"
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1448078798369" ID="ID_819750758" MODIFIED="1461888853822" TEXT="komplett-Reset">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
|
|
@ -174,8 +168,7 @@
|
|||
mark "reset"
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -223,8 +216,7 @@
|
|||
was haben alle UI-Elemente wirklich gemeinsam?
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="help"/>
|
||||
<node CREATED="1448658692023" FOLDED="true" ID="ID_888978058" MODIFIED="1461888853833" TEXT="generische Commands">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
|
|
@ -242,8 +234,7 @@
|
|||
oder handelt es sich nur um ein Implementierungsdetail der UI-Bus-Anbindung?
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="help"/>
|
||||
<node CREATED="1448659456882" ID="ID_946761955" MODIFIED="1448659469420" TEXT="Notwendig: Command-Name + Varargs"/>
|
||||
<node CREATED="1451093919426" ID="ID_56876272" MODIFIED="1451093932614" TEXT="generisch impliziert auch zentrale Definition">
|
||||
|
|
@ -331,8 +322,7 @@
|
|||
Dann mußte das allerdigns jeweils für alle Elemente sinnvoll sein
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1451177534345" ID="ID_524388510" MODIFIED="1451177541380" TEXT="impl">
|
||||
<node CREATED="1451177542256" ID="ID_980888532" MODIFIED="1461888853846" TEXT="ruft einen konkreten hook doExpand() auf">
|
||||
|
|
@ -345,8 +335,7 @@
|
|||
und der muß vom konkreten Widget implementiert werden
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1451177573108" ID="ID_1154342108" MODIFIED="1451177583935" TEXT="wenn dieser true zurückgibt, ist der Zustand persistent"/>
|
||||
<node CREATED="1451177584435" ID="ID_1792154974" MODIFIED="1451177606906">
|
||||
|
|
@ -508,8 +497,7 @@
|
|||
Und ich muß das in einem Test zumindest emulieren können!
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node CREATED="1455668935142" ID="ID_1274632216" MODIFIED="1461888853903">
|
||||
|
|
@ -549,8 +537,7 @@
|
|||
</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<node CREATED="1455669272760" ID="ID_837691598" MODIFIED="1455899105816" TEXT="Call-Stack ist der Prozessor-Stack (Rekursion)">
|
||||
<icon BUILTIN="button_cancel"/>
|
||||
<node CREATED="1455899000582" ID="ID_1404453203" MODIFIED="1455899086452" TEXT="sorry, geht nicht">
|
||||
|
|
@ -603,8 +590,7 @@
|
|||
ist jedoch schon prototypisch implementiert
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<node CREATED="1455899288247" ID="ID_635341866" MODIFIED="1455899347843" TEXT="Tree-Mutator hat echte (Assignment)-Mutation">
|
||||
<icon BUILTIN="info"/>
|
||||
<node CREATED="1455899303981" ID="ID_1584621992" MODIFIED="1455899333910" TEXT="paßt nicht auf die Semantik vom Diff">
|
||||
|
|
@ -983,8 +969,7 @@
|
|||
<font size="2">(impl-ops)</font>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<cloud COLOR="#fce9c0"/>
|
||||
<font NAME="SansSerif" SIZE="16"/>
|
||||
<node CREATED="1455927425726" ID="ID_1776437339" MODIFIED="1461946503410" TEXT="emptySrc">
|
||||
|
|
@ -1049,8 +1034,7 @@
|
|||
of this specific onion layer to accept forward until meeting this element.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
<node CREATED="1457231727259" ID="ID_1318527107" MODIFIED="1461965031156">
|
||||
|
|
@ -1079,8 +1063,7 @@
|
|||
will check the bool return value and throw an exception in that case
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -1789,8 +1772,7 @@
|
|||
durch den das Problem mit der "absrakten, opaquen" Position entschärft wird
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1456430363599" ID="ID_1608232847" MODIFIED="1456505525321" TEXT="erlaube typ-gefilterte Kinder"/>
|
||||
</node>
|
||||
|
|
@ -1820,8 +1802,7 @@
|
|||
</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1456506151065" ID="ID_496007561" MODIFIED="1461888854085" TEXT="bisher nur drei">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
|
|
@ -1845,8 +1826,7 @@
|
|||
 -- das gibt einen wichtigen Hinweis --
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1456506160472" ID="ID_1269579163" MODIFIED="1461888854089" TEXT="zwei sind das Minimum">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
|
|
@ -1861,8 +1841,7 @@
|
|||
also einen double-dispatch haben
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1456506385130" ID="ID_660502308" MODIFIED="1456506445246" TEXT="für generische Zieldaten">
|
||||
<node CREATED="1456506446002" ID="ID_485732185" MODIFIED="1456506470075" TEXT="kommt eine Indirektion hinzu"/>
|
||||
|
|
@ -1886,8 +1865,7 @@
|
|||
das Diff-System noch einmal reimplementieren, dann mit einem vorgegebenen Diff-Typ
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1456506607428" HGAP="31" ID="ID_448113584" MODIFIED="1456506627511" VSHIFT="8">
|
||||
|
|
@ -1934,8 +1912,7 @@
|
|||
(will sagen, es ist nicht sofort offensichtlich, daß wir jeweils einen Interpreter generieren)
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -2023,8 +2000,7 @@
|
|||
und protokolliert somit "nebenbei" was an Anforderungen an ihm vorbeigeht
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1456523612849" ID="ID_729852941" MODIFIED="1456523625883" TEXT="Test zum Aufbau des Interfaces"/>
|
||||
|
|
@ -2272,8 +2248,7 @@
|
|||
für spezifische Arten von Bindings
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<node CREATED="1457232408368" HGAP="29" ID="ID_1068782263" MODIFIED="1457232766908" TEXT="TestWireTap / TestMutationTarget" VSHIFT="-6">
|
||||
<icon BUILTIN="full-1"/>
|
||||
<node CREATED="1457232426238" ID="ID_728198359" MODIFIED="1457232567024" TEXT="brauche ich, um das API zu entwickeln">
|
||||
|
|
@ -2315,8 +2290,7 @@
|
|||
denn sonst würde er es für darunter liegende Layer verschatten.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="closed"/>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -2358,7 +2332,7 @@
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1458175861176" FOLDED="true" HGAP="33" ID="ID_44294405" MODIFIED="1461946758456" TEXT="Design-Anforderungen">
|
||||
<node CREATED="1458175861176" FOLDED="true" HGAP="33" ID="ID_44294405" MODIFIED="1463674673803" TEXT="Design-Anforderungen">
|
||||
<node CREATED="1458175880034" ID="ID_995745627" MODIFIED="1458175889588" TEXT="gegeben ist eine STL-Collection">
|
||||
<node CREATED="1458175892400" ID="ID_1308086929" MODIFIED="1458175904674" TEXT="allgemeinstes STL-Container-Interface"/>
|
||||
<node CREATED="1458175905766" ID="ID_446727516" MODIFIED="1458175919817" TEXT="Wert-Typ per typedef abgreifen"/>
|
||||
|
|
@ -2770,8 +2744,7 @@
|
|||
dann <i>müssen</i> Attribute irgendwie sinnvoll integriert sein
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
<node CREATED="1457741673001" ID="ID_1826667029" MODIFIED="1457742700335" TEXT="konkrete Beispiele">
|
||||
|
|
@ -2791,8 +2764,7 @@
|
|||
⟹ <i>immer</i> in der Klasse verankert
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node CREATED="1457742434714" ID="ID_261686106" MODIFIED="1461888407600">
|
||||
|
|
@ -2805,8 +2777,7 @@
|
|||
⟹ es geht eigentlich <i>nur</i> um den Wert des Attributes
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -2824,8 +2795,7 @@
|
|||
manche Felder sind <i>optional</i>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1461888779999" ID="ID_1274350149" MODIFIED="1461888829427" TEXT="innerer Widerspruch">
|
||||
|
|
@ -2870,13 +2840,27 @@
|
|||
wie ETD ein Objekt repäsentiert
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<font NAME="SansSerif" SIZE="11"/>
|
||||
</node>
|
||||
<node CREATED="1461889470866" ID="ID_404525574" MODIFIED="1461889627791" TEXT="operational">
|
||||
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
||||
<node CREATED="1461889474402" ID="ID_1211544465" MODIFIED="1461889489140" TEXT="alle Informationen, die die Anwendung nicht nutzt"/>
|
||||
<node CREATED="1461889474402" ID="ID_1211544465" MODIFIED="1463672686487" TEXT="alle Informationen, die die Anwendung nicht nutzt">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
"Anwendung" : meint das Anwenden eines Diffs auf ein Ziel-Objekt
|
||||
</p>
|
||||
<p>
|
||||
"nicht nutzen" : meint ignorieren und verwerfen der Information
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1461889550072" ID="ID_48030760" MODIFIED="1461889558442" TEXT="dürfen nur Zustands-Änderungen bewirken"/>
|
||||
<node CREATED="1461889558983" ID="ID_1489246908" MODIFIED="1461889796278" TEXT="welche keinen Einfluß auf nachfolgende Diffs haben">
|
||||
<arrowlink COLOR="#be5b66" DESTINATION="ID_781150142" ENDARROW="Default" ENDINCLINATION="28;-28;" ID="Arrow_ID_30022331" STARTARROW="None" STARTINCLINATION="13;20;"/>
|
||||
|
|
@ -2911,8 +2895,7 @@
|
|||
zwingend die gleiche Reihenfolge erfordert!
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1461890009355" ID="ID_1808149320" MODIFIED="1461890064730" TEXT="aber ETD als Zwischenstufe ist möglich">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
|
|
@ -2936,8 +2919,7 @@
|
|||
der sich letztlich nicht auf das Zielobjekt aufspielen läßt
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1461890240148" ID="ID_1409253452" MODIFIED="1461890244887" TEXT="Schutzmechanismen">
|
||||
<node CREATED="1461890266377" ID="ID_513997188" MODIFIED="1461890283701">
|
||||
|
|
@ -2950,8 +2932,7 @@
|
|||
abweisen, was das Kriterium <i>sicher verletzt</i>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1461890289662" ID="ID_1663916739" MODIFIED="1461890307247" TEXT="Einfügen eines Feldes, das die Klasse nicht kennt"/>
|
||||
<node CREATED="1461891798533" ID="ID_748156171" MODIFIED="1461891807616" TEXT="explizites Umordnen (per seek)"/>
|
||||
|
|
@ -2973,8 +2954,7 @@
|
|||
<b>default</b> : es gibt einen ausgezeichneten Standardwert
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<node CREATED="1461892285965" ID="ID_440312526" MODIFIED="1461892302478" TEXT="mandatory ">
|
||||
<node CREATED="1461892303666" ID="ID_1486672593" MODIFIED="1461892312404" TEXT="Problem der Konstruktor-Repräsentation"/>
|
||||
<node CREATED="1461892313049" ID="ID_683528850" MODIFIED="1461892394247" TEXT="einziger Ausweg: komplette ETD-Repräsentation als Wert senden">
|
||||
|
|
@ -2990,8 +2970,7 @@
|
|||
nicht nur eine leere Record-Hülle, die nachfolgend populiert werden kann (aber nicht muß)
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1461892430466" ID="ID_1727811732" MODIFIED="1461892440092" TEXT="ein mandatory-Feld darf nicht gelöscht werden"/>
|
||||
</node>
|
||||
|
|
@ -3010,8 +2989,7 @@
|
|||
Ab dem Punkt verhält es sich aber wie ein normales (mandatory) Feld
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1461892554377" ID="ID_1564116180" MODIFIED="1461892615511" TEXT="vollwertig">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
|
|
@ -3023,8 +3001,7 @@
|
|||
das Objekt selber kann erkennen, ob das Feld sich im "default-Zustand" befindet
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1461892641949" ID="ID_600125030" MODIFIED="1461892653415" TEXT="Einfügen == vom Default-Wert abweichen"/>
|
||||
|
|
@ -3055,8 +3032,7 @@
|
|||
ohne Prüfen ist <b>emptySrc</b> nicht implementierbar
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
|
|
@ -3075,8 +3051,7 @@
|
|||
alsauch der Check, daß überhaupt noch Quellelemente anstehen
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1461967247093" ID="ID_366726823" MODIFIED="1461967294701">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
|
|
@ -3088,8 +3063,7 @@
|
|||
d.h., man kann nur <i>global auf Prüfung verzichten </i>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1461967274577" ID="ID_1824726078" MODIFIED="1461967310565">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
|
|
@ -3101,8 +3075,7 @@
|
|||
und da habe ich mich bereits <i><font color="#d3204b">dagegen entschieden</font></i>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1461967364397" ID="ID_381561226" MODIFIED="1461967379991" TEXT="Prüfung erfordert eine Flag für jedes bekannte Feld"/>
|
||||
<node CREATED="1461967384579" ID="ID_1805227176" MODIFIED="1461967401644" TEXT="diese Flag wird gesetzt, sobald der Diff das Feld "berührt""/>
|
||||
|
|
@ -3118,8 +3091,7 @@
|
|||
Feld unterstützt <b>default</b>-Wert
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -3142,8 +3114,7 @@
|
|||
<font size="5">Primitiven</font>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<node CREATED="1455927425726" ID="ID_1774195026" MODIFIED="1461946503410" TEXT="emptySrc">
|
||||
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
||||
<node CREATED="1455928216420" ID="ID_259184763" MODIFIED="1461964761834" TEXT="all known fields where mentioned in diff"/>
|
||||
|
|
@ -3151,7 +3122,9 @@
|
|||
<node CREATED="1455927425726" ID="ID_950488526" MODIFIED="1457120215833" TEXT="skipSrc">
|
||||
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
||||
<node CREATED="1455928216420" ID="ID_1837102790" MODIFIED="1461964713432" TEXT="reset to default"/>
|
||||
<node CREATED="1461964714068" ID="ID_1261372831" MODIFIED="1461964841751" TEXT="mandatory fields raise error"/>
|
||||
<node CREATED="1461964714068" ID="ID_1261372831" MODIFIED="1463690748989" TEXT="mandatory fields raise error">
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1455927396505" ID="ID_1033919055" MODIFIED="1457120240382" TEXT="matchSrc">
|
||||
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
||||
|
|
@ -3159,7 +3132,7 @@
|
|||
</node>
|
||||
<node CREATED="1455982947867" ID="ID_348226285" MODIFIED="1457047494973" TEXT="injectNew">
|
||||
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
||||
<node CREATED="1455982969073" ID="ID_1599013380" MODIFIED="1461964802492" TEXT="set known field contents"/>
|
||||
<node CREATED="1455982969073" ID="ID_1599013380" MODIFIED="1463675987940" TEXT="set known field's contents"/>
|
||||
<node CREATED="1457047512175" ID="ID_45133594" MODIFIED="1461964833720" TEXT="mandatory fields raise error"/>
|
||||
<node CREATED="1461964818054" ID="ID_1444647202" MODIFIED="1461964825281" TEXT="unknown fields raise error"/>
|
||||
</node>
|
||||
|
|
@ -3178,6 +3151,36 @@
|
|||
<arrowlink COLOR="#592379" DESTINATION="ID_693317592" ENDARROW="Default" ENDINCLINATION="577;0;" ID="Arrow_ID_1115282938" STARTARROW="Default" STARTINCLINATION="1205;231;"/>
|
||||
<icon BUILTIN="flag-pink"/>
|
||||
</node>
|
||||
<node CREATED="1463675830732" ID="ID_1893171223" MODIFIED="1463675855368">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Einschränkung: <b>accept_until END</b>
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<node CREATED="1463675866200" ID="ID_410463345" MODIFIED="1463675944546" TEXT="ist implementierbar">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
...nämlich indem alle Attribute als "berührt" und akzeptiert markiert werden.
|
||||
</p>
|
||||
<p>
|
||||
Somit könnten sofort Zuweisungen als Nächstes passieren
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1463675872239" ID="ID_467354174" MODIFIED="1463675882809" TEXT="ist sehr sinnvoll"/>
|
||||
<node CREATED="1463675883853" ID="ID_178701147" MODIFIED="1463675901055" TEXT="könnte sogar Standardfall sein"/>
|
||||
</node>
|
||||
<node CREATED="1461965829041" ID="ID_1866325894" MODIFIED="1461965840371" TEXT="erst feststellen, ob ein Attribut gesucht wird"/>
|
||||
<node CREATED="1461965841431" ID="ID_863778784" MODIFIED="1461965852505" TEXT="falls ja, Zugriff auf bekanntes Feld"/>
|
||||
</node>
|
||||
|
|
@ -3204,8 +3207,7 @@
|
|||
analog wie <b>assignElm</b>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1461963748604" ID="ID_465316362" MODIFIED="1461963753895" TEXT="namentlich bekanntes Feld"/>
|
||||
<node CREATED="1461963777440" ID="ID_207528376" MODIFIED="1461963787443" TEXT="aber nicht Setter, sondern Mutator bauen"/>
|
||||
|
|
@ -3232,8 +3234,7 @@
|
|||
<font size="4">Operationen</font>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<node CREATED="1458175991795" ID="ID_1544297658" MODIFIED="1461966322936" TEXT="fest eingebaut...">
|
||||
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
||||
<node CREATED="1458175942866" ID="ID_321386709" MODIFIED="1458177953093" TEXT="match">
|
||||
|
|
@ -3260,8 +3261,38 @@
|
|||
<node CREATED="1458177803730" ID="ID_1570261235" MODIFIED="1458177953095" TEXT="auch nicht nötig bei immutable values"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1458175960615" ID="ID_806805692" MODIFIED="1461966356086" TEXT="ctor">
|
||||
<node CREATED="1463687547746" ID="ID_241762171" MODIFIED="1463687748036" TEXT="defaulter">
|
||||
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
||||
<icon BUILTIN="help"/>
|
||||
<node CREATED="1463687553569" ID="ID_695577132" MODIFIED="1463687602782" TEXT="veranlaßt Rückkehr zum default-Zustand"/>
|
||||
<node CREATED="1463687629319" ID="ID_613393149" MODIFIED="1463687644409" TEXT="erfordert explizite Unterstützung durch das Zielobjekt"/>
|
||||
<node CREATED="1463687644973" ID="ID_1677329552" MODIFIED="1463687741843" TEXT="fragwürdig">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
sieht nach Ober-engineering aus,
|
||||
</p>
|
||||
<p>
|
||||
zumal das erhebliche Statefulness bewirkt
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
<node CREATED="1463687649812" ID="ID_450096384" MODIFIED="1463687655942" TEXT="Ersatz">
|
||||
<icon BUILTIN="button_cancel"/>
|
||||
<node CREATED="1463687668218" ID="ID_205365114" MODIFIED="1463687670469" TEXT="keiner"/>
|
||||
<node CREATED="1463687672649" ID="ID_244442064" MODIFIED="1463687689779" TEXT="dann kann eben nur gebunden werden"/>
|
||||
<node CREATED="1463687865175" ID="ID_1290398590" MODIFIED="1463687869987" TEXT="normalerweise verzichtbar"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1458175960615" ID="ID_806805692" MODIFIED="1463691187577" TEXT="ctor">
|
||||
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
||||
<icon BUILTIN="button_cancel"/>
|
||||
<node CREATED="1461966391478" ID="ID_110542982" MODIFIED="1461966404134" TEXT="wird dem Setter vorgeschaltet"/>
|
||||
<node CREATED="1458177315803" ID="ID_1572942300" MODIFIED="1458177953094" TEXT="konstruiert aus der Spec ein neues Element"/>
|
||||
<node CREATED="1461966815950" ID="ID_156023396" MODIFIED="1461966831208" TEXT="notwendig bei Attribut-Werten, die tatsächlich Objekte sind"/>
|
||||
|
|
@ -3278,9 +3309,25 @@
|
|||
unterstelle Ziel als <i>konstruierbar</i> aus Payload
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1463691200369" ID="ID_542600281" MODIFIED="1463691259602" TEXT="überflüssiges Konzept">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
da effektiv bereits der Setter diese Funktionalität enthalten kann und muß,
|
||||
</p>
|
||||
<p>
|
||||
denn der Setter nimmt eine GenNode
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1458176018087" ID="ID_280816523" MODIFIED="1458177953095" TEXT="mutator">
|
||||
|
|
@ -3290,7 +3337,7 @@
|
|||
<node CREATED="1458177857939" ID="ID_1231660130" MODIFIED="1458177953095" TEXT="Ersatz">
|
||||
<icon BUILTIN="button_cancel"/>
|
||||
<node CREATED="1458177861162" ID="ID_1234972537" MODIFIED="1458177953095" TEXT="keiner"/>
|
||||
<node CREATED="1458177863506" ID="ID_668640033" MODIFIED="1458177953095" TEXT="dann gibts eben keine Behandlung von nested scopse"/>
|
||||
<node CREATED="1458177863506" ID="ID_668640033" MODIFIED="1463690716478" TEXT="dann gibts eben keine Behandlung von nested scopes"/>
|
||||
<node CREATED="1458177874760" ID="ID_98241568" MODIFIED="1458177953095" TEXT="auch nicht nötig bei primitive values"/>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -3300,6 +3347,202 @@
|
|||
<node CREATED="1458176048564" ID="ID_1811113811" MODIFIED="1461888530348" TEXT="Variationen"/>
|
||||
</node>
|
||||
<node CREATED="1458178113697" HGAP="26" ID="ID_38103760" MODIFIED="1461882659663" TEXT="Design-Schlußfolgerungen" VSHIFT="-7">
|
||||
<node CREATED="1463687362843" HGAP="116" ID="ID_775516687" MODIFIED="1463687372655" TEXT="Eingrenzung" VSHIFT="-28">
|
||||
<node CREATED="1463687373889" ID="ID_155516876" MODIFIED="1463687400026" TEXT="Art von Attributen">
|
||||
<node CREATED="1463687402462" ID="ID_1119981147" MODIFIED="1463687407577" TEXT="Objekt-Feld">
|
||||
<node CREATED="1463689795357" ID="ID_1774256004" MODIFIED="1463689801592" TEXT="kann nur zugewiesen werden"/>
|
||||
<node CREATED="1463689912853" ID="ID_592726515" MODIFIED="1463689945817">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
<b>injectNew</b> tolerieren
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<icon BUILTIN="help"/>
|
||||
<node CREATED="1463690238314" ID="ID_1366435072" MODIFIED="1463690270664" TEXT="eigentlich redundant">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
....man könnte genausogut auch beim ersten Mal zuweisen
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1463690487032" ID="ID_1618528789" MODIFIED="1463690595034" TEXT="Aber: isomorph zu GenNode">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
denn die Diff-Anwendung auf GenNode unterstützt Zuweisung
|
||||
</p>
|
||||
<p>
|
||||
ausschließlich bei schon existierenden Elementen. Demnach muß dort auch jedes Attribut
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
entweder schon mit dem Konstruktor mit gegeben worden sein
|
||||
</li>
|
||||
<li>
|
||||
oder vorher einmal explizit eingefügt
|
||||
</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1463687408597" ID="ID_783243290" MODIFIED="1463689788310" TEXT="optional Property">
|
||||
<icon BUILTIN="stop-sign"/>
|
||||
<node CREATED="1463688083594" ID="ID_1885891636" MODIFIED="1463688087910" TEXT="fragwürdiger Nutzen"/>
|
||||
<node CREATED="1463688088457" ID="ID_1722180442" MODIFIED="1463688100116" TEXT="mutet "theoretisch" an"/>
|
||||
<node CREATED="1463688147802" ID="ID_1259353240" MODIFIED="1463688156500" TEXT="Alternative">
|
||||
<node CREATED="1463688157472" ID="ID_1130562584" MODIFIED="1463688173746" TEXT="auf "mindere defaults" setzen"/>
|
||||
<node CREATED="1463688215752" ID="ID_1340272500" MODIFIED="1463688230896" TEXT="kann man einfach mitlaufen lassen"/>
|
||||
<node CREATED="1463688184269" ID="ID_1652024004" MODIFIED="1463688193863" TEXT="immer mögliche Degradierung des Konzepts"/>
|
||||
<node CREATED="1463688232550" ID="ID_1079102386" MODIFIED="1463688268288" TEXT="fehlende Funktionalität ersetzbar">
|
||||
<icon BUILTIN="idea"/>
|
||||
<node CREATED="1463688247980" ID="ID_720310622" MODIFIED="1463688253639" TEXT="durch komplettes Neukonstruieren"/>
|
||||
<node CREATED="1463688254251" ID="ID_1166606306" MODIFIED="1463688262902" TEXT="durch eine explizite Reset-Methode"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1463687451791" ID="ID_682582613" MODIFIED="1463687457052" TEXT="Attribut-Map">
|
||||
<icon BUILTIN="button_cancel"/>
|
||||
<node CREATED="1463687461925" ID="ID_39763189" MODIFIED="1463687496231" TEXT="hier ausgeschlossen">
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node CREATED="1463687466573" ID="ID_1853473792" MODIFIED="1463687482279" TEXT="implementierbar auf Basis des Collection-Binding"/>
|
||||
<node CREATED="1463687484338" ID="ID_1009085517" MODIFIED="1463687491613" TEXT="könnte für GenNode relevant sein"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1463691267608" ID="ID_1554269824" MODIFIED="1463691272203" TEXT="Typisierung">
|
||||
<node CREATED="1463691273431" ID="ID_1711015726" MODIFIED="1463691276947" TEXT="pro Attribut"/>
|
||||
<node CREATED="1463691277726" ID="ID_716698874" MODIFIED="1463691280146" TEXT="implizit">
|
||||
<node CREATED="1463691290845" ID="ID_1981578828" MODIFIED="1463691359416" TEXT="der Setter bekommt eine GenNode"/>
|
||||
<node CREATED="1463691359988" ID="ID_139397516" MODIFIED="1463691370270" TEXT="der Setter holt sich aus dieser die Payload"/>
|
||||
<node CREATED="1463691372258" ID="ID_1648677750" MODIFIED="1463691550094" TEXT="alle Typkonvertierungs-Fragen auf client abgewälzt"/>
|
||||
<node CREATED="1463691552514" ID="ID_1882798051" MODIFIED="1463691645252" TEXT="das ist gut so">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
...denn wir vermeiden dadurch Komplexität.
|
||||
</p>
|
||||
<p>
|
||||
Der gesendete Diff muß einfach passen!
|
||||
</p>
|
||||
<p>
|
||||
Genau deshalb haben wir auch in GenNode verschiedene Varianten des gleichen Grundtyps,
|
||||
</p>
|
||||
<p>
|
||||
damit wir nicht in die ganzen Ungewissheiten der widening conversions laufen!
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<icon BUILTIN="ksmiletris"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1463691680849" ID="ID_909001007" MODIFIED="1463691721556" TEXT="Striktheit">
|
||||
<node CREATED="1463691716821" ID="ID_414439233" MODIFIED="1463691724243" TEXT="soweit einfach zu gewährleisten">
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node CREATED="1463691725515" ID="ID_947499289" MODIFIED="1463691741484" TEXT="d.h. soweit nicht zusätzlicher State notwendig ist"/>
|
||||
<node CREATED="1463691767421" ID="ID_993508973" MODIFIED="1463691780901" TEXT="Flexibilität muß stets praktisch gerechtfertigt sein">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1463691793010" ID="ID_1079571503" MODIFIED="1463691795837" TEXT="Fälle">
|
||||
<node CREATED="1463691796825" ID="ID_1459507376" MODIFIED="1463691928935" TEXT="Setter">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
d.h. der Attributwert hat Wertsemantik und wird einfach zugewiesen
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1463691804696" ID="ID_1039735883" MODIFIED="1463692035179" TEXT="Mutator">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
...d.h. der Attributwert ist ein Objekt und damit ein nested Scope
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1463691807824" ID="ID_175488317" MODIFIED="1463691814860" TEXT="keine Mischformen">
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node CREATED="1463692054415" ID="ID_1755055624" MODIFIED="1463692088865">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Problem: <i>immutable values</i>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<node CREATED="1463692505987" ID="ID_113919280" MODIFIED="1463692515040" TEXT="wirklich ein Problem?">
|
||||
<icon BUILTIN="help"/>
|
||||
</node>
|
||||
<node CREATED="1463692519993" ID="ID_1177616097" MODIFIED="1463692550512" TEXT="Diff handelt ohnehin nur von veränderbaren Dingen"/>
|
||||
<node CREATED="1463692663853" ID="ID_953408463" MODIFIED="1463692675304" TEXT="Aber: wie ändert man die Länge eins Clips im UI?">
|
||||
<node CREATED="1463695438538" ID="ID_744412186" MODIFIED="1463695450620" TEXT="indem man sich auf ein Präsentations-Grid bezieht"/>
|
||||
<node CREATED="1463695454504" ID="ID_945765975" MODIFIED="1463695469602" TEXT="und folglich nur Grid-Punkt-Koordinaten ändert"/>
|
||||
<node CREATED="1463695472134" ID="ID_852324151" MODIFIED="1463695494714" TEXT="die eigentlichen Time-Entitäten leben in der Session, nicht im UI">
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1463695573392" ID="ID_1066626880" MODIFIED="1463695587634" TEXT="im Übrigen: Problem des client-Codes">
|
||||
<node CREATED="1463695588814" ID="ID_1661716485" MODIFIED="1463695605096" TEXT="man kann einen time::Mutator erzeugen"/>
|
||||
<node CREATED="1463695605708" ID="ID_480704465" MODIFIED="1463695620401" TEXT="es gibt vorgefertigte EmbeddedMutators">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node CREATED="1463695633144" ID="ID_1677066412" MODIFIED="1463695657196">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
das alles passiert dann <i>im</i> Lambda
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1463695640231" ID="ID_176647136" MODIFIED="1463695645090" TEXT="und ist somit nicht unser Problem"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1461894614295" ID="ID_1919790561" MODIFIED="1461894618130" TEXT="Bindeglieder">
|
||||
<node CREATED="1461894619054" ID="ID_1860006379" MODIFIED="1461894633513" TEXT="implementieren die API-Primitive">
|
||||
<node CREATED="1461894676063" ID="ID_1773874682" MODIFIED="1461894678714" TEXT="durch Aktion"/>
|
||||
|
|
@ -3309,7 +3552,14 @@
|
|||
<node CREATED="1461894634029" ID="ID_1447610701" MODIFIED="1461894660404" TEXT="werden automatisch zusammengestellt"/>
|
||||
<node CREATED="1461894666248" ID="ID_1972218753" MODIFIED="1461894674331" TEXT="auf Baiss einer Situations-Kennzeichnung"/>
|
||||
</node>
|
||||
<node CREATED="1461897111747" ID="ID_1690728106" MODIFIED="1461897118502" TEXT="Ein Attribut oder viele Attribute"/>
|
||||
<node CREATED="1461897111747" ID="ID_1690728106" MODIFIED="1461897118502" TEXT="Ein Attribut oder viele Attribute">
|
||||
<node CREATED="1463695795083" ID="ID_216074650" MODIFIED="1463695808780" TEXT="Zweifel, ob isoliertes Attribut korrekt implementierbar"/>
|
||||
<node CREATED="1463695809296" ID="ID_780490723" MODIFIED="1463695851374" TEXT="problematisch sind Selektor und (ignorierte) Reihenfolge"/>
|
||||
<node CREATED="1463696031715" ID="ID_1300041378" MODIFIED="1463696046717" TEXT="denkbar, "ein Attribut" als Basis-Element zu implementieren"/>
|
||||
<node CREATED="1463696053440" ID="ID_564525411" MODIFIED="1463696064488" TEXT="aber: viele Attribute sind der Standardfall">
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1457232746179" ID="ID_1793680066" MODIFIED="1457232776598" TEXT="Rec<GenNode>">
|
||||
|
|
@ -3333,8 +3583,7 @@
|
|||
<b>Problem</b><font color="#4e094b">: partielle Ordnung</font>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1461967744747" ID="ID_1012577830" MODIFIED="1461967750654" TEXT="Diff setzt totale Ordnung voraus"/>
|
||||
<node CREATED="1461967765080" ID="ID_1011855147" MODIFIED="1461967787729" TEXT="verletzt durch »onion-layer«"/>
|
||||
|
|
@ -3364,8 +3613,7 @@
|
|||
In jedem Fall gerät dadurch die relative Verzahnung der Elemente untereinander aus dem Takt
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1461967992042" ID="ID_9552950" MODIFIED="1461968004228" TEXT="nur ein Ausweg..."/>
|
||||
<node CREATED="1461968004720" ID="ID_1333404241" MODIFIED="1461968229550" TEXT="Ordnung der onion-layer verbindlich machen">
|
||||
|
|
@ -3393,8 +3641,7 @@
|
|||
und diese Elemente müssen geschlossen hintereinander in der Reihenfolge liegen
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -3414,8 +3661,7 @@
|
|||
...denn es ist sehr verwirrend, welche Signatur denn nun die Lambdas haben müssen
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<linktarget COLOR="#a9b4c1" DESTINATION="ID_428365633" ENDARROW="Default" ENDINCLINATION="176;0;" ID="Arrow_ID_1501436647" SOURCE="ID_338749301" STARTARROW="None" STARTINCLINATION="176;0;"/>
|
||||
</node>
|
||||
<node CREATED="1458850154575" ID="ID_725958518" MODIFIED="1461888854407" TEXT="wenn der Default-Matcher greift">
|
||||
|
|
@ -3428,8 +3674,7 @@
|
|||
...denn es kann keinen Default-Matcher geben....
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1458850212503" ID="ID_321552356" MODIFIED="1458850218977" TEXT="Signaturen für Lambdas dokumentieren"/>
|
||||
|
|
@ -3449,8 +3694,7 @@
|
|||
daß der Client hier eigentlich ein Protokoll implementieren muß.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1458850263688" ID="ID_555018476" MODIFIED="1458850272315" TEXT="Zusammenführen">
|
||||
<node CREATED="1458850294083" ID="ID_393704697" MODIFIED="1458850302901" TEXT="der normale GenNode-Applikator"/>
|
||||
|
|
@ -3918,8 +4162,7 @@
|
|||
Implementierung der real-world-Variante fehlt!
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<font NAME="SansSerif" SIZE="13"/>
|
||||
<icon BUILTIN="prepare"/>
|
||||
<node CREATED="1453545875627" ID="ID_1411740156" MODIFIED="1453545951737" TEXT="Definition »Zentral-Dienste«">
|
||||
|
|
|
|||
Loading…
Reference in a new issue