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

Razredni diagramSintaksa

Razredni diagram

Razredni diagram je glavni gradnik objektno usmerjenega modeliranja. Uporablja se za splošno konceptualno modeliranje strukture aplikacije in za podrobno modeliranje pretvorbe modela v programsko kodo. Razredni diagram se lahko uporablja tudi za podatkovno modeliranje. Razredi v razrednem diagramu predstavljajo tako glavne elemente in interakcije v aplikaciji kot razrede, ki jih je treba programirati.

Koda
                            
Kopiraj
Vdelava
--- 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() }

Sintaksa

Razred

UML ponuja mehanizme za predstavitev članov razreda, na primer lastnosti in metod, ter njihovih dodatnih informacij. Posamezen primerek razreda vsebuje tri dele:

  • Zgornji del vsebuje ime razreda. Natisnjeno je krepko in sredinsko poravnano, z veliko začetnico. Lahko vsebuje tudi neobvezno komentarno besedilo, ki opisuje naravo razreda.
  • Srednji del vsebuje lastnosti razreda. Poravnane so levo, z malo začetnico.
  • Spodnji del vsebuje operacije, ki jih razred lahko izvaja. Tudi te so poravnane levo in z malo začetnico.
Koda
                            
Kopiraj
Vdelava
--- title: Bank example --- classDiagram class BankAccount BankAccount : +String owner BankAccount : +Bigdecimal balance BankAccount : +deposit(amount) BankAccount : +withdrawal(amount)

Določitev razreda

Razred lahko definirate na dva načina

  • Z izrecno uporabo sintakse class (na primer class Animal), s čimer definirate razred Animal.
  • Z relacijo, ki hkrati definira dva razreda in razmerje med njima (na primer Vehicle <|-- Car).
Koda
                            
Kopiraj
Vdelava
classDiagram class Animal Vehicle <|-- Car

Pravila poimenovanja: ime razreda lahko sestavljajo le alfanumerični znaki (vključno z unicode), podčrtaj (_) in pomišljaj (-).

Oznaka razreda

Če morate razredu dodeliti oznako, lahko uporabite naslednjo sintakso:

Koda
                            
Kopiraj
Vdelava
classDiagram class Animal["Animal with a label"] class Car["Car with *! symbols"] Animal --> Car

Za ubežne posebne znake v oznaki lahko uporabite tudi povratna narekovaja (``):

Koda
                            
Kopiraj
Vdelava
classDiagram class `Animal Class!` class `Car Class` `Animal Class!` --> `Car Class`

Določitev članov razreda

UML ponuja mehanizme za predstavitev članov razreda (kot so lastnosti in metode) ter dodatnih informacij o njih.

Mermaid razlikuje med lastnostmi in funkcijami ali metodami glede na prisotnost oklepajev (). Tisti z () veljajo za funkcije ali metode, vsi ostali pa za lastnosti.

Člane razreda lahko definirate na dva načina; ne glede na to, katero sintakso uporabite, je rezultat enak. Dva različna načina sta:

1. Povežite člana razreda z dvopičjem (:) in imenom člana; to je uporabno za definiranje enega člana naenkrat. Na primer:

Koda
                            
Kopiraj
Vdelava
classDiagram class BankAccount BankAccount : +String owner BankAccount : +BigDecimal balance BankAccount : +deposit(amount) BankAccount : +withdrawal(amount)

2. Povežite člane razreda z zavitima oklepajema {}, pri čemer so člani združeni znotraj oklepajev. Primerno za definiranje več članov hkrati. Na primer:

Koda
                            
Kopiraj
Vdelava
classDiagram class BankAccount{ +String owner +BigDecimal balance +deposit(amount) +withdrawal(amount) }

Povratna vrsta

Na koncu definicije metode ali funkcije lahko določite podatkovno vrsto, ki bo vrnjena. Opomba: med zadnjim ')' in povratno vrsto mora biti presledek. Primer:

Koda
                            
Kopiraj
Vdelava
classDiagram class BankAccount{ +String owner +BigDecimal balance +deposit(amount) bool +withdrawal(amount) int }

Splošna vrsta

Splošno vrsto je mogoče predstaviti kot del definicije razreda, uporabiti pa jo je mogoče tudi za člane razreda ali povratno vrsto. Če želite element predstaviti kot splošno vrsto, to vrsto ovijte z valovito črto (~). Podprte so gnezdene deklaracije vrst, na primer List<List<int>>, vendar trenutno niso podprte splošne vrste, ki vsebujejo vejico, kot je List<List<K, V>>.

Koda
                            
Kopiraj
Vdelava
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~~

Vidnost

Za opis vidnosti lastnosti ali metode/funkcije lahko pred imenom člana uporabite neobvezen simbol:

  • + javno
  • - zasebno
  • # zaščiteno
  • ~ notranje

Določitev razmerja

Razmerje je splošen izraz, ki zajema določene vrste logičnih povezav, ki jih najdemo v razrednih in objektnih diagramih.

                            
Kopiraj
Vdelava
[classA][Arrow][ClassB]

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

Vrsta Opis
<|-- Dedovanje
*-- Sestava
o-- Agregacija
--> Asociacija
-- Povezava (polna)
..> Odvisnost
..|> Izvedba
.. Povezava (črtkana)
Koda
                            
Kopiraj
Vdelava
classDiagram classA <|-- classB classC *-- classD classE o-- classF classG <-- classH classI -- classJ classK <.. classL classM <|.. classN classO .. classP

Z oznakami lahko opišemo naravo razmerja med dvema razredoma. Poleg tega se lahko tudi puščice uporabijo v obratni smeri:

Koda
                            
Kopiraj
Vdelava
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)

Oznaka razmerja

Razmerju lahko dodate besedilo oznake:

                            
Kopiraj
Vdelava
[classA][Arrow][ClassB]:LabelText
Koda
                            
Kopiraj
Vdelava
classDiagram classA <|-- classB : implements classC *-- classD : composition classE o-- classF : aggregation

Dvosmerno razmerje

Dvosmerno razmerje lahko logično predstavlja povezavo N:M:

Koda
                            
Kopiraj
Vdelava
classDiagram Animal <|--|> Zebra

语法如下:

                            
Kopiraj
Vdelava
[Relation Type][Link][Relation Type]

其中 Relation Type 是以下之一:

Vrsta Opis
<| Dedovanje
* Sestava
o Agregacija
> Asociacija
< Asociacija
|> Izvedba

Link je eden od naslednjih:

Vrsta Opis
-- Polna črta
.. Črtkana črta

Vmesnik lizike

Razredu je mogoče dodeliti tudi posebno vrsto razmerja, ki za razred definira vmesnik lizike. Vmesnik lizike je definiran z naslednjo sintakso:

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

Vmesnik lizike (bar) je povezan z razredom (foo).

Opomba: vsak definiran vmesnik je edinstven, z namenom, da se ne deli med razredi in da nanj ne kaže več povezav.

Koda
                            
Kopiraj
Vdelava
classDiagram bar ()-- foo
Koda
                            
Kopiraj
Vdelava
classDiagram class Class01 { int amount draw() } Class01 --() bar Class02 --() bar foo ()-- Class01

Določitev imenskega prostora

Imenski prostor združuje razrede.

Koda
                            
Kopiraj
Vdelava
classDiagram namespace BaseShapes { class Triangle class Rectangle { double width double height } }

Kardinalnost/množnost razmerja

Množnost ali kardinalnost v razrednem diagramu označuje, s koliko primerki drugega razreda je lahko povezan primerek enega razreda. Na primer, vsako podjetje ima enega ali več zaposlenih, ne more jih imeti nič, medtem ko je vsak zaposleni trenutno zaposlen v nič ali enem podjetju.

Oznaka množnosti je nameščena blizu konca povezave.

Različne možnosti kardinalnosti so:

  • 1 samo 1
  • 0..1 0 ali 1
  • 1..* 1 ali več
  • * 0 ali 1 ali več
  • n n (kjer je n>1)
  • 0..n 0 do n (kjer je n>1)
  • 1..n 1 do n (kjer je n>1)

Kardinalnost lahko preprosto definirate tako, da besedilno možnost ovijete z dvojnimi narekovaji "" pred ali za dano puščico. Na primer:

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

Komentar razreda

Razred lahko komentirate z oznakami, da zagotovite dodatne metapodatke o razredu. To lahko jasneje pokaže naravo razreda. Nekateri pogosti komentarji vključujejo:

  • <<Interface>> predstavlja vmesniški razred
  • <<Abstract>> predstavlja abstraktni razred
  • <<Service>> predstavlja storitveni razred
  • <<Enumeration>> predstavlja naštevanje

Komentar je definiran z uvodnima << in zaključnima >>. Razredu lahko dodate komentar na tri načine; rezultat vseh treh načinov je enak:

  • Vgrajeno v definicijo razreda
                            
Kopiraj
Vdelava
classDiagram class Shape <<interface>>

V ločeni vrstici za definicijo razreda:

Koda
                            
Kopiraj
Vdelava
classDiagram class Shape <<interface>> Shape Shape : noOfVertices Shape : draw()
  • V gnezdeni strukturi znotraj definicije razreda:
Koda
                            
Kopiraj
Vdelava
classDiagram class Shape{ <<interface>> noOfVertices draw() } class Color{ <<enumeration>> RED BLUE GREEN WHITE BLACK }

Komentar

V razredni diagram lahko vnesete komentarje, ki jih urejevalnik prezre. Komentar mora zavzemati celotno vrstico in se mora začeti z dvojnim odstotkom (%%). Vse besedilo do naslednje vrstice se obravnava kot komentar, vključno s katero koli sintakso razrednega diagrama.

Koda
                            
Kopiraj
Vdelava
classDiagram %% This whole line is a comment classDiagram class Shape <<interface>> class Shape{ <<interface>> noOfVertices draw() }

Nastavitev smeri diagrama

S stavkom za smer lahko nastavite smer upodabljanja razrednega diagrama:

Koda
                            
Kopiraj
Vdelava
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

Interakcija

Vozlišču lahko priložite dogodek klika. Dogodek klika lahko sproži povratno funkcijo JavaScript ali odpre povezavo, ki se naloži v novem zavihku brskalnika. Opomba: pri securityLevel='strict' je ta funkcija onemogočena, pri securityLevel='loose' pa omogočena.

Te operacije lahko definirate v ločeni vrstici za vsemi deklaracijami razredov.

                            
Kopiraj
Vdelava
action className "reference" "tooltip" click className call callback() "tooltip" click className href "url" "tooltip"
  • action je link ali callback, odvisno od vrste interakcije, ki jo želite priklicati.
  • className je id vozlišča, povezanega z operacijo.
  • reference je lahko povezava URL ali ime povratne funkcije.
  • (neobvezno) Namig je niz, prikazan, ko miškin kazalec lebdi nad elementom.
  • Povratna funkcija bo priklicana s parametrom nodeId.

Opomba

Z note "line1 line2" lahko na diagram dodate komentar. Z note for <CLASS NAME> "line1 line2" lahko dodate komentar določenemu razredu.

Primer

Koda
                            
Kopiraj
Vdelava
classDiagram note "This is a general note" note for MyClass "This is a note for a class" class MyClass{ }

Povezava URL:

Koda
                            
Kopiraj
Vdelava
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"

Konfiguracija

Polje članov

Skrijete lahko prazno polje članov vozlišča razreda; to storite s spremembo vrednosti hideEmptyMembersBox v konfiguraciji razrednega diagrama.

Koda
                            
Kopiraj
Vdelava
--- config: class: hideEmptyMembersBox: true --- classDiagram class Duck