- Lae alla uusim versioon siit.
- Ava IntelliJ-s projekt kus soovid dendroloj-d kasutada.
- Kopeeri allalaetud .jar fail oma IntelliJ projekti kausta.
- Paremklõpsa IntelliJ-s .jar failil ja vali 'Add as library'.
- Vajuta avanenud aknas 'OK'.
- Lisa meetoditele mille rekursioonipuud tahad visualiseerida
@Grow
annotatsioon. - Enne oma rekursiivse meetodi välja kutsumist kutsu välja
Dendrologist.wakeUp()
. - Käita programm ja aken rekursioonipuuga avaneb automaatselt.
Näide rekrusiivse Fibonacci arvude arvutamise meetodiga (vt. Katsed.java):
-
Loo oma puu ja salvesta selle juurtipp muutujasse (nt
tipp
). -
Kutsu välja
Dendrologist.drawBinaryTree
. Meetod võtab argumendiks juurtipu ja kolm funktsiooni, mis võtavad kõik sisendiks tipu ja tagastavad vastavalt tipu tähise sõnena, vasaku alamtipu ja parema alamtipu.Nt. kui tipu tähis on väljas .info, ning vasak ja parem alamtipp vastavalt väljades .v ja .p, siis saab puu joonistada väljakutsega
Dendrologist.drawBinaryTree(tipp, t -> t.info, t -> t.v, t -> t.p)
.
(Kui tegemist ei ole kahendpuuga saab kasutada üldisemat meetodit Dendrologist.drawTree
. Kasutuse kohta leiab lisainfot meetodi Javadoc kommentaarist ja failist NTippKatsed.java.)
Näide kasutaja defineeritud Tipp klassiga (vt. TippKatsed.java):
Graafide joonistamiseks saab kasutada klassi GraphCanvas<V>
, kus V
on joonistatava graafi tippude tüüp.
See klass toimib lõuendina, kuhu saab vastavate meetodite abil joonistada graafi servad ja tipud.
Lõuendi kuvamiseks kutsu välja meetod Dendrologist.drawGraph(lõuend)
.
Lisainfot leiab GraphCanvas
klassi ja vastavate meetodite Javadoc kommentaaridest.
Vaata ka näidet failis GraafKatsed.java.
Liigutades riba akna alumises servas saab vaadata väljakutsete puu ajalugu. Iga samm on kas üks meetodi väljakutse või üks tagastus meetodist.
Vasakut hiireklahvi all hoides saab märgistada tippe (see värvib tipud erksiniseks).
Hiire rullikuga saab suumida sisse ja välja. Paremat hiireklahvi all hoides saab liigutada vaadet.
Ctrl+R
või Ctrl+0
taastab algse vaate asukoha ja suurenduse.
Soovi korral on võimalik seadistada mõningaid parameetreid, mis muudavad seda kuidas dendroloj rekursioonipuid kuvab. Seadete muutmiseks on Dendrologist
klassil klassimeetodid mida peaks kutsuma enne Dendrologist.wakeUp()
meetodit.
Dendrologist.setUIScale(uiScale)
seab kordaja millega korrutatakse kõikide graafiliste elementide mõõtmed. See on kasulik ennekõike kui vaikesuurusega tekst on lugemiseks liiga väike.Dendrologist.setShowMethodNames(showMethodNames)
lülitab sisse või välja meetodite nimede kuvamise rekursioonipuus (vaikimisi on see väljas). See on kasulik, et vältida segadust, kui rekursioonipuus on mitu erinevat meetodit.Dendrologist.setArgumentCapture(duringCall, duringReturn)
võimaldab seadistada millal argumentide väärtused talletatakse. Vaikimisi talletatakse argumentide väärtused nii väljakutsel kui ka tagastusel. Väärtused tagastusel kuvatakse ainult siis, kui need erinevad väärtustest väljakutsel.
@Grow
annotatsiooniga meetodites (ja meetodites mida kutsutakse @Grow
annotatsiooniga meetoditest) saab kasutada Dendrologist.paint(color)
meetodit, et värvida rekursioonipuus sellele väljakutsele vastav tipp antud värvi. See on kasulik näiteks selleks, et tähistada rekursioonipuus huvipakkuvaid tippe.
Kui tahad, et dendroloj toimiks sel ajal kui silur programmi jooksutamise pausile on pannud siis paremklõpsa breakpointil ja vali 'Suspend: Thread' ja seejärel vajuta 'Make Default'. Kui sul on mitu breakpointi juba lisatud siis pead 'Suspend: Thread' valima kõigil, kuid uute breakpointide lisamisel seda enam käsitsi vahetama ei pea.
See tagab, et silur paneb pausile ainult vaadeldava lõime ja teised lõimed sh dendroloj lõim jooksevad edasi.