
ObjectHTML
Wstęp - geneza, zastosowania |
Klasy posiadają metody, których znaczenie jest takie same jak w innych językach obiektowych [4, 5]. Wszystkie metody są wirtualne, dziedziczone i publiczne. Zawsze zwracają wartość typu napis. Dostęp do wartości zwrotnej odbywa się poprzez zmienną lokalną result dodawaną automatycznie do zbioru zmiennych lokalnych. Początkowa wartość tej zmiennej to pusty tekst. Metody mogą posiadać parametry formalne. Nazwy parametrów są zdefiniowane w nawiasach po nazwie metody i są oddzielane przecinkami. Wszystkie parametry są przekazywane przez wartość. Zmienne lokalne są definiowane przy pomocy instrukcji decl (por. p. 5.10.1). Po zakończeniu wykonywania wszystkich instrukcj i metody są zwalniane z pamięci. Składnia metody jest następująca: method iden1([iden2[,iden3[,...]]]) instrukcje endm gdzie iden1 jest nazwą metody, natomiast iden2, iden3 są nazwami parametrów. W nadklasie musi istnieć redefiniowana metoda. Zapewnia to dodatkową kontrolę nazw. Składnia redefinicji metody jest następująca: redefine iden1([iden2[,iden3[,...]]]) instrukcje endr gdzie iden1 jest nazwą redefiniowanej metody, zaś iden2, iden3 są nazwami parametrów. Przykład definicji prostej metody zwracającej tekst i wartości parametrów: method main(p1, p2) 'Hello world'; nl $p1; sp ; $p2; nl endm Metody mogą być definiowane rekurencyjnie. Każde wystąpienie nazwy metody w jej treści oznacza rekurencyjne wywołanie tej metody. Przykład rekurencyjnej metody wypisującej liczby z zakresu <n,0>: method count(loop) append result $loop," " if $loop n<= 0 then append result "koniec" else incr loop -1 this.count($loop) endif endm |