Czym jest diagram klas?
UML Diagram klas jest graficzną notacją używaną do konstruowania i wizualizacji systemów obiektowych. Diagram klas w Zjednoczonym Języku Modelowania (UML) jest rodzajem diagramu statycznej struktury, który opisuje strukturę systemu, pokazując:
- klasy,
- ich atrybuty (lub właściwości),
- operacje (lub metody),
- oraz relacje między obiektami.
Czym jest klasa?
Klasa jest szablonem dla obiektu. Obiekty i klasy idą w parze. Nie możemy mówić o jednym, nie mówiąc o drugim. Cały sens projektowania obiektowego nie dotyczy obiektów, lecz klas, ponieważ używamy klas do tworzenia obiektów. Klasa opisuje, czym będzie obiekt, ale nie jest samym obiektem.
W rzeczywistości klasy opisują typ obiektów, podczas gdy obiekty są użytecznymi instancjami klas. Każdy obiekt został zbudowany z tego samego zestawu szablonów i dlatego zawiera te same komponenty (właściwości i metody). Standardowe znaczenie to, że obiekt jest instancją klasy, a obiekty mają stany i zachowania.
Przykład
Pies ma stany — kolor, imię, rasę, a także zachowania – machanie, szczekanie, jedzenie. Obiekt jest instancją klasy.

Notacja klas UML
Klasa reprezentuje pojęcie, które enkapsuluje stan (atrybuty) i zachowanie (operacje). Każdy atrybut ma typ. Każda operacja ma podpis. Nazwa klasy to jedyna obowiązkowa informacja.

Nazwa klasy:
- Nazwa klasy pojawia się w pierwszej sekcji.
Atrybuty klasy:
- Atrybuty są pokazane w drugiej sekcji.
- Typ atrybutu jest pokazany po dwukropku.
- Atrybuty odpowiadają zmiennym członkowskim (danym członkom) w kodzie.
Operacje klasy (metody):
- Operacje są pokazane w trzeciej sekcji. Są to usługi, które klasa oferuje.
- Typ zwracany metody jest pokazany po dwukropku na końcu podpisu metody.
- Typ zwracany parametrów metody jest pokazany po dwukropku następującym po nazwie parametru. Operacje odpowiadają metodom klasy w kodzie.

Widoczność klasy
Symbole +, — i # przed nazwą atrybutu i operacji w klasie oznaczają widoczność atrybutu i operacji.

- + oznacza publiczne atrybuty lub operacje
- – oznacza prywatne atrybuty lub operacje
- # oznacza chronione atrybuty lub operacje
Kierunkowość parametrów
Każdy parametr w operacji (metodzie) może być oznaczony jako in, out lub inout który określa jego kierunek w odniesieniu do wywołującego. Ten kierunek jest pokazany przed nazwą parametru.

Perspektywy diagramu klas
Wybór perspektywy zależy od tego, na jakim etapie jesteś w procesie rozwoju. Podczas formułowania modelu domeny, na przykład, rzadko przechodziłbyś dalej niż perspektywa koncepcyjna. Modele analizy zazwyczaj będą zawierać mieszankę perspektyw koncepcyjnych i specyfikacyjnychModel projektowy rozwój zazwyczaj zacznie się z dużym naciskiem na perspektywę specyfikacyjną, a następnie ewoluować w kierunku perspektywy implementacji.
Diagram można interpretować z różnych perspektyw:
- Koncepcyjna: reprezentuje koncepcje w domenie
- Specyfikacja: skupia się na interfejsach Abstrakcyjnego Typu Danych (ADT) w oprogramowaniu
- Implementacja: opisuje, jak klasy będą implementować swoje interfejsy
Perspektywa wpływa na ilość szczegółów, które należy dostarczyć, oraz rodzaje relacji, które warto przedstawić. Jak wspomniano powyżej, nazwa klasy jest jedyną obowiązkową informacją.

Diagram klas jest centralną techniką modelowania, która występuje w prawie wszystkich metodach obiektowych. Ten diagram opisuje typy obiektów w systemie oraz różne rodzaje statycznych relacji, które istnieją między nimi.
Relacje
Istnieją trzy główne rodzaje relacji, które są ważne:
- Asocjacja — reprezentuje relacje między instancjami typów (osoba pracuje dla firmy, firma ma wiele biur.
- Dziedziczenie — najbardziej oczywiste uzupełnienie diagramów ER do użycia w OO. Ma bezpośrednie odniesienie do dziedziczenia w projektowaniu OO.
- Agregacja — Agregacja, forma kompozycji obiektów w projektowaniu obiektowym.

Przykład diagramu klas: GUI
Diagram klas może również mieć notatki dołączone do klas lub relacji.

Darmowe narzędzie do UML
W tym artykule przedstawiam dwa narzędzia UML:
- Visual Paradigm Community Edition (DARMOWA) to narzędzie UML na komputer stacjonarny z możliwościami modelowania funkcji. (możliwa aktualizacja do wersji komercyjnych)
- Visual Paradigm Online do ogólnego UML i innych rysunków diagramów.
30 przykładów diagramów klas
- Darmowe przykłady diagramów klas i szablony edytowalne w internetowym oprogramowaniu do diagramów klas: Visual Paradigm Online.
- Użyj szablonów jako punktu wyjścia do stworzenia własnego diagramu klas.
- (Kliknij, aby natychmiast edytować przykłady diagramów klas)
Dla Twojej wygody, poniższe przykłady są skonfigurowane w Visual Paradigm Online. Możesz je wypróbować od razu bez konfiguracji lub instalacji, baw się dobrze!

Sieć LAN oparta na pierścieniu tokenowym



Wyjście plikowe (użycie generalizacji)



Wzorce projektowe GoF — Flyweight

Wzorce projektowe GoF — Facade

Wzorce projektowe GoF — Decorator

Wzorce projektowe GoF — Composite

Wzorce projektowe GoF — Bridge

Wzorce projektowe GoF — Adapter

Wzorce projektowe GoF — Singleton

Wzorce projektowe GoF — Prototype

Wzorce projektowe GoF — Factory Method

Wzorce projektowe GoF — Builder

Wzorce projektowe GoF — Abstract Factory

Wzorce projektowe GoF — Visitor

Wzorce projektowe GoF — Template Method

Wzorce projektowe GoF — Strategy


Wzorce projektowe GoF — Observer

Wzorce projektowe GoF — Memento

Wzorce projektowe GoF — Mediator

Wzorce projektowe GoF — Iterator

Wzorce projektowe GoF — Interpreter

Wzorce projektowe GoF — Command

Wzorce projektowe GoF — Chain of Responsibility

Diagram klas — Proces zamówienia

Diagram klas — Ograniczenia klas i pakietów

Diagram klas — Klasa w pakiecie (Linia lotnicza)



Klasa asocjacyjna i asocjacja własna



Inne polecane lektury
Ten post dostępny jest również w Deutsch, English, Español, فارسی, Français, Bahasa Indonesia, 日本語, Portuguese, Ру́сский, Việt Nam, 简体中文 and 繁體中文