Register
Process Type
Graphical expression
Mind Type
Structured expression
Note Type
Efficient expression

LuokkakaavioSyntaksi

Luokkakaavio

Luokkakaavio on olio-ohjelmoinnin mallintamisen keskeinen rakennuspalikka. Sitä käytetään sovelluksen rakenteen yleiseen käsitemallinnukseen sekä mallin muuntamiseen ohjelmointikoodiksi yksityiskohtaisessa mallinnuksessa. Luokkakaaviota voidaan käyttää myös tietojen mallintamiseen. Luokkakaavion luokat edustavat sekä sovelluksen keskeisiä elementtejä ja vuorovaikutuksia että ohjelmoitavia luokkia.

Koodi
                            
Kopioi
Upotus
--- title: Animal example --- classDiagram note "From Duck till Zebra" Animal <|-- Duck note for Duck "can fly can swim can dive can help in debugging" Animal <|-- Fish Animal <|-- Zebra Animal : +int age Animal : +String gender Animal: +isMammal() Animal: +mate() class Duck{ +String beakColor +swim() +quack() } class Fish{ -int sizeInFeet -canEat() } class Zebra{ +bool is_wild +run() }

Syntaksi

Luokka

UML tarjoaa mekanismeja luokan jäsenten, kuten ominaisuuksien ja metodien, sekä niihin liittyvien lisätietojen esittämiseen. Luokan yksittäinen esiintymä koostuu kolmesta osasta:

  • Yläosa sisältää luokan nimen. Se tulostetaan lihavoituna keskelle, ja ensimmäinen kirjain on iso. Se voi sisältää myös valinnaisen kommenttitekstin, joka kuvaa luokan luonnetta.
  • Keskiosa sisältää luokan ominaisuudet. Ne tasataan vasemmalle ja ensimmäinen kirjain on pieni.
  • Alaosa sisältää toiminnot, jotka luokka voi suorittaa. Ne on myös tasattu vasemmalle ja ensimmäinen kirjain on pieni.
Koodi
                            
Kopioi
Upotus
--- title: Bank example --- classDiagram class BankAccount BankAccount : +String owner BankAccount : +Bigdecimal balance BankAccount : +deposit(amount) BankAccount : +withdrawal(amount)

Määritä luokka

Luokan voi määrittää kahdella tavalla

  • Käytä eksplisiittisesti class-syntaksia (kuten class Animal), mikä määrittelee Animal-luokan.
  • Yhteyden kautta, joka määrittelee samanaikaisesti kaksi luokkaa ja niiden välisen suhteen (kuten Vehicle <|-- Car).
Koodi
                            
Kopioi
Upotus
classDiagram class Animal Vehicle <|-- Car

Nimeämiskäytäntö: luokan nimi voi koostua vain aakkosnumeerisista merkeistä (mukaan lukien unicode), alaviivasta (_) ja viivasta (-).

Luokan merkintä

Jos haluat antaa luokalle merkinnän, voit käyttää seuraavaa syntaksia:

Koodi
                            
Kopioi
Upotus
classDiagram class Animal["Animal with a label"] class Car["Car with *! symbols"] Animal --> Car

Voit myös käyttää takakenoviivoja (``) escape-merkitäksesi merkinnän erikoismerkit:

Koodi
                            
Kopioi
Upotus
classDiagram class `Animal Class!` class `Car Class` `Animal Class!` --> `Car Class`

Määritä luokan jäsenet

UML tarjoaa mekanismeja luokan jäsenten (kuten ominaisuuksien ja metodien) sekä niitä koskevien lisätietojen esittämiseen.

Mermaid erottaa ominaisuudet funktioista tai metodeista sen perusteella, onko sulkeet () olemassa. Ne, joissa on (), katsotaan funktioiksi tai metodeiksi, ja loput katsotaan ominaisuuksiksi.

Luokan jäsenet voidaan määrittää kahdella tavalla; riippumatta siitä, kumpaa syntaksia jäsenten määrittämiseen käytetään, tulos on sama. Nämä kaksi erilaista tapaa ovat:

1. Liitä luokan jäsen käyttämällä kaksoispistettä (:) ja sen perään jäsenen nimeä; tämä on hyödyllistä yhden jäsenen määrittämiseen kerrallaan. Esimerkiksi:

Koodi
                            
Kopioi
Upotus
classDiagram class BankAccount BankAccount : +String owner BankAccount : +BigDecimal balance BankAccount : +deposit(amount) BankAccount : +withdrawal(amount)

2. Liitä luokan jäsenet käyttämällä aaltosulkeita {}, jolloin jäsenet ryhmitellään aaltosulkeiden sisään. Sopii useiden jäsenten määrittämiseen kerralla. Esimerkiksi:

Koodi
                            
Kopioi
Upotus
classDiagram class BankAccount{ +String owner +BigDecimal balance +deposit(amount) +withdrawal(amount) }

Paluutyyppi

Voit määrittää palautettavan tietotyypin metodin tai funktion määrittelyn lopussa. Huomautus: viimeisen ')' ja paluutyypin välissä on oltava välilyönti. Esimerkki:

Koodi
                            
Kopioi
Upotus
classDiagram class BankAccount{ +String owner +BigDecimal balance +deposit(amount) bool +withdrawal(amount) int }

Yleinen tyyppi

Yleinen tyyppi voidaan esittää osana luokan määrittelyä, ja sitä voidaan käyttää myös luokan jäsenissä tai paluutyypeissä. Esittääksesi kohteen yleisenä tyyppinä, sulje tyyppi aaltoviivojen (~) sisään. Sisäkkäiset tyyppimäärittelyt, kuten List<List<int>>, ovat tuettuja, mutta yleisiä tyyppejä, jotka sisältävät pilkun, kuten List<List<K, V>>, ei tällä hetkellä tueta.

Koodi
                            
Kopioi
Upotus
classDiagram class Square~Shape~{ int id List~int~ position setPoints(List~int~ points) getPoints() List~int~ } Square : -List~string~ messages Square : +setMessages(List~string~ messages) Square : +getMessages() List~string~ Square : +getDistanceMatrix() List~List~int~~

Näkyvyys

Ominaisuuden tai metodin/funktion näkyvyyden kuvaamiseksi voit käyttää valinnaista symbolia jäsenen nimen edessä:

  • + julkinen
  • - yksityinen
  • # suojattu
  • ~ sisäinen

Määritä suhde

Suhde on yleistermi, joka kattaa luokka- ja objektikaavioissa esiintyvät tietyntyyppiset loogiset yhteydet.

                            
Kopioi
Upotus
[classA][Arrow][ClassB]

UML为类定义了八种不同类型的关系:

Tyyppi Kuvaus
<|-- Perintä
*-- Kokoonpano
o-- Kooste
--> Assosiaatio
-- Linkki (yhtenäinen)
..> Riippuvuus
..|> Toteutus
.. Linkki (katkoviiva)
Koodi
                            
Kopioi
Upotus
classDiagram classA <|-- classB classC *-- classD classE o-- classF classG <-- classH classI -- classJ classK <.. classL classM <|.. classN classO .. classP

Voimme käyttää merkintöjä kuvaamaan kahden luokan välisen suhteen luonteen. Lisäksi nuolta voidaan käyttää myös käänteisesti:

Koodi
                            
Kopioi
Upotus
classDiagram classA --|> classB : Inheritance classC --* classD : Composition classE --o classF : Aggregation classG --> classH : Association classI -- classJ : Link(Solid) classK ..> classL : Dependency classM ..|> classN : Realization classO .. classP : Link(Dashed)

Suhteen merkintä

Suhteelle voidaan lisätä merkintäteksti:

                            
Kopioi
Upotus
[classA][Arrow][ClassB]:LabelText
Koodi
                            
Kopioi
Upotus
classDiagram classA <|-- classB : implements classC *-- classD : composition classE o-- classF : aggregation

Kaksisuuntainen suhde

Kaksisuuntainen suhde voi loogisesti edustaa N:M-assosiaatiota:

Koodi
                            
Kopioi
Upotus
classDiagram Animal <|--|> Zebra

语法如下:

                            
Kopioi
Upotus
[Relation Type][Link][Relation Type]

其中 Relation Type 是以下之一:

Tyyppi Kuvaus
<| Perintä
* Kokoonpano
o Kooste
> Assosiaatio
< Assosiaatio
|> Toteutus

Link on yksi seuraavista:

Tyyppi Kuvaus
-- Yhtenäinen viiva
.. Katkoviiva

Tikkukaramelli-rajapinta

Luokalle voidaan myös antaa erityinen suhdetyyppi, joka määrittelee luokalle tikkukaramelli-rajapinnan. Tikkukaramelli-rajapinta määritellään seuraavalla syntaksilla:

  • bar ()-- foo
  • foo --() bar

Rajapinta, jossa on tikkukaramelli (bar), yhdistetään luokkaan (foo).

Huomautus: jokainen määritetty rajapinta on ainutlaatuinen, eikä sitä ole tarkoitus jakaa luokkien välillä eikä sallia useiden yhteyksien osoittaa siihen.

Koodi
                            
Kopioi
Upotus
classDiagram bar ()-- foo
Koodi
                            
Kopioi
Upotus
classDiagram class Class01 { int amount draw() } Class01 --() bar Class02 --() bar foo ()-- Class01

Määritä nimiavaruus

Nimiavaruus ryhmittelee luokkia.

Koodi
                            
Kopioi
Upotus
classDiagram namespace BaseShapes { class Triangle class Rectangle { double width double height } }

Suhteen kardinaliteetti/monikertaisuus

Monikertaisuus eli kardinaliteetti luokkakaaviossa ilmaisee, kuinka monta luokan esiintymää voidaan liittää toisen luokan esiintymään. Esimerkiksi jokaisella yrityksellä on yksi tai useampi työntekijä, ei koskaan nolla, ja jokainen työntekijä työskentelee tällä hetkellä nollassa tai yhdessä yrityksessä.

Monikertaisuussymboli sijoitetaan assosiaation lopun lähelle.

Erilaiset kardinaliteettivaihtoehdot ovat:

  • 1 vain 1
  • 0..1 0 tai 1
  • 1..* 1 tai useampi
  • * 0 tai 1 tai useampi
  • n n (jossa n>1)
  • 0..n 0:sta n:ään (jossa n>1)
  • 1..n 1:stä n:ään (jossa n>1)

Kardinaliteetti voidaan määrittää helposti sulkemalla tekstivaihtoehto lainausmerkkeihin ”“ tietyn nuolen eteen tai taakse. Esimerkiksi:

                            
Kopioi
Upotus
[classA] "cardinality1" [Arrow] "cardinality2" [ClassB]:LabelText
Koodi
                            
Kopioi
Upotus
classDiagram Customer "1" --> "*" Ticket Student "1" --> "1..*" Course Galaxy --> "many" Star : Contains

Luokan kommentti

Luokka voidaan kommentoida merkinnöillä, jotka tarjoavat lisämetatietoja luokasta. Tämä voi tehdä luokan luonteen selkeämmäksi. Joitakin yleisiä kommentteja ovat:

  • <<Interface>> edustaa rajapintaluokkaa
  • <<Abstract>> edustaa abstraktia luokkaa
  • <<Service>> edustaa palveluluokkaa
  • <<Enumeration>> edustaa luettelotyyppiä

Kommentti määritellään alun << ja lopun >> välissä. Luokkaan voidaan lisätä kommentti kolmella tavalla, ja kaikkien kolmen tavan tuloste on sama:

  • Sisäkkäin luokan määrittelyn kanssa
                            
Kopioi
Upotus
classDiagram class Shape <<interface>>

Omalla rivillä luokan määrittelyn jälkeen:

Koodi
                            
Kopioi
Upotus
classDiagram class Shape <<interface>> Shape Shape : noOfVertices Shape : draw()
  • Luokan määrittelyn sisäkkäisessä rakenteessa:
Koodi
                            
Kopioi
Upotus
classDiagram class Shape{ <<interface>> noOfVertices draw() } class Color{ <<enumeration>> RED BLUE GREEN WHITE BLACK }

Kommentti

Luokkakaavioon voi syöttää kommentteja, jotka editori jättää huomiotta. Kommentin on oltava omalla rivillään ja alettava kaksoisprosenttimerkillä (%%). Kaikki teksti seuraavaan riviin asti tulkitaan kommentiksi, mukaan lukien mahdollinen luokkakaaviosyntaksi.

Koodi
                            
Kopioi
Upotus
classDiagram %% This whole line is a comment classDiagram class Shape <<interface>> class Shape{ <<interface>> noOfVertices draw() }

Aseta kaavion suunta

Voit asettaa luokkakaavion renderöintisuunnan suuntalauseella:

Koodi
                            
Kopioi
Upotus
classDiagram direction RL class Student { -idCard : IdCard } class IdCard{ -id : int -name : string } class Bike{ -id : int -name : string } Student "1" --o "1" IdCard : carries Student "1" --o "1" Bike : rides

Vuorovaikutus

Solmuun voi sitoa napsautustapahtuman. Napsautustapahtuma voi laukaista JavaScript-takaisinkutsufunktion tai avata linkin, joka ladataan uudessa selainvälilehdessä. Huomautus: tämä toiminto on poistettu käytöstä, kun käytetään securityLevel='strict', ja otettu käyttöön, kun käytetään securityLevel='loose'.

Voit määrittää nämä toiminnot omalla rivillään kaikkien luokkamäärittelyjen jälkeen.

                            
Kopioi
Upotus
action className "reference" "tooltip" click className call callback() "tooltip" click className href "url" "tooltip"
  • action on link tai callback riippuen siitä, minkä tyyppisen vuorovaikutuksen haluat kutsua.
  • className on toimintoon liitetyn solmun id.
  • reference voi olla URL-linkki tai takaisinkutsufunktion nimi.
  • (valinnainen) Työkaluvihje on merkkijono, joka näytetään, kun hiiri viedään elementin päälle.
  • Takaisinkutsufunktio kutsutaan nodeId-parametrilla.

Huomautus

Kaavioon voidaan lisätä kommentti komennolla note "line1 line2". Tietylle luokalle voidaan lisätä kommentti komennolla note for <CLASS NAME> "line1 line2".

Esimerkki

Koodi
                            
Kopioi
Upotus
classDiagram note "This is a general note" note for MyClass "This is a note for a class" class MyClass{ }

Verkko-osoitelinkki:

Koodi
                            
Kopioi
Upotus
classDiagram class Shape link Shape "https://www.github.com" "This is a tooltip for a link" class Shape2 click Shape2 href "https://www.github.com" "This is a tooltip for a link"

Kokoonpano

Jäsenlaatikko

Luokkasolmun tyhjä jäsenlaatikko voidaan piilottaa muuttamalla luokkakaavion kokoonpanon hideEmptyMembersBox-arvoa.

Koodi
                            
Kopioi
Upotus
--- config: class: hideEmptyMembersBox: true --- classDiagram class Duck