Objektový návrh 1 Návrhové vzory
Návrhové vzory predstavujú všeobecné riešenia problémov, ktoré sa využívajú pri návrhu programov.
V tejto aplikácií budú použité nasledujúce návrhové vzory:
-
Model-View-Controller
-
Singleton
-
Abstract Factory
1.1 Model-View-Controller
Popis: Model-View-Controller rozdeluje aplikáciu na 3 oddelené časti:
- je reprezentáciou dát aplikácie. Určuje aké dáta budú zobrazené na výstupe
aplikácie.
- zobrazuje dáta pre používateľa vo vhodnej grafickej podobe. Dáta dostáva z modelu a transformuje ich na vhodný grafický výstup. Nemá priamy prístup k dátam.
- ovláda stav modelu. Reprezentuje ovládanie aplikácie užívateľom. Zmenou stavu
modelu sa zabezpečí, že sa zobrazia správne dáta.
1.2 Singleton
Popis: Zabezpečenie, že môže byť vytvorená iba jedna inštancia triedy, ktorá je vytvorená podľa tohto návrhového vzoru.
Tento návrhový vzor je obzvlášť vhodný pre triedy konfigurácie, databázy a všade tam, kde je požadované, aby bol prístup k dátam určitého typu iba z jedného miesta.
Popis: Poskytuje rozhranie pre vytváranie súvisiacich rodín alebo závislých objektov bez uvedenia ich konkrétnej triedy.
Použitie tohto vzoru umožňuje striedať konkrétne implementácie tried bez zmeny kódu, ktorý ich používa, a to aj za behu aplikácie.
2 Objektový návrh systému ako celku
Obrázok 1: Objektový diagram, zobrazujúci prepojenie objektov systému
2.1 Objektový diagram
Objektový diagram znázorňuje kompletnú aplikáciu, aj vrátane používateľského rozhrania.
Hlavným objektom je main, čo je vlastne samotná aplikácia. Pod ňou sa v grafe nachádza používateľské rozhranie. Všetky jeho komponenty sú už predpripravené triedy vývojového prostredia (Visual Studio). Konkretizované sú ovládacie prvky, pre žiadanosť ich vlastností. Používateľské prostredie obsahuje aj množstvo vizuálnych komponentov. Napravo sa v grafe od main-u nachádzajú konfiguračné triedy merac a myChannel, ktoré združujú nastavenia pre zariadenie a z neho namerané dáta.
2.2 Komponenty vývojového prostredia
Všetky konkretizované komponenty vývojového prostredia zobrazené v objektovom diagrame sú Controller-mi z návrhového vzoru Model-View-Controller. Je teda požadované aby mali očakávané vlastnosti. Týmito vlastnosťami sú nasledovné:
- metóda Click
- jednorazovo spúšťa istú akciu. V našom prípade sú týmito akciami
spustenie a ukončenie merania a zobrazenie tabuľky či grafu.
- metóda TextChanged
- reaguje na zmenu v textovom poli komponentu. Kedže náš program pracuje iba s
číslami, je v tejto metóde nutné zabezpečiť aby komponent ignoroval akékoľvek
písmo, a pri zmene číselnej hodnoty ju poslal komponentu merac.
-
RadioButton (výberové tlačidlo)
- metóda CheckedChanged
- reaguje na vyznačenie/odznačenie komponentu. Pri zmene má komponent
odoslať tento parameter komponentu merac.
-
CheckedListBox (zoznam zaškrtávacích polí)
- metóda ItemCheck
- reaguje na zaškrtnutie jedného z polí. Pri zmene má komponent
odoslať tento parameter komponentu merac.
- metóda SelectedIndexChanged
- reaguje na zmenu vyznačeného poľa. Pri zmene má komponent
odoslať tento parameter komponentu merac.
-
ComboBox (vyskakovacie menu s možnosťami)
- metóda SelectedIndexChanged
- reaguje na zmenu vyznačeného poľa. Pri zmene má komponent
odoslať tento parameter komponentu merac.
Konkrétne použitie týchto komponentov v používateľskom prostredí obsahuje časť 3.5 Trieda MainForm.
3 Objektový návrh jednotlivých komponentov
Nasledujúci diagram zobrazuje už iba nami vytvorené triedy a ich premenné a metódy.
Obrázok 2: Triedny diagram
3.1 Trieda MyChannel
Popis: Abstraktná trieda predstavújuca základné parametre všetkých kanálov zariadenia.
Premenné
-
name - názov (označenie) kanálu určené zariadením
-
enabled - či je kanál aktívny, teda či sa má kanál použiť pri meraní
3.2 Trieda MyOutputChannel
Popis: Konkretizovaná trieda pre výstupné kanály zariadenia odvodená z abstraktnej triedy MyChannel. Trieda je Modelom z návrhového vzoru Model-View-Controller.
Premenné (navyše k triede MyChannel):
-
minVoltage - nastavenie minimálneho napätia pre daný kanál
-
maxVoltage - nastavenie maximálneho napätia pre daný kanál
3.3 Trieda MyInputChannel
Popis: Konkretizovaná trieda pre vstupné kanály zariadenia odvodená z abstraktnej triedy MyChannel. Trieda je Modelom z návrhového vzoru Model-View-Controller.
Premenné (navyše k triede MyChannel):
-
continuous - či čítanie dát z tohto kanála má prebiehať počas celého intervalu merania
Popis: Trieda predstavujúca jadro projektu. Obsahuje údaje využívané aplikáciou a taktiež metódy na komunikáciu so zariadením. Trieda je Modelom z návrhového vzoru Model-View-Controller.
Premenné:
-
device - pointer na ovládače zariadenia
-
channels - konfiguračné triedy pre jednotlivé kanály zariadenia
-
inputsNum - počet vstupných kanálov
-
outputsNum - počet výstupných kanálov
-
steps - nastavenie počtu krokov merania
-
repetitions - nastavenie počtu meraní ktoré sa majú vykonať
-
interval - dĺžka jedného kroku merania
-
frequency - počet prečítaní dát počas jedného intervalu pri kontinuálnom čítaní
-
actualMeassurement - číslo momentálne prebiehajúceho merania
-
actualStep - číslo momentálne prebiehajúceho kroku merania
-
saveFile - základ názvu súboru pre jednotlivé súbory na uloženie
-
runningMeassurement - či prebieha meranie
-
scale - pomer rozdielu nastaveného a reálneho rozpätia napätia zariadenia
-
data - data prečítané zo zariadenia
Konfiguračné metódy:
-
setOutputChannel - aktivuje zvolený výstupný kanál
-
setOutputChannelMinV - nastaví zvolenému kanálu určené minimálne napätie
-
setOutputChannelMaxV - nastaví zvolenému kanálu určené maximálne napätie
-
getOutputChannel - vráti nastavenia zvoleného kanála
-
getOutputEnabled - vráti, či je zvolený kanál aktívny
-
disableOutput - deaktivuje zvolený kanál
-
setInputChannel - aktivuje zvolený vstupný kanál
-
getInputChannel - vráti nastavenia zvoleného kanála
-
getInputEnabled - vráti, či je zvolený kanál aktívny
-
disableInput - deaktivuje zvolený kanál
Akčné metódy:
-
setDevice - metóda volaná pri vytvorení triedy. Nastaví si zariadenie a uloží si potrebné informácie o ňom
-
startMeassure - skontroluje či používateľom zadané nastavenia sú korektné. Ak áno, začne odosielať požiadavky s potrebnými nastaveniami zariadeniu
-
stopMeassure - ukončí odosielanie požiadaviek zariadeniu
-
inputRead - metóda odchytávajúca prichádzajúce dáta zo zariadenia. Dané dáta podľa potreby preškáluje a uloží do premennej data. Podľa premenných actualMeassurement a actualStep ukončuje meranie
-
saveData - po korektnom ukončení merania (prebehli všetky očakávané merania) ukladá prečítané dáta zo zariadenia ako súbory na disk
-
drawGraph - z prečítaných dát zo zariadena vygeneruje a vykreslí graf
3.5 Trieda MainForm
Popis: Trieda predstavujúca používateľské rozhranie. Komponenty tejto triedy sú View a Controllermi z návrhového vzoru Model-View-Controller.
Controller komponeny:
-
start - volá metódu startMeassure komponentu Merac
-
stop - volá metódu stopMeassure komponentu Merac
-
showData - zobrazí tabuľku s nameranými datami
-
showGraph - zobrazí graf s nameranými datami
-
outMinVoltInput - nastavuje premennú minVoltage komponentu MyOutputChannel
-
outMaxVoltInput - nastavuje premennú maxVoltage komponentu MyOutputChannel
-
intervalInput - nastavuje premennú interval komponentu Merac
-
stepsInput - nastavuje premennú steps komponentu Merac
-
freqInput - nastavuje premennú frequency komponentu Merac
-
repsInput - nastavuje premennú repetitions komponentu Merac
-
contRadio - nastavuje premennú continuous komponentu MyInputChannel
-
singleRadio - nastavuje premennú continuous komponentu MyInputChannel
-
outChannels - nastavuje premennú enabled komponentu MyOutputChannel
-
inChannels - nastavuje premennú enabled komponentu MyInputChannel
-
graphX - nastavenie priradenia kanála k x-ovej osi
-
graphY - nastavenie priradenia kanála k y-ovej osi
View komponenty:
-
table - vizuálny komponent tabuľky
-
graph - vizuálny komponent grafu
Metódy:
-
load - metóda volaná pri spustení aplikácie. Zistí či je k PC pripojené zariadenie, ak nie je, aplikácia to oznámi a ďalej nepokračuje. Ak je, inicializuje triedu Merac a vytvorí v komponentoch outChannels a inChannels CheckBox, pre všetky výstupné a vstupné kanály zariadenia.
|