Student s Life. Návrhová dokumentace (Design) Lukáš Barák, Jakub Ječmínek, Jaroslav Brchel, Jiří Zmeškal 3.12.2010



Podobné dokumenty
Architektura softwarových systémů

Analytická dokumentace

Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9

Java a XML. 10/26/09 1/7 Java a XML

7.3 Diagramy tříd - základy

7.3 Diagramy tříd - základy

7 Jazyk UML (Unified Modeling Language)

TÉMATICKÝ OKRUH Softwarové inženýrství

Diagramy tříd - základy

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

20. Projekt Domácí mediotéka

8 Třídy, objekty, metody, předávání argumentů metod

Teoretické minimum z PJV

10 Balíčky, grafické znázornění tříd, základy zapozdření

7 Jazyk UML (Unified Modeling Language)

Profilová část maturitní zkoušky 2017/2018

IB111 Programování a algoritmizace. Objektově orientované programování (OOP)

11 Návrh programového vybavení

Abstraktní datové typy: zásobník

Algoritmizace, základy programování, VY_32_INOVACE_PRG_ALGO_01

UML. Unified Modeling Language. Součásti UML

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Analýza a Návrh. Analýza

Profilová část maturitní zkoušky 2013/2014

1/1 ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE PROVOZNĚ EKONOMICKÁ FAKULTA PŘIJÍMACÍ ŘÍZENÍ 2017/2018

IS pro podporu BOZP na FIT ČVUT

Výčtový typ strana 67

Informační systémy 2008/2009. Radim Farana. Obsah. UML - charakteristika

15. Projekt Kalkulačka

NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

7.6 Další diagramy UML

zapište obslužnou metodu události Click tlačítka a vyzkoušejte chování polevýsledek.text = polečíslo1.text + polečíslo2.text;

Programové konvence, dokumentace a ladění. Programování II 2. přednáška Alena Buchalcevová

7.6 Další diagramy UML

Aplikace je program určený pro uživatele. Aplikaci je možné rozdělit na části:

Centrální autentizační webový informační systém

Elektronická podpora výuky předmětu Komprese dat

Modelování informačních systémů s využitím jazyka UML. Jaroslav Šmarda

Návrh - návrhové třídy a vzory

UML a jeho použití v procesu vývoje. Jaroslav Žáček jaroslav.zacek@osu.cz

Principy UML. Clear View Training 2005 v2.2 1

Generické programování


Tvorba informačních systémů

Příklad : String txt1 = new String( Ahoj vsichni! ); //vytvoří instanci třídy String a přiřadí ji vnitřní hodnotu Ahoj vsichni!

Návrh aplikace. Project Westpon. Inteligentní simulátor budov. Martin Mudra, Jan Smejkal, Onřej Macoszek, Marek Žehra, Jiří Slivárich

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

Úvod do programovacích jazyků (Java)

ADT/ADS = abstraktní datové typy / struktury

Datové typy v Javě. Tomáš Pitner, upravil Marek Šabo

Struktura třídy, operátory, jednoduché algoritmy, junit. Programování II 2. cvičení Alena Buchalcevová

Klíčová slova: OOP, konstruktor, destruktor, třída, objekt, atribut, metoda

Principy objektově orientovaného programování

OOPR_05. Případové studie

Návrhové vzory. Jakub Klemsa, Jan Legerský. 30. října Objektově orientované programování.

1. Distribuce Javy. 2. Vlastnosti J2EE aplikace. 3. Fyzická architektura J2EE aplikace. Distribuce Javy se liší podle jejího zamýšleného použití:

Datové struktury. alg12 1

Seminář Java II p.1/43

Dědění, polymorfismus

Tvorba podnikových aplikací v jazyce JAVA. Josef Pavlíček KII PEF CZU

Úvod do programovacích jazyků (Java)

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320

PREPROCESOR POKRAČOVÁNÍ

UJO Framework. revoluční architektura beans. verze

Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth

Principy OOP při tvorbě aplikací v JEE. Michal Čejchan

První kapitola úvod do problematiky

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Programování v C++ 3, 3. cvičení

SOUBORY, VSTUPY A VÝSTUPY POKRAČOVÁNÍ

Základy objektové orientace I. Únor 2010

KMI / TMA Tvorba mobilních aplikací. 6. seminář ZS 2016/2017 Středa 13:15-15:45

Návrh IS - UML. Jaroslav Žáček

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

Vytváření a použití knihoven tříd

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo

Vývoj multiplatformní aplikace v Qt

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Návrh IS - UML. Jaroslav Žáček

Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39

Příloha 6. Palety nástrojů

IRAE 07/08 Přednáška č. 2. atr1 atr2. atr1 atr2 -33

Algoritmizace prostorových úloh

Vývoj informačních systémů. Přehled témat a úkolů

Infrastruktura UML. Modelování struktury v UML. Superstruktura UML. Notace objektů. Diagramy objektů

1. Dědičnost a polymorfismus

Architektury Informačních systémů. Jaroslav Žáček

Více o konstruktorech a destruktorech

Algoritmizace a programování

8. přednáška: Soubory a proudy

Funkční objekty v C++.

součet cvičení celkem. známka. Úloha č.: max. bodů: skut. bodů:

Vývoj informačních systémů. Přehled témat a úkolů

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Konstruktory a destruktory

Zápočtová úloha z předmětu KIV/ZSWI OBJEKTOVÝ NÁVRH APLIKACE

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Transkript:

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é y (dle zvoleného implementačního jazyka nebo s využitím obecných datových u), 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 + penezenka + rozvrh + Utils + diar Business vrstva aplikace datov eoperace + diar + menza + penezenka + rozvrh Datová vrstva 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). Datový Poznámky isnacteny boolean Udržuje informaci zda je jídelníček již načtený, nebo ne. jidelak Jidelnicek Jidelnicek který se vyparsuje ze stránek SUZ. getjidelnicek False Tato metoda bude vracet vyparsovaný jídelníček. Parser False Konstruktor třídy Parser. 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. Třída "Ukladac" Třída ukladač slouží k ukládání dat modulu do xml souboru. Obsahuje metody, které toto ukládání realizují. Datový Poznámky FILE String Soubor do kterého se bude modul ukládat. save False Tato metoda slouží k ukládání informací modulu do xml. 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. Datový Poznámky FILE 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 díáře v BL 2 hlavní třídy Kategorie - BarvaKat: int - JmenoKat: char + odstrankategorii(char) : void + vytvorkategorii(int, char) : void + zmenkategorii(boolean, char) : void - Delka: int - Den: int - Hodina: int - Kategorie: char - Mesic: int - Minuta: int - Nazev: char - Rok: int Udalost + 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 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 Jidelnicek - 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 Menza - 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 OblibenaJidla menza::uprav ator menza::parser - isnacteny: boolean - jidelak: Jidelnicek menza::ukladac - FILE: String = modulmenza.xml {readonly} + getjidelnicek() : Jidelnicek + Parser() - ziskatjidelnicek() : void + 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. Datový Poznámky hlavnijidlo Jidlo Hlavní jídlo dne menza Menza Informace o mezne pro kterou daný jídelníček platí. moucnik Jidlo Moučník na jídelníčku.

Model Specification Page: 9 Datový Poznámky polevka Jidlo Polévka v denní nabídce gethlavnijidlo False Vrátí hlavní jídlo na jídelníčku. getmenza False Vrátí instanci třídy Menza, která obsahuje informace o menze, pro kterou platí danný jídelníček. getmoucnik False Vrátí moučník z jídelníčku. getpolevka False Vrátí instanci třídy Jidlo obsahující informace o polévce z jídelníčku Jidelnicek False Kontruktor třídy Jidelnicek hlavnijidlo: Jidlo polevka: Jidlo moucnik: Jidlo menza: Menza sethlavnijidlo False Nastaví hlavní jídlo jídelníčku. hlavnijidlo: Jidlo setmenza False Nastaví menzu menza: Menza setmoucnik False Nastaví moučník na jídelníčku moucnik: Jidlo setpolevka False Nastaví polévku na jídelníčku. polevka: Jidlo

Model Specification Page: 10 Třída "Jidlo" Instance této třídy obsahuje informace o jednotlivých jídlech Datový Poznámky cena int Cena jídla. hmotnost int Hmotnost jídla. jeoblibene boolean Informace zda je jídlo oblíbené. jmenojidla String Jméno jídla. getcena False Tato metoda vrací cenu jídla gethmotnost False Tato metoda vrací hmotnost jídla getjmenojidla False Tato metoda vrací jméno jídla isoblibene False Tato metoda vrací informaci zda je jídlo oblíbené Jidlo False Konstruktor třídy Jidlo. hmotnost: int jmenojidla: String jeoblibene: boolean cena: int setcena False Tato metoda nastavuje cenu jídla cena: int sethmotnost False Tato metoda nastavuje hmotnost jídla. hmotnost: int setjeoblibene False Tato metoda nastavuje zda je jídlo oblíbené jeoblibene: boolean

Model Specification Page: 11 setjmenojidla False Tato metoda nastavuje jméno jídla jmenojidla: String Třída "Menza" Tato třída slouží pro popis jednotlivých menz. Datový Poznámky adresa String Adresa menzy nazev String Název menzy provoznidoba String Doba kdy je menza otevřená getadresa False Tato metoda vrací adresu menzy getnazev False Tato metoda vrací název menzy getprovoznidoba False Tato metoda vrací provozni dobu menzy Menza False Konstruktor třídy Menza adresa: String nazev: String provoznidoba: String setadresa False Tato metoda nastavuje adresu menzy. adresa: String setnazev False Tato metoda nastavuje název menzy. nazev: String setprovoznidoba False Tato metoda nastavuje provozni dobu menzy. provoznidoba: String

Model Specification Page: 12 Návratový 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 - alert: int = 0 - sum: int Penezenka «column» - polozky: List<Polozka> + getsum() : int + odeberobserver(hlidac) : void + odeberpolozku(polozka) : void + pridejobserver(hlidac) : void + pridejpolozku(polozka) : void + setalert(int) : void + upozorniobserver() : void + vratpolozky() : List Polozka - 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 Obrázek: 5

Model Specification Page: 13 Třída "Penezenka" Hlavní třída modulu s peněženkou Datový Poznámky alert int Obsahuje stav konta, při kterém dojde k upozornění, že je něco v nepořádku. polozky List<Polozka> V tomto atributu jsou drženy veškeré operace peněženky sum int Obsahuje stav konta getsum False Vrátí stav účtu studenta odeberobserver False vymaže hlídače změn h: Hlidac odeberpolozku False Odebere položku ze seznamu p: Polozka pridejobserver False Přidá hlídače změn h: Hlidac pridejpolozku False Přidá položku do seznamu p: Polozka setalert False Nastaví hodnotu, při které bude peněženka upozorňovat, že je stuent u dna. a: int upozorniobserver False Upozorní hlídače změn, že se v jeho vnitřních stavech udála změna vratpolozky False Vrací List položek peněženky.

Model Specification Page: 14 Třída "Polozka" Třída reprezentuje jednotlivou položku v peněžence Datový Poznámky cena int Jednotlivá položka vyjádřena hodnotou opakovani char Znak, podle kterého se bude rozhodovat, jestli se položka účtuje opakovaně - týdně, měsíčně, denně - nebo se jedná o jednorázovou věc popis String Slovní popis položky uctovacidatum Date Datum, kdy byla položka zaúčtována Polozka False Konstruktor vytvářející novou položku c: int p: String d: Date o: char setcena False úprava atributu c: int setopakovani False úprava atributu o: char setpopis False úprava atributu p: String setuctovanidatum False úprava atributu d: Date tostring False Pro získání textové podoby položky

Model Specification Page: 15 Balíček "rozvrh" class rozv... - rozvrh: int Rozv rh + poppolozku(int, int) : void + Rozvrh() : void + setpolozku(polozka) : void Polozka - den: int - hodina: int - predmet: Predmet - tyden: char - ucebna: Ucebna - vyucujici: Vyucujici + Polozka() : void Predmet - jmeno: int - kodpredmetu: int + Predmet() : void Ucebna - kod: int - umisteni: int + setumisteni(string) : void + Ucebna(String) : void Vyucuj ici - email: int - jmeno: int + 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). Datový Poznámky den int Den kdy je predmet v rozvrhu. hodina int Hodina, kdy ma byt položka v rozvrhu. predmet Predmet Predmet, ke kterému se položka váže. tyden char Sudý, nebo lichí. ucebna Ucebna Ucebna, ve které daný predmet probíhá. vyucujici Vyucujici Vyucující, který má danou hodinu na starosti. Polozka False Konstruktor. Třída "Predmet" Trída která sdružuje informace, prípadné schopnosti premetu. Datový Poznámky jmeno int Jméno predmetu. kodpredmetu int Originalni kód predmetu. Predmet False Konstruktor. Třída "Rozvrh" Uchovává strukturu všech předmětů zapsaných v rozvrhu. Datový Poznámky rozvrh int Pole ukazatelu na jednotlivé položky rozvrhu. poppolozku Návratový False Poznámky Rozvrh False Inicializace pole.

Model Specification Page: 17 setpolozku False Zaradí položku do rozvrhu na správné místo. polozka: Polozka Třída "Ucebna" Třída, která uchovává data o učebne. Datový Poznámky kod int Kód ucebny tak, jak je v rozvrhu. umisteni int Presné umístení ucebny. setumisteni False Dodatečné nastavení umístení učebny, srozumitelné studentovi. umisteni: String Ucebna False konstruktor kod: String Třída "Vyucujici" Trída prechovávající informace o vyucujícím. Datový Poznámky email int jmeno int setemail False Přidá k položce email, který se neinicializuje v konstruktoru, protože není obsažen v html rozvrhu z kosu. Vyucujici False Konstruktor obektu položka.

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 «jar soubor» AplikaceStudentsLife JRE 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.