„4. OO metrikák (2012)” változatai közötti eltérés
aNincs szerkesztési összefoglaló |
|||
| (3 közbenső módosítás, amit egy másik szerkesztő végzett, nincs mutatva) | |||
| 92. sor: | 92. sor: | ||
====Proactor==== | ====Proactor==== | ||
* mint a Reactor, csak itt esemény | * mint a Reactor, csak itt esemény | ||
* mo: mint a Reactor | * mo: mint a Reactor, csak itt aszinkron események demultiplexelése jön létre | ||
====Csatlakozó (acceptor-connector)==== | ====Csatlakozó (acceptor-connector)==== | ||
* összefonódik a kapcsolódás és kommunikáció | * összefonódik a kapcsolódás és kommunikáció | ||
| 98. sor: | 99. sor: | ||
==Visitor Combinator== | ==Visitor Combinator== | ||
=== Alap visitor combinatorok === | |||
* Identity: semmit sem csinál (non-iterating default visitor) | |||
* Sequence(v1, v2): szekvenciálisan végrehajtja v1-et majd v2-t | |||
* Fail: Raise exception | |||
* Choice(v1, v2): megpróbálja v1-et, ha nem sikerül, akkor megpróbálja v2-t | |||
* All(v): engedélyezi visitor v-t szekvenciálisan minden azonnali részfára | |||
* One(v): engedélyezi visitor v-t szekvenciálisan az azonnali részfára amíg sikeres | |||
Forrás: http://homepages.cwi.nl/~markvdb/courses/SoftwareConstruction/JJTraveler.pdf | |||
=== Kombinátor algebra === | |||
* Sequence(Identity, v) = v | * Sequence(Identity, v) = v | ||
* Sequence(v, Identity) = v | * Sequence(v, Identity) = v | ||
| 107. sor: | 120. sor: | ||
* Try(v) = Choice(v, Identity) | * Try(v) = Choice(v, Identity) | ||
* IfZeroAddOne = Try(Sequence(IsZero, AddOne)) | * IfZeroAddOne = Try(Sequence(IsZero, AddOne)) | ||
=== Bejáró kombinátorok === | |||
==== Mindegyik közvetlen gyermekre ==== | |||
<pre> | |||
class All implements Visitor { | |||
Visitor v; | |||
public All(Visitor _v){ v = _v; } | |||
public void visit_Leaf(Leaf leaf) throws VF { } | |||
public void visit_Fork(Fork fork) throws VF { | |||
fork.left.accept(v); | |||
fork.right.accept(v); | |||
} | |||
} | |||
</pre> | |||
==== TopDown(v) = Sequence(v, All(TopDown(v)) ==== | |||
<pre> | |||
class TopDown extends Sequence { | |||
public TopDown(Visitor v) { | |||
super(v, null); | |||
then = new All(this); | |||
} | |||
} | |||
</pre> | |||
==== BottomUp(v) = Sequence(All(BottomUp(v)), v) ==== | |||
<pre> | |||
class ButtomUp extends Sequece { | |||
public BottomUp(Visitor v) { | |||
super(null, v); | |||
first = new All(this); | |||
} | |||
} | |||
</pre> | |||
-- [[MeszegetoBalazsIstvan|MeszegetoBalazsIstvan]] - 2008.05.27. | -- [[MeszegetoBalazsIstvan|MeszegetoBalazsIstvan]] - 2008.05.27. | ||