logo

Schemat klas | Ujednolicony język modelowania (UML)

Diagramy klas są rodzajem UML-a (Unified Modeling Language) diagram używany w inżynierii oprogramowania do wizualnego przedstawiania struktury i relacji klas w systemie. UML to ustandaryzowany język modelowania, który pomaga w projektowaniu i dokumentowaniu systemów oprogramowania. Stanowią integralną część procesu tworzenia oprogramowania, pomagając zarówno na etapie projektowania, jak i tworzenia dokumentacji.



Ważne tematy dotyczące diagramu klas

Czym są diagramy klas?

Diagramy klas to rodzaj diagramów UML (Unified Modeling Language) wykorzystywanych w inżynierii oprogramowania do wizualnego przedstawiania struktury i relacji klas w systemie, tj. używanych do konstruowania i wizualizacji systemów obiektowych.

Na tych diagramach klasy są przedstawione jako pudełka, z których każde zawiera trzy przegródki na nazwę klasy, atrybuty i metody. Linie łączące klasy ilustrują powiązania, pokazując relacje takie jak jeden do jednego lub jeden do wielu.



Diagramy klas zapewniają ogólny przegląd projektu systemu, pomagając w komunikowaniu i dokumentowaniu struktury oprogramowania. Są podstawowym narzędziem w projektowaniu obiektowym i odgrywają kluczową rolę w cyklu życia oprogramowania.

Co to jest klasa?

W programowaniu obiektowym (OOP) klasa jest planem lub szablonem do tworzenia obiektów. Obiekty są instancjami klas, a każda klasa definiuje zestaw atrybutów (elementów danych) i metod (funkcji lub procedur), które będą posiadać obiekty utworzone na podstawie tej klasy. Atrybuty reprezentują cechy lub właściwości obiektu, podczas gdy metody definiują zachowania lub akcje, które obiekt może wykonać.



Notacja klas UML

notacja klas to graficzna reprezentacja używana do przedstawiania klas i ich relacji w modelowaniu obiektowym.

dynamiczna tablica w Javie

  1. Nazwa klasy:
    • Nazwa zajęć jest zazwyczaj zapisywana w górnej przegródce pola zajęć, wyśrodkowana i pogrubiona.
  2. Atrybuty:
    • Atrybuty, znane również jako właściwości lub pola, reprezentują elementy danych klasy. Są one wymienione w drugiej części pola klasy i często obejmują widoczność (np. publiczna, prywatna) i typ danych każdego atrybutu.
  3. Metody:
    • Metody, znane również jako funkcje lub operacje, reprezentują zachowanie lub funkcjonalność klasy. Są one wymienione w trzeciej komorze pola klasy i obejmują widoczność (np. publiczna, prywatna), typ zwracany i parametry każdej metody.
  4. Notacja widoczności:
    • Oznaczenia widoczności wskazują poziom dostępu do atrybutów i metod. Typowe oznaczenia widoczności obejmują:
      • +>publicznie (widoczne dla wszystkich klas)
      • ->dla prywatnych (widoczne tylko w klasie)
      • #>dla chronionych (widoczne dla podklas)
      • ~>dla widoczności pakietu lub domyślnej (widocznej dla klas w tym samym pakiecie)

Kierunkowość parametrów

Na diagramach klas kierunkowość parametrów odnosi się do wskazania przepływu informacji pomiędzy klasami poprzez parametry metody. Pomaga określić, czy parametr jest wejściem, wyjściem, czy obydwoma. Informacje te są kluczowe dla zrozumienia sposobu przekazywania danych pomiędzy obiektami podczas wywołań metod.

notacja-klasowa-z-kierunkowością-parametrów

Istnieją trzy główne oznaczenia kierunkowości parametrów używane na diagramach klas:

  • Wejście (wejście):
    • Parametr wejściowy to parametr przekazywany z obiektu wywołującego (klienta) do obiektu wywoływanego (serwera) podczas wywołania metody.
    • Jest ona reprezentowana przez strzałkę skierowaną w stronę klasy odbierającej (klasy będącej właścicielem metody).
  • Wyjście (wyjście):
    • Parametr wyjściowy to parametr przekazywany z wywoływanego obiektu (serwera) z powrotem do obiektu wywołującego (klienta) po wykonaniu metody.
    • Jest ona reprezentowana przez strzałkę skierowaną w stronę przeciwną klasie odbierającej.
  • InOut (wejście i wyjście):
    • Parametr InOut służy zarówno jako wejście, jak i wyjście. Przenosi informacje z obiektu wywołującego do obiektu wywoływanego i odwrotnie.
    • Jest ona reprezentowana przez strzałkę skierowaną w stronę i od klasy odbierającej.

Relacje pomiędzy klasami

Na diagramach klas relacje między klasami opisują, w jaki sposób klasy są połączone lub współdziałają ze sobą w systemie. W modelowaniu obiektowym istnieje kilka typów relacji, z których każdy służy określonemu celowi. Oto kilka typowych typów relacji na diagramach klas:

1. Stowarzyszenie

Powiązanie reprezentuje dwukierunkową relację pomiędzy dwiema klasami. Wskazuje, że instancje jednej klasy są połączone z instancjami innej klasy. Powiązania są zwykle przedstawiane jako linia ciągła łącząca klasy z opcjonalnymi strzałkami wskazującymi kierunek relacji.

Rozumiemy skojarzenie na przykładzie:

Rozważmy prosty system zarządzania biblioteką. W tym systemie mamy dwa główne podmioty:Book>ILibrary>. KażdyLibrary>zawiera wieleBooks>i każdyBook>należy do konkretnegoLibrary>. Ta relacja pomiędzyLibrary>IBook>reprezentuje stowarzyszenie.

Klasę Library można uznać za klasę źródłową, ponieważ zawiera odwołanie do wielu instancji klasy Book. Klasa Book będzie uważana za klasę docelową, ponieważ należy do określonej biblioteki.

jak odzyskać ukryte aplikacje

2. Stowarzyszenie kierowane

Skierowane skojarzenie na diagramie klas UML reprezentuje relację między dwiema klasami, w której skojarzenie ma kierunek, wskazując, że jedna klasa jest powiązana z drugą w określony sposób.

  • W przypadku skojarzenia skierowanego do linii skojarzenia dodawany jest grot strzałki, aby wskazać kierunek relacji. Strzałka wskazuje klasę, która inicjuje skojarzenie, do klasy, która jest celem lub na którą ma wpływ skojarzenie.
  • Powiązania kierowane stosuje się, gdy powiązanie ma określony przepływ lub kierunkowość, np. wskazuje, która klasa jest odpowiedzialna za inicjowanie powiązania lub która klasa jest zależna od innej.

Rozważmy scenariusz, w którym klasa Nauczyciela jest powiązana z klasą Kursu w systemie uniwersyteckim. Skierowana strzałka skojarzenia może wskazywać klasę Nauczyciela na klasę Kursu, wskazując, że nauczyciel jest powiązany z określonym kursem lub go uczy.

  • Klasą źródłową jest klasa Teacher. Klasa Nauczyciela inicjuje stowarzyszenie poprzez prowadzenie określonego kursu.
  • Klasą docelową jest klasa Course. Stowarzyszenie ma wpływ na klasę Kursu, ponieważ jest ona prowadzona przez konkretnego nauczyciela.

3. Zbiór

Agregacja to wyspecjalizowana forma asocjacji reprezentująca relację całość-część. Oznacza silniejszy związek, gdy jedna klasa (całość) zawiera inną klasę (część) lub składa się z niej. Agregację reprezentuje kształt rombu z boku całej klasy. W tego rodzaju relacji klasa podrzędna może istnieć niezależnie od klasy nadrzędnej.

Rozumiemy agregację na przykładzie:

Firmę można rozpatrywać jako całość, natomiast pracownicy to jej części. Pracownicy należą do firmy, a firma może mieć wielu pracowników. Jeżeli jednak firma przestanie istnieć, pracownicy mogą nadal istnieć samodzielnie.

4. Kompozycja

Kompozycja jest silniejszą formą agregacji, wskazującą na bardziej znaczący związek własności lub zależności. W kompozycji klasa częściowa nie może istnieć niezależnie od całej klasy. Kompozycję reprezentuje wypełniony kształt rombu z boku całej klasy.

Rozumiemy kompozycję na przykładzie:

Wyobraź sobie aplikację z cyfrową książką kontaktową. Książka kontaktów stanowi całość, a każdy wpis kontaktu stanowi jej część. Każdy wpis kontaktu jest w pełni własnością książki kontaktów i jest przez nią zarządzany. Jeśli książka kontaktów zostanie usunięta lub zniszczona, wszystkie powiązane wpisy kontaktów również zostaną usunięte.

To ilustruje kompozycję, ponieważ istnienie wpisów kontaktowych zależy całkowicie od obecności książki kontaktowej. Bez książki adresowej poszczególne wpisy kontaktów tracą znaczenie i nie mogą istnieć samodzielnie.

5. Uogólnienie (Dziedziczenie)

Dziedziczenie reprezentuje relację jest pomiędzy klasami, w której jedna klasa (podklasa lub dziecko) dziedziczy właściwości i zachowania innej klasy (nadklasy lub klasy nadrzędnej). Dziedziczenie jest oznaczone linią ciągłą z zamkniętym, pustym grotem strzałki, wskazującą od podklasy do nadklasy.

topologie sieci

Na przykładzie rachunków bankowych możemy zastosować uogólnienie do przedstawienia różnych typów rachunków, takich jak rachunki bieżące, rachunki oszczędnościowe i konta kredytowe.

Klasa Konto Bankowe służy jako uogólniona reprezentacja wszystkich typów rachunków bankowych, natomiast podklasy (Rachunek Bieżący, Konto Oszczędnościowe, Konto Kredytowe) reprezentują wyspecjalizowane wersje, które dziedziczą i rozszerzają funkcjonalność klasy bazowej.

6. Realizacja (implementacja interfejsu)

Realizacja wskazuje, że klasa implementuje funkcje interfejsu. Jest często używany w przypadkach, gdy klasa realizuje operacje zdefiniowane przez interfejs. Realizację przedstawiono linią przerywaną z otwartym grotem strzałki wskazującej od klasy implementującej do interfejsu.

Rozważmy scenariusz, w którym osoba i firma realizują interfejs właściciela.

  • Interfejs właściciela: Interfejs ten zawiera teraz metody takie jak nabycie (własność) i zbycie (własność) do reprezentowania działań związanych z nabywaniem i zbywaniem nieruchomości.
  • Klasa Osoby (Realizacja): Klasa Person implementuje interfejs właściciela, udostępniając konkretne implementacje metod nabycia (właściwość) i usunięcia (właściwość). Osoba może na przykład nabyć na własność dom lub zbyć samochód.
  • Klasa korporacji (Realizacja): Podobnie klasa Corporation implementuje również interfejs Właściciel, oferując specyficzne implementacje metod nabycia(właściwość) i utylizacji(właściwość). Na przykład korporacja może nabyć własność nieruchomości lub zbyć pojazdy służbowe.

Obie klasy Person i Corporation realizują interfejs Właściciel, co oznacza, że ​​zapewniają konkretne implementacje metod nabycia (właściwość) i utylizacji (właściwość) zdefiniowanych w interfejsie.

7. Związek zależności

Zależność istnieje między dwiema klasami, gdy jedna klasa opiera się na drugiej, ale związek ten nie jest tak silny jak powiązanie lub dziedziczenie. Reprezentuje bardziej luźno powiązane połączenie między klasami. Zależności są często przedstawiane jako przerywana strzałka.

Rozważmy scenariusz, w którym Osoba jest zależna od Księgi.

długi format ciągu Java
  • Klasa osoby: Reprezentuje osobę czytającą książkę. Aby uzyskać dostęp do zawartości i przeczytać ją, klasa Person zależy od klasy Book.
  • Klasa książki: Reprezentuje książkę zawierającą treść do przeczytania przez osobę. Klasa Book jest niezależna i może istnieć bez klasy Person.

Klasa Person zależy od klasy Book, ponieważ wymaga dostępu do książki, aby przeczytać jej treść. Jednakże klasa Book nie zależy od klasy Person; może istnieć niezależnie i nie zależy od klasy Person w zakresie swojej funkcjonalności.

8. Związek użycia (zależności).

Relacja zależności użycia na diagramie klas UML wskazuje, że jedna klasa (klient) wykorzystuje inną klasę (dostawcę) lub jest od niej zależna w celu wykonywania określonych zadań lub uzyskiwania dostępu do określonych funkcji. Klasa klienta opiera się na usługach udostępnianych przez klasę dostawcy, ale nie jest jej właścicielem ani nie tworzy jej instancji.

  • Zależności użycia reprezentują formę zależności, w której jedna klasa zależy od innej klasy w celu spełnienia określonej potrzeby lub wymagania.
  • Klasa klienta wymaga dostępu do określonych funkcji lub usług udostępnianych przez klasę dostawcy.
  • Na diagramach klas UML zależności użycia są zazwyczaj reprezentowane przez przerywaną linię strzałkową wskazującą od klasy klienta do klasy dostawcy.
  • Strzałka wskazuje kierunek zależności, pokazując, że klasa klienta jest zależna od usług świadczonych przez klasę dostawcy.

Rozważmy scenariusz, w którym klasa samochodu zależy od klasy FuelTank w celu zarządzania zużyciem paliwa.

  • Klasa Car może wymagać dostępu do metod lub atrybutów klasy FuelTank w celu sprawdzenia poziomu paliwa, uzupełnienia paliwa lub monitorowania zużycia paliwa.
  • W tym przypadku klasa Car jest zależna od klasy FuelTank, ponieważ wykorzystuje jej usługi do wykonywania określonych zadań związanych z zarządzaniem paliwem.

Cel diagramów klas

Głównym celem stosowania diagramów klas jest:

  • Jest to jedyny język UML, który może odpowiednio przedstawić różne aspekty koncepcji OOP.
  • Właściwe projektowanie i analiza aplikacji może przebiegać szybciej i efektywniej.
  • Stanowi podstawę do wdrożenia i schematu komponentów.
  • Obejmuje inżynierię do przodu i do tyłu.

Korzyści ze stosowania diagramów klas

  • Struktura klas modelowania:
    • Diagramy klas pomagają w modelowaniu struktury systemu poprzez reprezentowanie klas i ich atrybutów, metod i relacji.
    • Zapewnia to jasny i zorganizowany obraz architektury systemu.
  • Zrozumienie relacji:
    • Diagramy klas przedstawiają relacje między klasami, takie jak powiązania, agregacje, kompozycje, dziedziczenie i zależności.
    • Pomaga to zainteresowanym stronom, w tym programistom, projektantom i analitykom biznesowym, zrozumieć, w jaki sposób różne komponenty systemu są ze sobą połączone.
  • Komunikacja:
    • Diagramy klas służą jako narzędzie komunikacji pomiędzy członkami zespołu i interesariuszami. Zapewniają wizualną i znormalizowaną reprezentację, która może być łatwo zrozumiała zarówno dla odbiorców technicznych, jak i nietechnicznych.
  • Plan wdrożenia:
    • Diagramy klas służą jako plan implementacji oprogramowania. Pomagają programistom w pisaniu kodu, ilustrując klasy, ich atrybuty, metody i relacje między nimi.
    • Może to pomóc w zapewnieniu spójności pomiędzy projektem a faktycznym wdrożeniem.
  • Generowanie kodu:
    • Niektóre narzędzia i struktury programistyczne obsługują generowanie kodu na podstawie diagramów klas.
    • Programiści mogą wygenerować znaczną część kodu z reprezentacji wizualnej, zmniejszając ryzyko błędów ręcznych i oszczędzając czas programowania.
  • Identyfikacja abstrakcji i enkapsulacji:
    • Diagramy klas zachęcają do identyfikacji abstrakcji i hermetyzacji danych i zachowań w obrębie klas.
    • Wspiera to zasady projektowania obiektowego, takie jak modułowość i ukrywanie informacji.

Jak rysować diagramy klas

Rysowanie diagramów klas polega na wizualizacji struktury systemu, w tym klas, ich atrybutów, metod i relacji. Oto kroki, jak narysować diagramy klas:

  1. Zidentyfikuj klasy:
    • Zacznij od zidentyfikowania klas w swoim systemie. Klasa reprezentuje plan obiektów i powinna zawierać powiązane atrybuty i metody.
  2. Lista atrybutów i metod:
    • Dla każdej klasy wypisz jej atrybuty (właściwości, pola) i metody (funkcje, operacje). Uwzględnij informacje, takie jak typy danych i widoczność (publiczne, prywatne, chronione).
  3. Zidentyfikuj relacje:
    • Określ relacje pomiędzy klasami. Typowe relacje obejmują powiązania, agregacje, kompozycje, dziedziczenie i zależności. Zrozum naturę i wielość tych relacji.
  4. Utwórz pola klasowe:
    • Narysuj prostokąt (pole klasy) dla każdej zidentyfikowanej klasy. Umieść nazwę klasy w górnej przegródce pudełka. Podziel pudełko na przegródki na atrybuty i metody.
  5. Dodaj atrybuty i metody:
    • Wewnątrz każdego pola klasy wypisz atrybuty i metody w odpowiednich przedziałach. Użyj oznaczeń widoczności (+ dla publicznych, – dla prywatnych, # dla chronionych, ~ dla pakietu/domyślnego).
  6. Narysuj relacje:
    • Narysuj linie reprezentujące relacje pomiędzy klasami. Użyj strzałek, aby wskazać kierunek powiązań lub zależności. Do różnych relacji można stosować różne typy linii lub oznaczenia.
  7. Relacje z etykietami:
    • W razie potrzeby oznacz relacje mianem mnogości i ról. Wielość wskazuje liczbę instancji zaangażowanych w relację, a nazwy ról wyjaśniają rolę każdej klasy w relacji.
  8. Przejrzyj i udoskonal:
    • Przejrzyj diagram klas, aby upewnić się, że dokładnie przedstawia strukturę i relacje systemu. W razie potrzeby udoskonal diagram w oparciu o opinie i wymagania.
  9. Użyj narzędzi do rysowania cyfrowego:
    • Chociaż diagramy klas można rysować na papierze, korzystanie z narzędzi cyfrowych może zapewnić większą elastyczność i łatwość modyfikacji. Pomocne mogą być narzędzia do modelowania UML, oprogramowanie do rysowania, a nawet specjalistyczne narzędzia do tworzenia diagramów.

Przypadki użycia diagramów klas

  • Projekt systemu:
    • Na etapie projektowania systemu diagramy klas służą do modelowania statycznej struktury systemu oprogramowania. Pomagają w wizualizacji i organizowaniu klas, ich atrybutów, metod i relacji, zapewniając plan wdrożenia systemu.
  • Komunikacja i współpraca:
    • Diagramy klas służą jako narzędzie komunikacji wizualnej pomiędzy zainteresowanymi stronami, w tym programistami, projektantami, kierownikami projektów i klientami. Ułatwiają dyskusje na temat struktury i projektu systemu, promując wspólne zrozumienie wśród członków zespołu.
  • Generowanie kodu:
    • Niektóre środowiska i narzędzia programistyczne obsługują generowanie kodu w oparciu o diagramy klas. Programiści mogą generować szkielety kodu, zmniejszając wysiłek związany z ręcznym kodowaniem i zapewniając spójność między projektem a implementacją.
  • Testowanie i planowanie testów:
    • Testerzy używają diagramów klas, aby zrozumieć relacje między klasami i odpowiednio zaplanować przypadki testowe. Wizualna reprezentacja struktur klas pomaga w identyfikacji obszarów wymagających dokładnych testów.
  • Inżynieria odwrotna:
    • Diagramy klas można wykorzystać w inżynierii wstecznej, gdzie programiści analizują istniejący kod w celu stworzenia wizualnych reprezentacji struktury oprogramowania. Jest to szczególnie przydatne, gdy dokumentacja jest skąpa lub nieaktualna.