Definicja klasy
Klasa jest zbiorem zmiennych i funkcji opisujących właściwości i zachowanie żółwia-obiektu w POOL. Jest to
wygodny sposób uporządkowania programu, w którym będzie istniało wiele żółwi.
W POOL do zdefiniowania klasy używana jest definicja funkcji. Treść funkcji-klasy powinna zawierać instrukcje
wykonywane podczas tworzenia nowego żółwia - włączając w to deklaracje zmiennych i definicje funkcji składowych.
Funkcja ta jest konstruktorem nowego żółwia. Uwaga: funkcja ta nie może zwracać wyniku.
W większości zadań programistycznych potrzebna jest możliwość komunikacji między żółwiami-obiektami: wzajemne
odczytywanie zmiennych lub wywoływanie funkcji składowych. W POOL służy do tego operator @
.
W POOL wszystkie funkcje zdefiniowane w klasie są publiczne - mogą być wywoływane przez inne żółwie.
Zmienne natomiast dzielą się na trzy kategorie:
- publiczne, zdefiniowane jako globalne, mogą być odczytane przez inne żółwie przy pomocy @
;
- chronione, zdefiniowane jako lokalne, niedostępne poprzez @
, ale widoczne w klasach potomnych;
- statyczne, zdefiniowane jako współdzielone - jedna zmienna jest dostępna dla wszystkich żółwi.
Przykład 1:
to model :p
make "l 0
to fn :x
make "l :x
output :x^:p
end
end
make "t (list (newt $model 2) (newt $model 3) (newt $model 5))
print :t
foreach "z :t [(print who @ :z (fn repcount) @ :z)]
foreach "z :t [print :l @ :z]
Rezultat wykonania:
[model1 model2 model3]
model1 1
model2 8
model3 243
1
2
3
Przykład 2:
to model :h0 :c
to krok
rt :a fd :v
"a := :a + rnorm 2
if abs :a > 30 ["a := 30 * sign :a]
"v := :v + rnorm 0.1
if :v < 0 ["v := 0]
end
make "v 3
let "a 0
seth :h0
setpc :c
end
wrap
"n := 5
repeat :n [
"h := 360 * repcount / :n
"c := 1000 * repcount / :n
"t := (newt $model :h :c)
]
ht
"ts := children
let "cyk timer [
foreach "t :ts [krok @ :t]
if :iter % 100 = 0 [
let "s 0
foreach "t :ts ["s := :s + :v @ :t]
print :s / count :ts
]
] 10
Rezultat wykonania:
(program rysuje także w oknie graficznym)
3.60541860738304
3.24327855650685
3.35303447692073
2.92485334993107
3.17479251202894
3.43988973971224
...
Zobacz także:
Definicja i wywołanie funkcji
Odczytanie zmiennej i wyniku funkcji
Zmienne, dostęp do danych
Żółw - obiekt
#, turtle - odczytaj żółwia
Funkcja jako wartość
$, func - odczytaj funkcję
Spis treści