next up previous contents index
Next: Přetížení metod a polymorfismus Up: Metody Previous: Vytváření objektu   Obsah   Index


Metody třídy

Stejně jako atributy mají i třídy svoje metody. Metoda třídy je v Plutu deklarována následujícím způsobem:

static op($\tau_1$,...,$\tau_n$) $\Rightarrow$ $\tau$ { $definice\_pravidel$}

kde $op(\tau_1, ...,\tau_n) \Rightarrow \tau$ je typ metody, který specifikuje jméno $op$ metody, typy argumentů $\tau_1,...,\tau_n$ a typ výsledku metody $\tau$. Podstatnou částí definice je $op(\tau_1,...,\tau_n)$, která bývá nazývána podpisem (signaturou) metody a tato musí být unikátní v rámci třídy. Pokud je typ $\tau$ void můžeme jej při deklaraci vynechat.

Následuje příklad:

class osoba[jmeno $\Rightarrow$ string;
static count $\Rightarrow$ integer default 0;
static zobrazSoucet(){zobrazSoucet() :- soucet $\rightarrow$ C, write(C)}]

Metody třídy mohou používat výhradně atributy třídy, nikoliv však atributy instancí v rámci třídy. Naopak metody instance smějí používat oba typy metod. Pro příklad sestavme následující dotaz:

?-osoba.zobrazSoucet().

Metody třídy mohou být volány i z instancí. Následující příklad dává stejný výsledek jako předchozí dotaz:

?-bob.zobrazSoucet().


next up previous contents index
Next: Přetížení metod a polymorfismus Up: Metody Previous: Vytváření objektu   Obsah   Index
Tomáš Kubíček 2002-05-19