Kreslítko Petr Diviš Zdeněk Papež
Úvod - připomenutí Desktopová („stand-alone“) aplikace Jednoduchý grafický editor Tvorba a editace základních geometrických objektů Možnost seskupování objektů Možnost práce s pořadím v ose Z
Verze 1 Standardní MVC architektura Hlavní okno obsahuje panely, které mají společný model a controller
Verze 2 Architektura PAC (Presentation-abstraction-control) Někdy také ve variantě hierarchického MVC (P-A nejsou oddělené) Aplikaci tvoří samostatná okna Každé okno má vlastní architekturu podobnou MVC View = Presentation Model = Abstraction Ale jsou oddělené
Scénáře - opraveno Editace objektu 1. Uživatel na ploše vybere objekt 2. Uživatel objekt přesune 3. Uživatel změní velikost objektu 4. Uživatel zruší označení 5. Uživatel vybere objekt 6. Uživatel smaže označený objekt Seskupování objektů 1. Uživatel na ploše vybere několik objektů 2. Uživatel z označených objektů vytvoří novou skupinu objektů 3. Uživatel skupinu objektů přesune 4. Uživatel změní velikost skupiny objektů 5. Uživatel zruší označení 6. Uživatel vybere skupinu objektů 7. Uživatel smaže označenou skupinu objektů
Component diagram
Sekvenční diagram MVC - přidání tvaru na plochu
Sekvenční diagram PAC – přidání tvaru na plochu
Sekvenční diagram PAC – zprávy po přidání tvaru
Kvantitativní hodnocení Velikost kódu MVC – 19 tříd PAC – 36 tříd Funkcionalita je totožná! Rozšiřitelnost Pokud chceme přidat nový panel: MVC Nový panel bude pravděpodobně sledovat i upravovat model Musíme znát stávající model Musíme znát zprávy, které model observerům posílá PAC přidáme nového agenta s vlastním modelem (abstraction), kterou si bude upravovat na základě přijímaných událostí Musíme znát typy událostí, které se posílají
Srovnání MVCPAC ŠkálovatelnostŠpatnáVýborná RozšiřitelnostŠpatnáDobrá PortabilitaDobrá Low CouplingHoršíLepší High CohesionHoršíLepší Možnost budování hierarchické strukturyNeAno
Vyhodnocení Obě architektury se hodí pro jiné obsáhlejší projekty Snažili jsme se demonstrovat rozdíly MVC a PAC PAC - Modularita MVC - Celistvost Obě architektury dobře oddělují model od uživatelského rozhraní a logiky aplikace Možnost oddělené implementace PAC striktně odděluje Presentation od Control MVC často degraduje a spojuje View s Controlerem
Děkujeme za pozornost