next up previous contents index
Next: Závěr Up: PLUTO: popis a ukázky Previous: Výběr postupu dědění   Obsah   Index


Programování v Plutu

Programovací jazyk Pluto je prakticky jako jiný OOPL: Nejdříve definujeme třídy potřebné pro aplikaci a poté vytváříme program, v němž tyto třídy používáme. Definované třídy je nutné přeložit do spustitelné podoby jako např. v Javě. Kompilace se vztahuje též k dědičnosti, proto třída ve spustitelné podobě obsahuje veškeré atributy, implicitní hodnoty a metody, ať už přímo definované nebo zděděné.

Následují dvě úplné definice tříd:

class bod[x, y $\Rightarrow$ real;
bod(real X, Y) {x is X, y is Y}
presun(bod V) {x is x + V.x, y is y + V.y}
vzdalenost(bod V) $\Rightarrow$ real D {X is x - V.x, Y is y - V.y, D = sqrt(X*X + Y*Y)}]

clas obdelnik[v1, v2, v3, v4 $\Rightarrow$ bod;
obdelnik(integer X1, Y1, X2, Y2, X3, Y3, X4, Y4) {v1 $\rightarrow$ new bod(X1, Y1),v2 $\rightarrow$ new bod(X2, Y2),v3 $\rightarrow$ new bod(X3, Y3),v4 $\rightarrow$ new bod(X4, Y4)}
delka() $\Rightarrow$ real L{L is v1.vzdalenost(v2)}
sirka() $\Rightarrow$ real W{W is v1.vzdalenost(v4)}
obsah() $\Rightarrow$ real A{A is delka() * sirka()}
presun(bod V) {v1.presun(V), v2.presun(V), v3.presun(V), v4.presun(V)}]

K systému Pluto přistupujeme pomocí interpretu příkazů Pluto jako např. v PROLOGu. Pomocí metody load z vestavěné třídy system nejprve načteme potřebné třídy do paměti. Nyní již můžeme pro práci s objekty používat příkazy systému Pluto. Existují čtyři druhy těchto příkazů: (1) new - metoda pro vytvoření objektu jisté třídy v paměti (2) destroy - metoda pro odstranění objektu z paměti a také uvolnění místa obsazeného objektem (3) insert a delete - pro práci s hodnotami atributů (4) dotazovací příkazy - získávání hodnot atributů a volání metod.

Mějme následující příklady:

?-system.load(bod).
?-p1 = new bod(0,0).
?-r1 = new obdelnik(0,0,0,1,1,0,1,1).
?-r1.presun(p2).

?-system.load(obdelnik).
?-p2 = new bod(1,1).
?-write(r1.obsah()).
?-p1.destroy().

První dva dotazy načtou třídy do paměti. Dalšími třemi příkazy vytvoříme dva objekty třídy bod a jeden objekt třídy obdelnik a pojmenujeme je p1, p2 a r1. Šestý a sedmý příkaz jsou dotazy. Pomocí šestého získáme obsah obdélníku r1 a sedmý přesune obdélník r1 v závislosti na bodu p2. Posledním příkazem odstraníme objekt p1 z paměti.

Všimněme si, že některé objekty jména mají (p1,p2,r1) a jiné nikoliv jako např. body vzniklé zavoláním konstruktoru třídy obdélník. Pojmenované objekty zůstávají v systému, dokud nejsou explicitně odstraněny, ostatní existují pouze, je-li na ně odkudkoli odkazováno.

Příkazy v Plutu můžeme také sjednotit do pojmenovaného programu. Takto vypadá jeho struktura: program jmeno [prikazy]. Takto sepsaný program může být přímo spuštěn v příkazovém interpretu Pluto.


next up previous contents index
Next: Závěr Up: PLUTO: popis a ukázky Previous: Výběr postupu dědění   Obsah   Index
Tomáš Kubíček 2002-05-19