Proses Taip
Ekspresi grafik
Berfikir Taip
Ekspresi berstruktur
Nota Taip
Ekspresi yang cekap

Rajah KelasSintaks

Rajah Kelas

Gambar rajah kelas ialah blok binaan utama pemodelan berorientasikan objek. Ia digunakan untuk pemodelan konsep umum struktur aplikasi, serta pemodelan terperinci untuk menukar model kepada kod pengaturcaraan. Gambar rajah kelas juga boleh digunakan untuk pemodelan data. Kelas dalam gambar rajah kelas mewakili kedua-dua elemen utama dan interaksi dalam aplikasi, serta kelas yang perlu diprogramkan.

Kod
                            
Salin
Benamkan
--- 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() }

Sintaks

Kelas

UML menyediakan mekanisme untuk mewakili ahli kelas, contohnya sifat dan kaedah, serta maklumat tambahan mengenainya. Satu contoh tunggal kelas mengandungi tiga bahagian:

  • Bahagian atas mengandungi nama kelas. Ia dicetak tebal dan di tengah, dengan huruf pertama besar. Ia juga mungkin mengandungi teks komen pilihan yang menerangkan sifat kelas.
  • Bahagian tengah mengandungi sifat kelas. Ia dijajar kiri, dan huruf pertamanya kecil.
  • Bahagian bawah mengandungi operasi yang boleh dilakukan oleh kelas. Ia juga dijajar kiri, dan huruf pertamanya kecil.
Kod
                            
Salin
Benamkan
--- title: Bank example --- classDiagram class BankAccount BankAccount : +String owner BankAccount : +Bigdecimal balance BankAccount : +deposit(amount) BankAccount : +withdrawal(amount)

Tentukan satu kelas

Terdapat dua cara untuk mentakrifkan kelas

  • Menggunakan sintaks class secara eksplisit (seperti class Animal), ini akan mentakrifkan kelas Animal.
  • Melalui satu hubungan, ia mentakrifkan dua kelas sekali gus serta hubungan antara mereka (seperti Vehicle <|-- Car).
Kod
                            
Salin
Benamkan
classDiagram class Animal Vehicle <|-- Car

Konvensyen penamaan: nama kelas hanya boleh terdiri daripada aksara abjad angka (termasuk unicode), garis bawah (_) dan sengkang (-).

Label kelas

Jika anda perlu memberikan label untuk kelas, anda boleh menggunakan sintaks berikut:

Kod
                            
Salin
Benamkan
classDiagram class Animal["Animal with a label"] class Car["Car with *! symbols"] Animal --> Car

Anda juga boleh menggunakan tanda backtick (``) untuk melepaskan aksara khas dalam label:

Kod
                            
Salin
Benamkan
classDiagram class `Animal Class!` class `Car Class` `Animal Class!` --> `Car Class`

Tentukan ahli kelas

UML menyediakan mekanisme untuk mewakili ahli kelas (seperti sifat dan kaedah) serta maklumat tambahan mengenainya.

Mermaid akan membezakan sifat daripada fungsi atau kaedah berdasarkan kewujudan kurungan kecil (). Yang mempunyai () dianggap sebagai fungsi atau kaedah, selebihnya dianggap sebagai sifat.

Terdapat dua cara untuk mentakrifkan ahli kelas; tidak kira sintaks mana yang digunakan untuk mentakrifkan ahli, hasil output adalah sama. Dua cara berbeza itu ialah:

1, Menggunakan titik bertindih (:) diikuti dengan nama ahli untuk mengaitkan ahli kelas; ini berguna untuk mentakrifkan satu ahli pada satu masa. Contohnya:

Kod
                            
Salin
Benamkan
classDiagram class BankAccount BankAccount : +String owner BankAccount : +BigDecimal balance BankAccount : +deposit(amount) BankAccount : +withdrawal(amount)

2, Menggunakan pendakap besar {} untuk mengaitkan ahli kelas, di mana ahli dikelompokkan dalam pendakap besar. Sesuai untuk mentakrifkan berbilang ahli sekali gus. Contohnya:

Kod
                            
Salin
Benamkan
classDiagram class BankAccount{ +String owner +BigDecimal balance +deposit(amount) +withdrawal(amount) }

Jenis pulangan

Anda boleh menentukan jenis data yang akan dipulangkan pada penghujung definisi kaedah atau fungsi. Nota: mesti ada satu ruang antara ')' terakhir dan jenis pulangan. Satu contoh:

Kod
                            
Salin
Benamkan
classDiagram class BankAccount{ +String owner +BigDecimal balance +deposit(amount) bool +withdrawal(amount) int }

Jenis generik

Jenis generik boleh diwakili sebagai sebahagian daripada definisi kelas, dan juga boleh digunakan untuk ahli kelas atau jenis pulangan. Untuk mewakili sesuatu item sebagai jenis generik, apit jenis itu dengan tanda tilde (~). Pengisytiharan jenis bersarang disokong, contohnya List<List<int>>, tetapi jenis generik yang mengandungi koma seperti List<List<K, V>> tidak disokong pada masa ini.

Kod
                            
Salin
Benamkan
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~~

Keterlihatan

Untuk menerangkan keterlihatan sifat atau kaedah/fungsi, simbol pilihan boleh digunakan sebelum nama ahli tersebut:

  • + Awam
  • - Persendirian
  • # Terlindung
  • ~ Dalaman

Tentukan hubungan

Hubungan ialah istilah umum yang merangkumi jenis sambungan logik tertentu yang terdapat pada gambar rajah kelas dan gambar rajah objek.

                            
Salin
Benamkan
[classA][Arrow][ClassB]

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

Jenis Penerangan
<|-- Pewarisan
*-- Komposisi
o-- Agregasi
--> Perkaitan
-- Pautan (pejal)
..> Kebergantungan
..|> Pelaksanaan
.. Pautan (putus-putus)
Kod
                            
Salin
Benamkan
classDiagram classA <|-- classB classC *-- classD classE o-- classF classG <-- classH classI -- classJ classK <.. classL classM <|.. classN classO .. classP

Kita boleh menggunakan label untuk menerangkan sifat hubungan antara dua kelas. Selain itu, anak panah juga boleh digunakan secara terbalik:

Kod
                            
Salin
Benamkan
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)

Label hubungan

Teks label boleh ditambah pada hubungan:

                            
Salin
Benamkan
[classA][Arrow][ClassB]:LabelText
Kod
                            
Salin
Benamkan
classDiagram classA <|-- classB : implements classC *-- classD : composition classE o-- classF : aggregation

Hubungan dua hala

Hubungan dua hala secara logik boleh mewakili perkaitan N:M:

Kod
                            
Salin
Benamkan
classDiagram Animal <|--|> Zebra

语法如下:

                            
Salin
Benamkan
[Relation Type][Link][Relation Type]

其中 Relation Type 是以下之一:

Jenis Penerangan
<| Pewarisan
* Komposisi
o Agregasi
> Perkaitan
< Perkaitan
|> Pelaksanaan

Link ialah salah satu daripada yang berikut:

Jenis Penerangan
-- Garisan pejal
.. Garisan putus-putus

Antara muka lollipop

Kelas juga boleh diberikan satu jenis hubungan khas, yang mentakrifkan antara muka lollipop untuk kelas. Antara muka lollipop ditakrifkan menggunakan sintaks berikut:

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

Antara muka dengan lollipop (bar) disambung ke kelas (foo).

Nota: setiap antara muka yang ditakrifkan adalah unik, dengan tujuan untuk tidak dikongsi antara kelas, dan tidak membenarkan berbilang sambungan menunjuk kepadanya.

Kod
                            
Salin
Benamkan
classDiagram bar ()-- foo
Kod
                            
Salin
Benamkan
classDiagram class Class01 { int amount draw() } Class01 --() bar Class02 --() bar foo ()-- Class01

Tentukan ruang nama

Ruang nama mengelompokkan kelas.

Kod
                            
Salin
Benamkan
classDiagram namespace BaseShapes { class Triangle class Rectangle { double width double height } }

Kardinaliti/kepelbagaian hubungan

Kepelbagaian atau kardinaliti dalam gambar rajah kelas mewakili bilangan contoh sesuatu kelas yang boleh dikaitkan dengan contoh kelas lain. Contohnya, setiap syarikat mempunyai satu atau lebih pekerja, tidak boleh sifar, manakala setiap pekerja pada masa ini bekerja di sifar atau satu syarikat.

Simbol kepelbagaian diletakkan berhampiran penghujung perkaitan.

Pilihan kardinaliti yang berbeza ialah:

  • 1 Hanya 1
  • 0..1 0 atau 1
  • 1..* 1 atau lebih
  • * 0 atau 1 atau lebih
  • n n (di mana n>1)
  • 0..n 0 hingga n (di mana n>1)
  • 1..n 1 hingga n (di mana n>1)

Kardinaliti boleh ditakrifkan dengan mudah dengan mengapit pilihan teks dengan tanda petik berganda "" di hadapan atau belakang anak panah yang diberikan. Contohnya:

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

Komen kelas

Kelas boleh dikomen menggunakan penanda, untuk memberikan metadata tambahan tentang kelas tersebut. Ini boleh menunjukkan sifat kelas dengan lebih jelas. Beberapa komen biasa termasuk:

  • <<Interface>> mewakili kelas antara muka
  • <<Abstract>> mewakili kelas abstrak
  • <<Service>> mewakili kelas perkhidmatan
  • <<Enumeration>> mewakili enumerasi

Komen ditakrifkan di antara << di awal dan >> di akhir. Terdapat tiga cara untuk menambah komen pada kelas, dan output bagi ketiga-tiga cara adalah sama:

  • Sebaris dengan definisi kelas
                            
Salin
Benamkan
classDiagram class Shape <<interface>>

Pada baris berasingan selepas mentakrifkan kelas:

Kod
                            
Salin
Benamkan
classDiagram class Shape <<interface>> Shape Shape : noOfVertices Shape : draw()
  • Dalam struktur bersarang definisi kelas:
Kod
                            
Salin
Benamkan
classDiagram class Shape{ <<interface>> noOfVertices draw() } class Color{ <<enumeration>> RED BLUE GREEN WHITE BLACK }

Komen

Komen boleh dimasukkan dalam gambar rajah kelas, dan editor akan mengabaikannya. Komen perlu menduduki satu baris sendiri, dan mesti bermula dengan dua tanda peratus (%%). Semua teks sehingga baris seterusnya akan dianggap sebagai komen, termasuk sebarang sintaks gambar rajah kelas.

Kod
                            
Salin
Benamkan
classDiagram %% This whole line is a comment classDiagram class Shape <<interface>> class Shape{ <<interface>> noOfVertices draw() }

Tetapkan arah carta

Anda boleh menggunakan pernyataan arah untuk menetapkan arah pemaparan gambar rajah kelas:

Kod
                            
Salin
Benamkan
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

Interaksi

Peristiwa klik boleh diikat pada nod. Peristiwa klik boleh mencetuskan fungsi panggil balik JavaScript, atau membuka pautan yang akan dimuatkan dalam tab pelayar baharu. Nota: ciri ini dilumpuhkan apabila menggunakan securityLevel='strict', dan didayakan apabila menggunakan securityLevel='loose'.

Anda boleh mentakrifkan operasi ini pada baris berasingan selepas semua pengisytiharan kelas.

                            
Salin
Benamkan
action className "reference" "tooltip" click className call callback() "tooltip" click className href "url" "tooltip"
  • action ialah link atau callback, bergantung pada jenis interaksi yang ingin anda panggil.
  • className ialah id nod yang dikaitkan dengan operasi.
  • reference boleh jadi pautan URL, atau nama fungsi panggil balik.
  • (Pilihan) petua alat ialah rentetan yang dipaparkan apabila tetikus melayang di atas elemen.
  • Fungsi panggil balik akan dipanggil dengan nodeId sebagai parameter.

Nota

Anda boleh menggunakan note "line1 line2" untuk menambah komen pada carta. Anda boleh menggunakan note for <CLASS NAME> "line1 line2" untuk menambah komen bagi kelas tertentu.

Contoh

Kod
                            
Salin
Benamkan
classDiagram note "This is a general note" note for MyClass "This is a note for a class" class MyClass{ }

Pautan URL:

Kod
                            
Salin
Benamkan
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"

Konfigurasi

Kotak ahli

Kotak ahli kosong nod kelas boleh disembunyikan, ini dilakukan dengan menukar nilai hideEmptyMembersBox dalam konfigurasi gambar rajah kelas.

Kod
                            
Salin
Benamkan
--- config: class: hideEmptyMembersBox: true --- classDiagram class Duck