Konečný automat - SW komponenta pro Delphi Vedoucí: Luděk Marek, KSI MFF UK marek@ksi.ms.mff.cuni.cz Cíl: Výsledkem bude SW komponenta pro Delphi, která implementuje uživatelem definované konečné automaty. Automat může být definován buď v době návrhu aplikace pomocí grafického editoru, nebo za běhu načtením z nějakého datového formátu, nebo programově. Grafický editor musí umožňovat tvorbu stavových diagramů UML (state charts), včetně nastavení akcí prováděných při vstupu/výstupu do/ze stavu a při započetí/ukončení přechodu. Dále by měla být možnost ověřování platnosti zadaných podmínek ve stavech a při jejich nesplnění vyvolání výjimky. Komponenta bude mít definované rozhraní, pomocí něhož bude možné vyvolat přechod z jednoho stavu do jiného. Takový přechod způsobí provedení operací s přechodem asociovaných. Přiklad použití: Je potřeba implementovat okno, které bude zobrazovat údaje o registrovaném zákazníkovi. Okno musí dovolit změny v údajích až po stisknutí tlačítka "Edit". Pokud jsou údaje právě opravovány, nelze okno uzavřít, je nutné buď změny potvrdit (tlačítko "Save") nebo zrušit (tlačítko "Cancel"). Při běžné implementaci musí programátor "ručně" definovat stavy okna, zajistit možné přechody mezi nimi a eventuelně povolovat/zakazovat práci tlačítek (pokud nebylo stisknuto tlačítko "Edit", nelze stisnkout "Save" a "Cancel"). Tato struktura je špatně modifikovatelná v situaci, kdy dojde k přidání/odebrání stavu. Použitím komponenty by: - odpadla nutnost definovat vnitřní stavy ve zdrojovém kódu - vytvoření automatu by byla záležitost kreslení v editoru, ne programování - nakreslený diagram by byl snadno modifikovatelný - v programu byly pouze žádosti o přechod mezi stavy, ověřování možnosti takového přechodu by zajišťovala komponenta. Jednotlivé části projektu: - vnitřní (programová) reprezentace stavového automatu - způsob uložení automatu do souboru (formát dat, např. XML) - textový editor (např. jako matice sousednosti) - grafický editor (UML) - zapouzdření editorů do komponenty - nápověda pro vývojáře - demo aplikace Možná rozšíření: - načítání diagramů z CASE nástrojů - verifikace automatu - vyhledávání nedosažitelných stavů, ověření zda automat přijme zadanou posloupnost událostí (scénář) Požadavky na studenty Schopnost pracovat v prostředí Delphi. Nebude čas učit se Delphi od začátku. Znalost tvorby komponent není nutná. Doba trvání: 1 rok Počet studentů: 4 Platforma: Delphi 5