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.

Struktura pola klasy
Pole klasy UML składa się z trzech sekcji:
- Sekcja nazwy - Zawiera nazwę klasy i opcjonalny stereotyp
- Sekcja atrybutów - Wyświetla listę właściwości/pól klasy
- Sekcja operacji - Wyświetla listę metod/funkcji 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ą.

Atrybuty
Atrybuty reprezentują dane/właściwości klasy.
Dodawanie atrybutów
- Zaznacz klasę
- W Inspektorze znajdź sekcję Attributes
- Kliknij przycisk
+, aby dodać nowy atrybut - Wprowadź szczegóły atrybutu
Składnia atrybutu
Atrybuty mają następujący format: widoczność nazwa : typ
Modyfikatory widoczności:
| Symbol | Znaczenie | Opis |
|---|---|---|
+ | Public | Dostępny z dowolnego miejsca |
- | Private | Dostępny tylko wewnątrz klasy |
# | Protected | Dostępny w klasie i podklasach |
~ | Package | Dostę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
- Zaznacz klasę
- W Inspektorze znajdź sekcję Operations
- Kliknij przycisk
+, aby dodać nową operację - 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
| Typ | Styl linii | Strzałka | Zastosowanie |
|---|---|---|---|
| Asocjacja | Linia ciągła | Otwarta strzałka | Ogólna relacja |
| Zależność | Linia przerywana | Otwarta strzałka | Relacja „używa" |
| Dziedziczenie | Linia ciągła | Pusty trójkąt | Relacja „jest" (rozszerzanie) |
| Realizacja | Linia przerywana | Pusty trójkąt | Implementacja interfejsu |
| Agregacja | Linia ciągła | Pusty romb | „Posiada" (słaba własność) |
| Kompozycja | Linia ciągła | Wypełniony romb | „Posiada" (silna własność) |

Tworzenie relacji
- Naciśnij
R, aby aktywować narzędzie relacji - Kliknij na klasę źródłową
- Przeciągnij do klasy docelowej
- Puść, aby utworzyć połączenie
- 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
- Zachowaj prostotę - Nie próbuj modelować wszystkiego; skup się na kluczowych klasach
- Używaj stereotypów - Wyraźnie oznaczaj interfejsy i klasy abstrakcyjne
- Pokazuj kluczowe relacje - Nie każda asocjacja musi być widoczna
- Spójne nazewnictwo - Używaj PascalCase dla klas, camelCase dla członków
- Grupuj powiązane klasy - Używaj bliskości wizualnej do pokazania logicznych grup