„4. OO metrikák (2012)” változatai közötti eltérés

Ferrero (vitalap | szerkesztései)
aNincs szerkesztési összefoglaló
Ferrero (vitalap | szerkesztései)
98. sor: 98. 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
=== Kombinátor algebra ===
* Sequence(Identity, v) = v
* Sequence(Identity, v) = v
* Sequence(v, Identity) = v
* Sequence(v, Identity) = v
107. sor: 117. 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.
A lap eredeti címe: „https://vik.wiki/4._OO_metrikák_(2012)