Diagramy klas

Diagramy klas to najczęstszy typ diagramów UML, służący do modelowania statycznej struktury systemu poprzez pokazywanie klas, ich atrybutów, operacji i relacji.

Tworzenie klas

Za pomocą narzędzia Klasa

Na stronie UML Class Diagram naciśnij U lub wybierz Klasa z menu UML na pasku narzędzi. Kliknij na płótnie, aby umieścić pole klasy, lub przeciągnij, aby ustawić jego rozmiar. Naciśnij Return przy zaznaczonej klasie, aby zmienić jej nazwę.

Struktura pola klasy

Pole klasy UML składa się z trzech sekcji:

  1. Sekcja nazwy - zawiera nazwę klasy i opcjonalny stereotyp
  2. Sekcja atrybutów - wyświetla listę właściwości/pól klasy
  3. Sekcja operacji - wyświetla listę metod/funkcji klasy

Właściwości klasy

Zaznacz klasę i użyj zakładki Rozmieść Inspektora → sekcja UML, aby skonfigurować jej właściwości:

Nazwa

Nazwa klasy pojawia się pogrubionym drukiem w górnej sekcji. Konwencja nakazuje stosowanie PascalCase (np. CustomerOrder).

Stereotyp

Opcjonalny klasyfikator wyświetlany nad nazwą klasy w nawiasach kątowych:

  • <<interface>> - dla definicji interfejsów
  • <<abstract>> - dla klas abstrakcyjnych
  • <<enumeration>> - dla typów wyliczeniowych
  • <<entity>> - dla encji domenowych
  • Niestandardowe stereotypy są również obsługiwane

Abstrakcyjna

Przełącznik do renderowania nazwy klasy kursywą, wskazując klasę abstrakcyjną.

Ograniczone skalowanie

Po włączeniu (domyślnie) zmiana rozmiaru zachowuje proporcje pola klasy.

Atrybuty

Atrybuty reprezentują dane/właściwości klasy.

Dodawanie atrybutów

  1. Zaznacz klasę
  2. W sekcji UML znajdź Atrybuty — wieloliniowy edytor z jednym atrybutem w każdej linii
  3. Kliknij + (lub naciśnij Cmd+L), aby dodać nowy atrybut, a następnie wpisz jego szczegóły

Składnia atrybutu

Atrybuty mają następujący format: widoczność nazwa : typ

Modyfikatory widoczności:

SymbolZnaczenieOpis
+PublicDostępny z dowolnego miejsca
-PrivateDostępny tylko wewnątrz klasy
#ProtectedDostępny w klasie i podklasach
~PackageDostępny w tym samym pakiecie

Przykłady:

  • -id: Int - Prywatny identyfikator całkowity
  • +name: String - Publiczna nazwa typu String
  • #createdAt: Date - Chronione pole daty
  • ~cache: Map<String, Any> - Pakietowo-prywatna pamięć podręczna

Operacje

Operacje reprezentują zachowanie/metody klasy.

Dodawanie operacji

  1. Zaznacz klasę
  2. W sekcji UML znajdź Operacje — wieloliniowy edytor z jedną operacją w każdej linii
  3. Kliknij + (lub naciśnij Shift+Cmd+L), aby dodać nową operację, a następnie wpisz jej szczegóły

Składnia operacji

Operacje mają następujący format: widoczność nazwa(parametry) : typZwracany

Przykłady:

  • +getName(): String - Publiczny getter zwracający String
  • -validate(input: String): Boolean - Prywatna metoda walidacji
  • +process(data: Data, options: Options): Result - Metoda z wieloma parametrami
  • +save(): void - Metoda bez wartości zwracanej

Relacje

Naciśnij R, aby aktywować narzędzie Relacja, a następnie przeciągnij z jednej klasy do drugiej, aby utworzyć połączenie.

Typy relacji

TypStyl liniiStrzałkaZastosowanie
AsocjacjaLinia ciągłaOtwarta strzałkaOgólna relacja
ZależnośćLinia przerywanaOtwarta strzałkaRelacja „używa”
DziedziczenieLinia ciągłaPusty trójkątRelacja „jest” (rozszerzanie)
RealizacjaLinia przerywanaPusty trójkątImplementacja interfejsu
AgregacjaLinia ciągłaPusty romb„Posiada” (słaba własność)
KompozycjaLinia ciągłaWypełniony romb„Posiada” (silna własność)

Tworzenie relacji

  1. Naciśnij R, aby aktywować narzędzie Relacja
  2. Kliknij klasę źródłową
  3. Przeciągnij do klasy docelowej
  4. Puść, aby utworzyć połączenie
  5. Użyj sekcji UML Inspektora, aby ustawić Typ relacji — styl linii i groty strzałek podążają za typem

Etykiety relacji

Zaznacz relację i ustaw jej etykiety w sekcji UML Inspektora:

  • Etykieta - opisuje relację (np. „zarządza”, „zawiera”)
  • Krotność - wartości Źródło i Cel wskazujące liczbę wystąpień (np. „1”, „0..”, „1..”)

Dobre praktyki

  1. Zachowaj prostotę - nie próbuj modelować wszystkiego; skup się na kluczowych klasach
  2. Używaj stereotypów - wyraźnie oznaczaj interfejsy i klasy abstrakcyjne
  3. Pokazuj kluczowe relacje - nie każda asocjacja musi być widoczna
  4. Spójne nazewnictwo - używaj PascalCase dla klas, camelCase dla członków
  5. Grupuj powiązane klasy - używaj bliskości wizualnej do pokazania logicznych grup