Student’s Life Návrhová dokumentace (Design) Lukáš Barák, Jakub Ječmínek, Jaroslav Brchel, Jiří Zmeškal 3.12.2010
Model Specification
Page: 2
Obsah Model architektury.......................................................................................................................................... 3 Návrhový model ............................................................................................................................................. 3 Bussines vrstva (Doménová vrstva)............................................................................................................ 3 Datová vrstva ............................................................................................................................................. 3 Prezentační vrstva ...................................................................................................................................... 4 Balíček "Návrhový model" .............................................................................................................................. 4 Balíček "datoveOperace" ............................................................................................................................ 5 Balíček "grafika" ......................................................................................................................................... 6 Balíček "logika" ........................................................................................................................................... 6 Model nasazení............................................................................................................................................ 18 PC ............................................................................................................................................................ 18
Model Specification
Page: 3
Model architektury Balíček obsahuje popis logického členění navrhované aplikace na vrstvy, které umožňují snadnou rozšiřitelnost a udržovatelnost aplikace. Jednotlivé vrstvy obsahují další balíčky, do kterých jsou seskupeny třídy, podle jejich logických souvislostí.
cmp Model architekt...
Prezentační v rstv a
Bussines v rstv a (Doménov á v rstv a)
Datov á v rstv a
Obrázek: 1
Návrhový model Business vrstva (Doménová vrstva) Komponenta obsahuje třídy a komponenty, které realizují požadované chování aplikace z pohledu obchodní logiky.
Datová vrstva Komponenta obsahuje třídy a komponenty poskytující technickou podporu pro doménovou vrstvu v podobě persistentního ukládání dat apod.
Model Specification
Page: 4
Prezentační vrstva Prezentační vrstva obsahuje třídy a komponenty, které se starájí o prezentování informací uživateli, a které od něho zpátky přebírají požadavky. Tyto požadavky transformují tak, aby odstranily závislost na použité technologii (desktopová aplikace) a předávájí je dále do doménového modelu.
Balíček "Návrhový model" Balíček obsahuje popis návrhových tříd, jejich vzájemných vztahů, přiřazení zodpovědností a popis spolupráce pro realizaci požadovaných funkčností. Pro grafickou reprezentaci statického modelu využívá UML diagram tříd, kde jsou jednotlivé třídy doplněny o metody, atributy o datové typy (dle zvoleného implementačního jazyka nebo s využitím obecných datových typu), konce asociací jsou doplněny o popisy. Pro grafickou reprezentaci dynamického chování využívá UML sekvenční diagramy, UML diagramy spolupráce, UML diagramy aktivit a UML stavové diagramy. class StudentsLife grafika + HlavniOkno
Prezentační vrstva aplikace StudentsLife
logika + menza Business vrstva aplikace
+ penezenka + rozvrh + Utils + diar
datov eOperace + diar + menza
Datová vrstva
+ penezenka + rozvrh
Obrázek: 1
Model Specification
Page: 5
Balíček "datoveOperace" Balíček obsahuje třídy datové vrstvy, které nabízejí technickou podporu pro třídy obchodní vrstvy. Jedná se především o datové operace(načítání, ukádání).
Balíček "diar" Balíček "menza" Třída "Parser" Třída Parser bude sloužít k načítání dat ze stránek SUZ (jídelníček pro danný den). Atributy Atributy Datový typ Poznámky boolean Udržuje informaci zda je jídelníček již načtený, nebo ne. isNacteny Jidelnicek Jidelnicek který se vyparsuje ze stránek SUZ. jidelak Metody getJidelnicek
Návratový typ False
Poznámky
Parser
False
Konstruktor třídy Parser. Parametry:
ziskatJidelnicek
False
Tato mezoda bude sloužit na vyprasování jídelníčku ze stránek SUZ a jeho uložení do instanční proměné jidelak. Parametry:
Tato metoda bude vracet vyparsovaný jídelníček. Parametry:
Třída "Ukladac" Třída ukladač slouží k ukládání dat modulu do xml souboru. Obsahuje metody, které toto ukládání realizují. Atributy Atributy Datový typ Poznámky String Soubor do kterého se bude modul ukládat. FILE Metody save
Návratový typ False
Poznámky
Tato metoda slouží k ukládání informací modulu do xml. Parametry: • list: List<Jidelnicek>
Třída "Upravator" Tato třída bude sloužit k načtení dat modulu menza z xml a jejich úpravám.
Model Specification
Page: 6
Balíček "penezenka" Balíček "rozvrh" Třída "Nacitac" Třída pro načítání z xml souboru.
Třída "Parser" Třída pro parsování html souboru s rozvrhem z KOSu.
Třída "Ukladac" Slouží pro ukládání aktuálních dat v modulu. Atributy Atributy Datový typ FILE
Poznámky Soubor, do ktereho bude ulozen obsah modulu v xml forme.
Balíček "grafika" Balíček grafika tvoří prezentační vrstvu aplikace StudentsLife. Je to rozhraní mezi uživatelem a aplikací.
Třída "HlavniOkno" Tato třída tvoří základ grafického uživatelského rozhraní mezi uživatelem a aplikací.
Balíček "logika"
Balíček "Utils" class Utils
Obrázek: 2
Třída "Hlidac" Hlidac je rozhraní, které je součástí návrhového vzoru observer. Toto rozhraní sice java obsahuje, ale zde je vytvořeno pro větší přehlednost kódu v rámci teamu.
Model Specification
Page: 7
Balíček "diar" class Diar
Metody díáře v BL 2 hlavní třídy
Kategorie -
BarvaKat: int JmenoKat: char
+ + +
odstranKategorii(char) : void vytvorKategorii(int, char) : void zmenKategorii(boolean, char) : void
Udalost -
Delka: int Den: int Hodina: int Kategorie: char Mesic: int Minuta: int Nazev: char Rok: int
+ + +
odstranUdalost(int, int, int, int, int) : void upravUdalost(int, int, int, int, int, int, char, char) : void vytvorUdalost(char, int, int, int, int, int, int, char) : void
Obrázek: 3
Model Specification
Page: 8
Balíček "menza" class menza ModulMenza -
seznam: List<Jidelnicek>
+ +
ModulMenza() pridatJidelnicek(Jidelnicek) : void
Jidelnicek
Jidlo -
cena: int hmotnost: int jeOblibene: boolean jmenoJidla: String
+ + + + + + + + +
getCena() : int getHmotnost() : int getJmenoJidla() : String isOblibene() : boolean Jidlo(int, String, boolean, int) setCena(int) : void setHmotnost(int) : void setJeOblibene(boolean) : void setJmenoJidla(String) : void
-
hlavniJidlo: Jidlo menza: Menza moucnik: Jidlo polevka: Jidlo
+ + + + + + + + +
getHlavniJidlo() : Jidlo getMenza() : Mezna getMoucnik() : Jidlo getPolevka() : Jidlo Jidelnicek(Jidlo, Jidlo, Jidlo, Menza) setHlavniJidlo(Jidlo) : void setMenza(Menza) : void setMoucnik(Jidlo) : void setPolevka(Jidlo) : void
-
adresa: String [1..55] nazev: String [1..55] provozniDoba: String [1..55]
+ + + + + + +
getAdresa() : String getNazev() : String getProvozniDoba() : String Menza(String, String, String) setAdresa(String) : void setNazev(String) : void setProvozniDoba(String) : void
menza::Parser
menza::Uprav ator OblibenaJidla
Menza
-
isNacteny: boolean jidelak: Jidelnicek
+ + -
getJidelnicek() : Jidelnicek Parser() ziskatJidelnicek() : void
menza::Ukladac -
FILE: String = modulMenza.xml {readOnly}
+
save(List<Jidelnicek>) : void
Obrázek: 4
Třída "Jidelnicek" Každá instance této třídy obsahuje informace o jednom daném jídelníčku. Atributy Atributy Datový typ Poznámky Jidlo Hlavní jídlo dne hlavniJidlo Menza Informace o mezne pro kterou daný jídelníček platí. menza moucnik
Jidlo
Moučník na jídelníčku.
Model Specification
Page: 9
Atributy polevka
Datový typ Jidlo
Poznámky Polévka v denní nabídce
Metody
Poznámky
getHlavniJidlo
Návratový typ False
getMenza
False
Vrátí instanci třídy Menza, která obsahuje informace o menze, pro kterou platí danný jídelníček. Parametry:
getMoucnik
False
Vrátí moučník z jídelníčku. Parametry:
getPolevka
False
Vrátí instanci třídy Jidlo obsahující informace o polévce z jídelníčku Parametry:
Jidelnicek
False
Kontruktor třídy Jidelnicek Parametry: • hlavniJidlo: Jidlo
Vrátí hlavní jídlo na jídelníčku. Parametry:
•
polevka: Jidlo
•
moucnik: Jidlo
•
menza: Menza
setHlavniJidlo
False
Nastaví hlavní jídlo jídelníčku. Parametry: • hlavniJidlo: Jidlo
setMenza
False
Nastaví menzu Parametry: • menza: Menza
setMoucnik
False
Nastaví moučník na jídelníčku Parametry: • moucnik: Jidlo
setPolevka
False
Nastaví polévku na jídelníčku. Parametry: • polevka: Jidlo
Model Specification
Page: 10
Třída "Jidlo" Instance této třídy obsahuje informace o jednotlivých jídlech Atributy Atributy Datový typ Poznámky int Cena jídla. cena int Hmotnost jídla. hmotnost boolean Informace zda je jídlo oblíbené. jeOblibene String Jméno jídla. jmenoJidla Metody
Poznámky
getCena
Návratový typ False
getHmotnost
False
Tato metoda vrací hmotnost jídla Parametry:
getJmenoJidla
False
Tato metoda vrací jméno jídla Parametry:
isOblibene
False
Tato metoda vrací informaci zda je jídlo oblíbené Parametry:
Jidlo
False
Konstruktor třídy Jidlo. Parametry: • hmotnost: int
Tato metoda vrací cenu jídla Parametry:
•
jmenoJidla: String
•
jeOblibene: boolean
•
cena: int
setCena
False
Tato metoda nastavuje cenu jídla Parametry: • cena: int
setHmotnost
False
Tato metoda nastavuje hmotnost jídla. Parametry: • hmotnost: int
setJeOblibene
False
Tato metoda nastavuje zda je jídlo oblíbené Parametry: • jeOblibene: boolean
Model Specification
Metody setJmenoJidla
Page: 11
Návratový typ False
Poznámky
Tato metoda nastavuje jméno jídla Parametry: • jmenoJidla: String
Třída "Menza" Tato třída slouží pro popis jednotlivých menz. Atributy Atributy Datový typ String adresa String nazev String provozniDoba
Poznámky Adresa menzy Název menzy Doba kdy je menza otevřená
Metody
Poznámky
getAdresa
Návratový typ False
getNazev
False
Tato metoda vrací název menzy Parametry:
getProvozniDoba
False
Tato metoda vrací provozni dobu menzy Parametry:
Menza
False
Konstruktor třídy Menza Parametry: • adresa: String
Tato metoda vrací adresu menzy Parametry:
•
nazev: String
•
provozniDoba: String
setAdresa
False
Tato metoda nastavuje adresu menzy. Parametry: • adresa: String
setNazev
False
Tato metoda nastavuje název menzy. Parametry: • nazev: String
setProvozniDoba
False
Tato metoda nastavuje provozni dobu menzy. Parametry: • provozniDoba: String
Model Specification
Page: 12
Metody
Návratový typ
Poznámky
Třída "OblibenaJidla" Tato třída slouží k přidávání/odebírání jídel do kategorie oblíbených.
Balíček "penezenka" class penezenka Penezenka -
alert: int = 0 sum: int
«column» - polozky: List
+ + + + + + + +
getSum() : int odeberObserver(Hlidac) : void odeberPolozku(Polozka) : void pridejObserver(Hlidac) : void pridejPolozku(Polozka) : void setAlert(int) : void upozorniObserver() : void vratPolozky() : List
Polozka
Obrázek: 5
-
cena: int opakovani: char popis: String uctovaciDatum: Date
+ + + + + +
Polozka(int, String, Date, char) setCena(int) : void setOpakovani(char) : void setPopis(String) : void setUctovaniDatum(Date) : void toString() : String
Model Specification
Page: 13
Třída "Penezenka" Hlavní třída modulu s peněženkou Atributy Atributy Datový typ int alert
Poznámky Obsahuje stav konta, při kterém dojde k upozornění, že je něco v nepořádku. V tomto atributu jsou drženy veškeré operace peněženky Obsahuje stav konta
polozky sum
List int
Metody getSum
Návratový typ False
odeberObserver
False
vymaže hlídače změn Parametry: • h: Hlidac
odeberPolozku
False
Odebere položku ze seznamu Parametry: • p: Polozka
pridejObserver
False
Přidá hlídače změn Parametry: • h: Hlidac
pridejPolozku
False
Přidá položku do seznamu Parametry: • p: Polozka
setAlert
False
Nastaví hodnotu, při které bude peněženka upozorňovat, že je stuent u dna. Parametry: • a: int
upozorniObserver
False
Upozorní hlídače změn, že se v jeho vnitřních stavech udála změna Parametry:
vratPolozky
False
Vrací List položek peněženky. Parametry:
Poznámky
Vrátí stav účtu studenta Parametry:
Model Specification
Page: 14
Třída "Polozka" Třída reprezentuje jednotlivou položku v peněžence Atributy Atributy Datový typ Poznámky int Jednotlivá položka vyjádřena hodnotou cena char Znak, podle kterého se bude rozhodovat, jestli se položka účtuje opakovani opakovaně - týdně, měsíčně, denně - nebo se jedná o jednorázovou věc String Slovní popis položky popis Date Datum, kdy byla položka zaúčtována uctovaciDatum Metody Polozka
Návratový typ False
Poznámky
Konstruktor vytvářející novou položku Parametry: • c: int •
p: String
•
d: Date
•
o: char
setCena
False
úprava atributu Parametry: • c: int
setOpakovani
False
úprava atributu Parametry: • o: char
setPopis
False
úprava atributu Parametry: • p: String
setUctovaniDatum
False
úprava atributu Parametry: • d: Date
toString
False
Pro získání textové podoby položky Parametry:
Model Specification
Page: 15
Balíček "rozvrh" class rozv ... Rozv rh -
rozvrh: int
+ + +
popPolozku(int, int) : void Rozvrh() : void setPolozku(Polozka) : void
Polozka
Predmet
-
den: int hodina: int predmet: Predmet tyden: char ucebna: Ucebna vyucujici: Vyucujici
+
Polozka() : void
Ucebna
Vyucuj ici
-
jmeno: int kodPredmetu: int
-
kod: int umisteni: int
-
email: int jmeno: int
+
Predmet() : void
+ +
setUmisteni(String) : void Ucebna(String) : void
+ +
setEmail() : void Vyucujici() : void
Obrázek: 6
Model Specification
Page: 16
Třída "Polozka" Obsahuje všechny atributy a objekty, ze kterých se skládá jedna položka rozvrhu (jedna buňka). Atributy Atributy den hodina predmet tyden ucebna vyucujici Metody Polozka
Datový typ int int Predmet char Ucebna Vyucujici
Poznámky Den kdy je predmet v rozvrhu. Hodina, kdy ma byt položka v rozvrhu. Predmet, ke kterému se položka váže. Sudý, nebo lichí. Ucebna, ve které daný predmet probíhá. Vyucující, který má danou hodinu na starosti.
Návratový typ False
Poznámky
Konstruktor. Parametry:
Třída "Predmet" Trída která sdružuje informace, prípadné schopnosti premetu. Atributy Atributy Datový typ Poznámky int Jméno predmetu. jmeno int Originalni kód predmetu. kodPredmetu Metody Predmet
Návratový typ False
Poznámky
Konstruktor. Parametry:
Třída "Rozvrh" Uchovává strukturu všech předmětů zapsaných v rozvrhu. Atributy Atributy Datový typ Poznámky int Pole ukazatelu na jednotlivé položky rozvrhu. rozvrh Metody popPolozku
Návratový typ False
Poznámky
Parametry:
Rozvrh
False
Inicializace pole. Parametry:
Model Specification
Metody setPolozku
Page: 17
Návratový typ False
Poznámky
Zaradí položku do rozvrhu na správné místo. Parametry: • polozka: Polozka
Třída "Ucebna" Třída, která uchovává data o učebne. Atributy Atributy Datový typ int kod int umisteni
Poznámky Kód ucebny tak, jak je v rozvrhu. Presné umístení ucebny.
Metody
Poznámky
setUmisteni
Návratový typ False
Ucebna
False
Dodatečné nastavení umístení učebny, srozumitelné studentovi. Parametry: • umisteni: String konstruktor Parametry: • kod: String
Třída "Vyucujici" Trída prechovávající informace o vyucujícím. Atributy Atributy Datový typ int email int jmeno
Poznámky
Metody
Poznámky
setEmail
Návratový typ False
Vyucujici
False
Přidá k položce email, který se neinicializuje v konstruktoru, protože není obsažen v html rozvrhu z kosu. Parametry: Konstruktor obektu položka. Parametry:
Model Specification
Page: 18
Model nasazení Balíček obsahuje popis umístění jednotlivých částí aplikace na jednotlivé fyzické uzly a způsob jejich komunikace.
deployment Model nasaz... PC
JRE
«jar soubor» AplikaceStudentsLife
Obrázek: 1
PC Aplikace poběží na standardním PC.
JRE Java Runtime Environment pro daný operační systém. Bez této technologie není možné používat aplikaci.