next up previous contents index
Next: Konstruktor Up: Metody instance Previous: Dedukce   Obsah   Index

Aktualizace

Hodnoty atributů objektu jsou v čase proměnné. V PROLOGu jsou pro aktualizaci použity metody assert a retract, Pluto používá insert a delete, jak ukazuje následující příklad:

class osoba[druh $\Rightarrow$ osoba;
ozen(osoba) {ozen(S) :- not druh $\rightarrow$ _, insert druh $\rightarrow$ S, insert S.druh $\rightarrow$ Self}
rozved(){rozved() :- delete druh $\rightarrow$ S, delete S.druh $\rightarrow$ _}]

Z předchozího příkladu je patrné, že použití operací delete a insert je příliš těžkopádné a pracné. V Plutu proto používáme operaci is. Předchozí dvě metody mohou být tak zapsány následujícím způsobem:

ozen(osoba S) { not druh $\rightarrow$ _, druh is S, S.druh is Self}
rozved() {druh.druh is null, druh is null}

Formálněji má zápis A is V následující významy:

  1. Není-li A výskyt proměnné, znamená A is V vypočítej V a výsledek ulož do A, jinak
  2. je-li V null, znamená A is V delete A $\rightarrow$ _, jinak
  3. není-li A obsaženo ve V, znamená A is V insert A $\rightarrow$ V, jinak
  4. je-li A obsaženo ve V a zároveň V neobsahuje X, znamená A is V delete A $\rightarrow$ X, insert A $\rightarrow$ V', kde V' vznikne z V nahrazením A symbolem X.


next up previous contents index
Next: Konstruktor Up: Metody instance Previous: Dedukce   Obsah   Index
Tomáš Kubíček 2002-05-19