Naudojant naują analizės metodą, kuriame realizuoti Wiener ir Smooth filtrai, prie standartinio GMJ paketo reikalingos šios klasės:
ktu.lt.gmj.WienerDomain, ktu.lt.gmj.analysis.WalrasProfit, ktu.lt.gmj.HostNameRetriever, ktu.lt.gmj.ui.GMJext (paskutiniosios dvi klasės reikalingos tik kelio iki apleto radimui. Jeigu šis kelias bus įvedinėjamas ranka, šių klasių galima ir atsisakyti)Taip pat modifikuota klasė ktu.lt.gmj.Task
Norint prijungti šiuos filtrus prie naujo uždavinio,
reikia realizuoti naują klasę, paveldinčią WienerDomain klasę (visi
pateikiami pavyzdžiai yra iš Walras modelio, tačiau filtra galima
pritaikyti
kitiems modeliams. Kuriama nauja 'autonominė' filtro versija tinkanti failams įvesti/išvesti applet režime):
class WalrasWienerDomain extends WienerDomain {
static double[][] X;
static double[][] Y;
static final String[] dimensions = {
"1st server profit (iteration)",
"2nd server profit (iteration)"
};
public String[] dimensions() {
return dimensions;}
public WalrasWienerDomain() {
setXY(X, Y);}
};
Klasės WienerDomain kintamieji ir metodai:
X - abscisių reikšmių masyvas
Y - ordinačių reikšmių masyvas
dimensions - projekcijų pavadinimia, t.y. kokį pavadinimą matys vartotojas analizės lange.
public String[] dimensions() - metodas, grąžinantis projekcijų pavadinimus
public void setXY(double[][]X, double[][]Y) - nustatotmos X, Y
reikšmės. Jeigu analizei duomenys skaitomi ne iš failo, o nustatomi
programiškai, tai turi būti naudojamas šis metodas. Duomenys grafikui
imami iš masyvų X, Y, todėl korektiškui duomenų atvaizdavimui analizės
lange būtina skaičiavimų metu sekti ir pastoviai
atnaujinti X, Y reikšmes, tam naudojant WienerDomain klasės metodą
public void setXY (double[][] X, double[][] Y).
Klasėje, realizuojančioje Task interfeisą, t.y. naujame uždavinyje, turi būti klasės paveldinčios WienerDomain tipo kintamasis bei šį kintamąjį grąžinantis Task interfeiso metodas public WienerDomain wienerDomain(), pvz.:
public class WalrasModel implements Task {
................
public WalrasWienerDomain wdomain = new WalrasWienerDomain();
................
public WienerDomain wienerDomain() {
return wdomain; }
................}
Wiener ir Smooth analizė prie apleto prijungiama kaip ir kitos standartinės analizės, pvz. eilutė iš *.html failo:
ANALYSIS="lt.ktu.gmj.analysis.Convergence|lt.ktu.gmj.analysis.Spectrum|lt.ktu.gmj.analysis.Projection|lt.ktu.gmj.analysis.WalrasProfit"
Kad filtro analizės lange būtų automatiškai užrašomas kelias iki apleto, t.y. kelias iki prieinamų duomenų failų, apleto kodo klasė turi būti GMJext.class, o ne GMJ.class, pvz. eilutė iš *.html failo:
Taip pat turi būti nurodytas parametras codebase, nurodantis tolimesnį kelią nuo apleto iki duomenų failo, pvz. eilutė iš *.html failo (šiuo atveju filtro lange bus nurodomas adresas: kelias iki apleto/lib/ ):
Wiener ir Smooth filtrų analizės langas: Laukų reikšmės:
code=lt.ktu.gmj.ui.GMJext.class
codeBase="lib"
1 - Wiener filtro parametras
2 - failo, iš kurio skaitomi duomenys, vardas. Failas turėtų būti
padėtas ten pat, kaip ir apletas. Įjungus šį analizės langą, duomenys
imami iš programos, t.y. jeigu nustatytos
WienerDomain klasės kintamųjų X, Y reikšmės. Jeigu šios reikšmės
nustatytos nekorektiškai, arba vykdant skaičiavimus neatnaujintos, tai
ir grafikas bus atitinkamai neteisingas. Nurodžius failo vardą,
duomenys skaitomi iš šio failo. Failo formatas: pirmas stulpelis x
reikšmės, sekantys stulpeliai y reikšmės. Tokiu būdu grafike gali būti
atvaizduotos priklausomybės Y1(x), Y2(x) ir t.t.
Paspaudus Load mygtuką, nuskaitomi duomenys iš failo.
3 - mygtukai, skirti analizei. Smooth - smooth analizei atlikti,
Wiener - wiener analizei atlikti, Undo - vieno veiksmo atšaukimas,
Refresh - duomenų atnaujinimas
4 - grafiko langas
5 - skirtingų projekcijų pasirinkimas. Pavadinimai ir kiekis gali būti
nustatomas klasėje realizuojančioje WienerDomain klasę. Tokiu atveju šie pavadinimai taikomi duomenims, gautiems iš programos.
Nuskaičius duomenis iš failo, šie pavadinimai automatiškai keičiami į y1(x), y2(x) ir t.t. Projekcijų bus tiek, kiek faile yra skirtingų y stulpelių.