98
DESTILOVANÉ UML
Obrázek 7.2: Diagram balíčků pro podnikovou aplikaci
možná budeme muset změnit třídy uvnitř balíčku doména leasingu. Avšak tato změna nevede nevyhnutelně k dominovému přenosu do prezentace leasingu. (Přenos nastane jen tehdy, pokud se změní rozhraní balíčku doména leasingu.) Některé balíčky jsou používány na tolika místech, že by zakreslení všech závislostí bylo nepřehledné. V tomto případě existuje konvence: na balíčku použijte klíčové slovo, např. «global». Balíčky UML také slouží jako konstrukt, který umožňuje importování a slučování tříd z jednoho balíčku do druhého. To se vyjadřuje pomocí závislosti s klíčovým slovem. Nicméně pravidla pro takovéto záležitosti se v jednotlivých programovacích jazycích značně odlišují. Celkem vzato, mně osobně připadá pro praxi daleko užitečnější hlavní význam závislostí.
7.2 Pohledy v balíčcích Budete-li přemýšlet o obrázku 7.2, uvědomíte si, že diagram má dva druhy struktur. První druh je struktura vrstev v aplikaci: prezentace, doména, mapování dat a databáze. Druhý je struktura věcných oblastí: leasing a aktiva. To můžete zvýraznit oddělením obou pohledů, jak je tomu na obrázku 7.3. Zde jasně vidíme každý z pohledů. Avšak tyto dva pohledy netvoří opravdové balíčky, protože nemůžete přiřazovat třídy k jedinému balíčku. (Museli byste si vybrat po jednom balíčku z každého pohledu.) Tento problém zrcadlí problém hierarchických jmenných prostorů programovacích jazyků. Ačkoli diagramy jako na obrázku 7.3 nejsou v UML standardní, jsou často velmi užitečné při objasňování struktury komplexní aplikace.
7.3 Implementace balíčků Často se setkáte s případem, kdy jeden balíček definuje rozhraní, jež může být implementováno řadou dalších balíčků, jako je tomu na obrázku 7.4. V tomto případě vztah realizace naznačuje, že brána databáze definuje rozhraní, které třídy jiných bran implementují.
7. Diagramy balíčků
Ukázka elektronické knihy, UID: KOS273660
99 7. Diagramy balíčků
DESTILOVANÉ UML
Obrázek 7.3: Rozdělení obrázku 7.2 do dvou pohledů
V praxi by to znamenalo, že balíček brána databáze obsahuje rozhraní a abstraktní třídy, které jsou plně implementovány jinými balíčky. Je docela běžné, že rozhraní a jeho implementace jsou v separátních balíčcích. Klientský balíček často obsahuje rozhraní, které musí implementovat jiný balíček: jde o stejnou představu jako u požadovaného rozhraní, které jsem diskutoval na stránce 81. Představte si, že chcete poskytovat nějaké uživatelské rozhraní (User Interface – UI), které bude zapínat a vypínat nějaký spínač. Chcete, aby to vše fungovalo s mnoha různými spínači, jako např. se spínači topidel a světel. Ovládací prvky UI musí být schopny spouštět metody topidla, ale nechcete, aby tyto prvky byly na topidlu závislé. Těmto závislostem se můžete vyhnout definováním rozhraní v balíčku ovládací prvky a toto rozhraní pak implementovat každou třídou, která chce s těmito ovládacími prvky pracovat, jak můžete vidět na obrázku 7.5. Toto je vlastně příklad vzoru oddělené rozhraní (Separated Interface – popsaného v knize Martina Fowlera, Patterns of Enterprise Application Architecture, vydané nakladatelstvím Addison-Wesley v roce 2003).
�
Obrázek 7.4: Balíčky implementované jinými balíčky
7.3 Implementace balíčků
Ukázka elektronické knihy, UID: KOS273660
100
DESTILOVANÉ UML
Obrázek 7.5: Definice požadovaného rozhraní v klientském balíčku
7.4 Kdy použít diagramy balíčků Diagramy balíčků shledávám jako nesmírně užitečné v rozsáhlých systémech, protože umožňují udělat si představu o závislostech mezi hlavními prvky systému. Tyto diagramy dobře odpovídají běžným programovacím strukturám. Grafické zobrazení diagramů balíčků a závislostí vám pomůže udržet závislosti v aplikaci pod kontrolou. Diagramy balíčků představují mechanizmus seskupování v okamžiku překladu. Pro zobrazení toho, jak jsou objekty skládány za běhu programu, použijte diagram složených struktur (viz stránka 131).
7.5 Kde hledat více Nejlepším pojednáním zabývajícím se balíčky a jejich použitím, které znám, je kniha Roberta Cecila Martina, The Principles, Patterns, and Practices of Agile Software Development, vydaná v nakladatelství Prentice-Hall v roce 2003. Autor byl dlouho téměř chorobně posedlý závislostmi a pěkně píše o tom, jak se závislostmi zacházet, jak je řídit a jak je minimalizovat.
7. Diagramy balíčků
Ukázka elektronické knihy