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 klasy

Naciśnij A lub C, aby aktywować narzędzie klasy, a następnie kliknij gdziekolwiek na obszarze roboczym, aby umieścić nowe pole klasy.

Pusty obszar roboczy z narzędziem klasy

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

Struktura pola klasy

Właściwości klasy

Zaznacz klasę i użyj panelu Inspektora do konfiguracji 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ą.

Inspektor klasy

Atrybuty

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

Dodawanie atrybutów

  1. Zaznacz klasę
  2. W Inspektorze znajdź sekcję Attributes
  3. Kliknij przycisk +, aby dodać nowy atrybut
  4. Wprowadź szczegóły atrybutu

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 Inspektorze znajdź sekcję Operations
  3. Kliknij przycisk +, aby dodać nową operację
  4. Wprowadź szczegóły operacji

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 relacji, 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ść)

Relacje klas

Tworzenie relacji

  1. Naciśnij R, aby aktywować narzędzie relacji
  2. Kliknij na klasę źródłową
  3. Przeciągnij do klasy docelowej
  4. Puść, aby utworzyć połączenie
  5. Użyj Inspektora, aby zmienić typ relacji i groty strzałek

Etykiety relacji

Kliknij dwukrotnie na linię relacji, aby dodać etykiety:

  • Nazwa - Opisuje relację (np. „zarządza", „zawiera")
  • Krotność - Wskazuje liczbę wystąpień (np. „1", „0..*", „1..n")
  • Nazwy ról - Etykiety na każdym końcu opisujące rolę

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