Tegevusskeem
< 1. nädala teemad
Tegevusskeemn (activity diagram) kuulub UML-i skeemide komplekti. Ta on mõeldud üldisemalt protsesside modelleerimiseks, kuid sobib kasutada ka väiksemaid ülesandeid lahendavate algoritmide kujutamiseks. Seetõttu sobib ta kasutamiseks programmeerimise algõpetuses, et mõelda läbi ja visualiseerida erinevaid algoritme. Tegevusskeemil on teatavaid sarnasusi plokkskeemiga (flowchart), kuid viimast on täiendatud ennekõike võimalusega näidata paralleelseid tegevusi.
Tegevusskeem koosneb toimingutest - ümardatud nurkadega ristkülikutest, mille sisse saab kirjutada tekstid toimingu kohta. Meie vajadustest lähtudes kirjutame sinna ennekõike valemeid/omistuslauseid, sisestatavaid muutujaid ja väljastatavaid muutujaid. Sisendi ja väljundi puhul võiks muutujanimedele lisada vastavalt sõnad "Sisend" ja "Väljund". Lisaks kasutame paralleelsust, näitamaks erinevaid võimalusi toimingute järjestamiseks algoritmis, kuid see ei ole väga oluline. Olulise skeemi osana tuleb kasutada otsustuspunkti, mille abil saab skeemil ja algoritmid esitada valikuid (otsuseid teha ühel tingimusel ühesuguseid toiminguid ning teisel tingimusel teisi toiminguid). Sama komponenti kasutame ka tsüklite moodustamisel, kus ta tähistab kohta, kus otsustatakse tsükli jätkamise või lõpetamise üle.
Olulisemad tegevusskeemi komponendid
edit- algussõlm (initial node) – väike must muna, millega algoritm algab, sellest väljub alati üks voog
- toiming (action) – ümardatud nurkadega ristkülik, nendesse kirjutatakse käsud, mida algoritmis täidetakse
- voog (flow/edge) – nool, mis näitab üleminekuid ühest toimingust teise toimingusse; korrektne on, kui igasse toimingusse siseneb üks voog ning väljub samuti üks voog
- hargmik (fork) – jämedam horisontaalne või vertikaalne joon, millega algab parallelsete toimingute / harude täitmine (harusid võib olla 1 .. *); oluline on, et kõigis harudes olevad toimingud kuuluvad mingis järjekorras täitmisele, enne kui liitumispunktist edasi minna saab
- liitumispunkt (join) – samasugune joon kui hargmikulgi, lõpetab hargnemised; ei pea tingimata olema üksühene vastavus hargmike ja liitumispunktide vahel; ühe hargnemise võib lõpetada mitu liitmispunkti, mis erinevad harud kokku võtavad.
- otsustuspunkt (decision) – väike romb, mis tähistab otsuse tegemise kohta: vastavalt harude juurde kirjutatud tingimusele valitakse toimingute voogude vahel; otsustuspunktil on üks sisendvoog ja mitu väljundvoogu, millest igaühte valvab tõkis – nurksulgudesse kirjutatud lisatingimus. Tegevusskeem lubab hargnemist mitmetesse harudesse, meiei kasutame oma vajaduseks peamiselt hargnemist kahte harusse, et oleks maksimaalne vastavus if-lausega
- lisatingimus e tõkis (guard) – loogikatingimus, mis esitatakse kandilistes sulgudes; tingimuse abil valitakse jätkatav töövoog; lisatingimused peavad üksteist välistama; lisatingimus lisatakse iga voo juurde. Üheks lisatingimuseks võib olla ka [else], mida me ka kasutame - st kui otsustuspunktist väljub kaks voogu, siis ühel nendest on loogikatingimus ja teisel else
- jätkupunkt (merge) – see tähistab otsustuspunktiga alanud erinevate töövoogude kohtumispaika; tal on mitu sisendvoogu (meil peamiselt kaks) ja üks väljundvoog.
- tegevuse lõpp (activity final) – must mumm, millega algoritm lõppeb
Järgneval näitel on näha toimingud, hargmik ja liitumispunkt. Samuti vood toimingute vahel. Skeemil on kujutatud täisnurkse kolmnurga pindala ja ümbermõõdu leidmise algoritmi eeldusel, et teada on mõlemad kaatetid (täistatud a ja b). Vasakpoolsel skeemil on tegevused esitatud rangelt üheses järjekorras: muutujatele a ja b väärtuste andmise järel arvutatakse välja kolmnurja pindala S, hüpotenuus c ja ümbermõõt P. Seejärel trükitakse pindala ja ümbermõõt.
Parempoolsel skeemil kasutatav hargmik näitab, et toiminguid võib ka veidi teises järjekorras sooritada. Nt võib pindala ja ümbermõõtu arvutada paralleelselt, või siis ümbermõõdu enne ja pindala pärast. Kindlasti on aga vajalik hüpotenuus leida enne ümbermõõtu.