Diagram pakietów

  • W miarę wzrostu wielkości modelowanego systemu, rośnie liczba wykorzystywanych elementów (klas, interfejsów, komponentów...)
  • Można grupować modelowane byty w pakietach.
  • Dobrze zaprojektowane pakiety składają się z podobnych znaczeniowo i razem zmieniających się bytów. Są luźno powiązane ze sobą, ale silnie spójne wewnętrznie.
  • Dostęp do zawartości pakietów jest kontrolowany
  • Reprezentacja graficzna pakietu (Nazwa pakietu (może teżbyć napisana na zakładce):

Zawartość pakietów

Widoczność składniki: + publiczny, - prywatny

Odwołanie do składnika pakietu:

klient::FormularzZamowienia
klient::składnik::składnikWewn...




Składnikami pakietu mogą być różne elementy, przykładowo:

  • klasy
  • interfejsy
  • operacje
  • przypadki użycia
  • diagramy
  • inne pakiety
  • komponenty
  • ....
  • lecz najczęściej są to klasy

Widoczność elementów pakietów

Jeśli umieścimy klasy A i B w dwu różnych pakietach to odwołania powinny mieć następującą postać:

Pakiet1::KlasaA oraz Pakiet2::KlasaB



Powiązania pakietów

Aby uprościć dostęp należy powiązać pakiety zależnością: << import >>, << access >> lub << merge >>

<< import >> umożliwia dostęp w klasie źródła do zawartości klasy celu (w Pakiecie1 można teraz używać klasy B bez podawania ścieżki). Odpowiada dziedziczeniu publicznemu (następny import przejmie też klasę B).

<< access >> podobnie, ale jak dziedziczenie prywatne (następny import nie umożliwi już dostępu do klasy B)

Zależności << merge >> powoduje przyłączenie zawartości klasy docelowej z zachowaniem określonej listy reguł. W praktycznym modelowaniu mało użyteczne i rzadko używane




Powiązania pakietów uogólnienia

Dziedziczenie pakietów jest podobne do dziedziczenia klas.


Pakiet szczegółowy WindowsGUI może się pojawiać wszędzie tam, gdzie pakiet ogólny GUI. Jeśli pakiet zawiera klasy abstrakcyjne, można użyć stereotypu << abstract >>

Podsumowanie

Diagramy pakietów (ang. package diagrams) służą do modelowania fizycznego i logicznego podziału systemu. Pakiety są elementem strukturalizującym elementy UML i służą do grupowania ich według dowolnego kryterium. W pakiecie można umieścić praktycznie dowolne elementy: klasy, komponenty, przypadki użycia, a także inne pakiety. W ten sposób przedstawiają one drzewiastą strukturę elementów modelu.

Pakiety doskonale nadają się do wizualizacji podstawowych zależności pomiędzy częściami systemu, dzięki czemu łatwo ocenić jakość i stopień powiązań pomiędzy nimi. Dobra struktura pakietów, w której zależności są jasno uporządkowane oraz nie występują (lub występują tylko na niskim poziomie) zależności cykliczne, wspiera późniejszą rozbudowę systemu. W szczególności przydają się w dużych aplikacjach, podzielonych na wiele podsystemów, ponieważ w prosty sposób obrazują podstawowe zależności pomiędzy nimi.

Pakiet tworzy także jednostkę hermetyzacji: elementy z pakietu odwołują się do elementów zewnętrznych posługując się ich pełnymi kwalifikowanymi (zawierającymi nazwy pakietów) nazwami, zgodnie z ich zakresem widoczności, natomiast wewnątrz pakietu elementy mogą odwoływać się do siebie bezpośrednio.

Elementy wewnątrz pakietu mogą mieć jeden z dwóch poziomów widoczności: prywatny lub publiczny. Elementy publiczne są widziane i mogą być użyte poza własnym pakietem, natomiast prywatne - nie. Aby elementy pakietu mogły odwołać się do elementów prywatnych z innego pakietu, muszą go importować. Oznacza to, że elementy te stają się dla importującego pakietu widoczne. Import pakietu oznaczany jest zależnością ze słowem kluczowym << import >>.

Przykład diagramu pakietów - Aukcja internetowa



Diagram pakietów