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:
- 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 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
- Zaznacz klasę
- W sekcji UML znajdź Atrybuty — wieloliniowy edytor z jednym atrybutem w każdej linii
- 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:
| 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 sekcji UML znajdź Operacje — wieloliniowy edytor z jedną operacją w każdej linii
- 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
| 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 Relacja - Kliknij klasę źródłową
- Przeciągnij do klasy docelowej
- Puść, aby utworzyć połączenie
- 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
- 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