फ्लोचार्ट
ग्राफ़िकल अभिव्यक्ति
माइंड मैप
संरचित अभिव्यक्ति
नोट्स
कुशल अभिव्यक्ति

क्लास डायग्रामसिंटैक्स

क्लास डायग्राम

क्लास डायग्राम ऑब्जेक्ट-ओरिएंटेड मॉडलिंग का मुख्य बिल्डिंग ब्लॉक है। इसका उपयोग एप्लिकेशन संरचना की सामान्य अवधारणात्मक मॉडलिंग के लिए, तथा मॉडल को प्रोग्रामिंग कोड में बदलने की विस्तृत मॉडलिंग के लिए किया जाता है। क्लास डायग्राम का उपयोग डेटा मॉडलिंग के लिए भी किया जा सकता है। क्लास डायग्राम में क्लास एप्लिकेशन के मुख्य तत्वों और इंटरैक्शन का, तथा उन क्लासों का प्रतिनिधित्व करती है जिन्हें प्रोग्राम करने की आवश्यकता होती है।

कोड
                            
कॉपी करें
एम्बेड
--- 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() }

सिंटैक्स

क्लास

UML क्लास सदस्यों, जैसे प्रॉपर्टी और मेथड, तथा उनकी अतिरिक्त जानकारी को दर्शाने की व्यवस्था प्रदान करता है। क्लास के एकल इंस्टेंस में तीन भाग होते हैं:

  • शीर्ष भाग में क्लास का नाम होता है। यह बोल्ड और केंद्रित रूप में छपता है, पहला अक्षर बड़ा होता है। इसमें क्लास की प्रकृति बताने वाला वैकल्पिक टिप्पणी टेक्स्ट भी हो सकता है।
  • मध्य भाग में क्लास की प्रॉपर्टी होती हैं। वे बाईं ओर संरेखित होती हैं, और पहला अक्षर छोटा होता है।
  • निचला भाग उन क्रियाओं को समाहित करता है जिन्हें क्लास निष्पादित कर सकती है। वे भी बाईं ओर संरेखित होती हैं, और पहला अक्षर छोटा होता है।
कोड
                            
कॉपी करें
एम्बेड
--- title: Bank example --- classDiagram class BankAccount BankAccount : +String owner BankAccount : +Bigdecimal balance BankAccount : +deposit(amount) BankAccount : +withdrawal(amount)

एक क्लास परिभाषित करें

क्लास परिभाषित करने के दो तरीके हैं

  • स्पष्ट रूप से class सिंटैक्स का उपयोग करें (जैसे class Animal), यह Animal क्लास को परिभाषित करता है।
  • एक संबंध के माध्यम से, जो एक साथ दो क्लास और उनके बीच का संबंध परिभाषित करता है (जैसे Vehicle <|-- Car)।
कोड
                            
कॉपी करें
एम्बेड
classDiagram class Animal Vehicle <|-- Car

नामकरण नियम: क्लास नाम में केवल अक्षर-अंकीय अक्षर (unicode सहित), अंडरस्कोर (_) और हाइफ़न (-) हो सकते हैं।

क्लास लेबल

यदि आपको क्लास के लिए लेबल प्रदान करना है, तो निम्नलिखित सिंटैक्स का उपयोग कर सकते हैं:

कोड
                            
कॉपी करें
एम्बेड
classDiagram class Animal["Animal with a label"] class Car["Car with *! symbols"] Animal --> Car

आप लेबल में विशेष अक्षरों को एस्केप करने के लिए बैकटिक (``) का भी उपयोग कर सकते हैं:

कोड
                            
कॉपी करें
एम्बेड
classDiagram class `Animal Class!` class `Car Class` `Animal Class!` --> `Car Class`

क्लास के सदस्य परिभाषित करें

UML क्लास सदस्यों (जैसे प्रॉपर्टी और मेथड) तथा उनके बारे में अतिरिक्त जानकारी दर्शाने की व्यवस्था प्रदान करता है।

Mermaid छोटे कोष्ठक () की उपस्थिति के आधार पर प्रॉपर्टी और फ़ंक्शन या मेथड में अंतर करता है। () वाले को फ़ंक्शन या मेथड माना जाता है, शेष सभी को प्रॉपर्टी माना जाता है।

क्लास के सदस्यों को परिभाषित करने के दो तरीके हैं; सदस्य परिभाषित करने के लिए चाहे कोई भी सिंटैक्स उपयोग करें, आउटपुट परिणाम समान होता है। दो अलग-अलग तरीके हैं:

1. कोलन (:) के बाद सदस्य नाम लिखकर क्लास के सदस्य को संबद्ध करें, यह एक बार में एक सदस्य परिभाषित करने के लिए उपयोगी है। उदाहरण:

कोड
                            
कॉपी करें
एम्बेड
classDiagram class BankAccount BankAccount : +String owner BankAccount : +BigDecimal balance BankAccount : +deposit(amount) BankAccount : +withdrawal(amount)

2. घुंघराले कोष्ठक {} का उपयोग करके क्लास के सदस्यों को संबद्ध करें, जिसमें सदस्य घुंघराले कोष्ठक के भीतर समूहीकृत होते हैं। एक बार में कई सदस्य परिभाषित करने के लिए उपयुक्त। उदाहरण:

कोड
                            
कॉपी करें
एम्बेड
classDiagram class BankAccount{ +String owner +BigDecimal balance +deposit(amount) +withdrawal(amount) }

रिटर्न प्रकार

आप मेथड या फ़ंक्शन परिभाषा के अंत में लौटाए जाने वाले डेटा प्रकार को निर्दिष्ट कर सकते हैं। नोट: अंतिम ')' और रिटर्न प्रकार के बीच एक स्पेस होना चाहिए। एक उदाहरण:

कोड
                            
कॉपी करें
एम्बेड
classDiagram class BankAccount{ +String owner +BigDecimal balance +deposit(amount) bool +withdrawal(amount) int }

जेनेरिक प्रकार

जेनेरिक प्रकार को क्लास परिभाषा के भाग के रूप में, या क्लास सदस्यों या रिटर्न प्रकार के लिए भी दर्शाया जा सकता है। किसी आइटम को जेनेरिक प्रकार के रूप में दर्शाने के लिए, उस प्रकार को टिल्ड (~) में रखें। नेस्टेड प्रकार घोषणाएँ समर्थित हैं, जैसे List<List<int>>, लेकिन वर्तमान में अल्पविराम वाले जेनेरिक प्रकार, जैसे List<List<K, V>> समर्थित नहीं हैं।

कोड
                            
कॉपी करें
एम्बेड
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~~

दृश्यता

प्रॉपर्टी या मेथड/फ़ंक्शन की दृश्यता बताने के लिए, सदस्य नाम से पहले एक वैकल्पिक प्रतीक का उपयोग किया जा सकता है:

  • + सार्वजनिक
  • - निजी
  • # संरक्षित
  • ~ आंतरिक

संबंध परिभाषित करें

संबंध एक सामान्य शब्द है, जो क्लास डायग्राम और ऑब्जेक्ट डायग्राम पर पाए जाने वाले विशिष्ट प्रकार के लॉजिकल कनेक्शन को समाहित करता है।

                            
कॉपी करें
एम्बेड
[classA][Arrow][ClassB]

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

प्रकार विवरण
<|-- इनहेरिटेंस
*-- कंपोज़िशन
o-- एग्रीगेशन
--> एसोसिएशन
-- लिंक (ठोस)
..> डिपेंडेंसी
..|> रियलाइज़ेशन
.. लिंक (बिंदुदार)
कोड
                            
कॉपी करें
एम्बेड
classDiagram classA <|-- classB classC *-- classD classE o-- classF classG <-- classH classI -- classJ classK <.. classL classM <|.. classN classO .. classP

हम दो क्लासों के बीच संबंध की प्रकृति का वर्णन करने के लिए लेबल का उपयोग कर सकते हैं। इसके अलावा, तीर को उल्टी दिशा में भी उपयोग किया जा सकता है:

कोड
                            
कॉपी करें
एम्बेड
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)

संबंध लेबल

संबंध में लेबल टेक्स्ट जोड़ा जा सकता है:

                            
कॉपी करें
एम्बेड
[classA][Arrow][ClassB]:LabelText
कोड
                            
कॉपी करें
एम्बेड
classDiagram classA <|-- classB : implements classC *-- classD : composition classE o-- classF : aggregation

दोतरफा संबंध

दोतरफा संबंध लॉजिकल रूप से N:M एसोसिएशन को दर्शा सकता है:

कोड
                            
कॉपी करें
एम्बेड
classDiagram Animal <|--|> Zebra

语法如下:

                            
कॉपी करें
एम्बेड
[Relation Type][Link][Relation Type]

其中 Relation Type 是以下之一:

प्रकार विवरण
<| इनहेरिटेंस
* कंपोज़िशन
o एग्रीगेशन
> एसोसिएशन
< एसोसिएशन
|> रियलाइज़ेशन

Link निम्नलिखित में से एक है:

प्रकार विवरण
-- ठोस रेखा
.. बिंदुदार रेखा

लॉलीपॉप इंटरफ़ेस

क्लास को एक विशेष संबंध प्रकार भी सौंपा जा सकता है, जो क्लास के लिए लॉलीपॉप इंटरफ़ेस परिभाषित करता है। लॉलीपॉप इंटरफ़ेस निम्नलिखित सिंटैक्स से परिभाषित किया जाता है:

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

लॉलीपॉप वाला इंटरफ़ेस (bar) क्लास (foo) से जुड़ता है।

नोट: परिभाषित प्रत्येक इंटरफ़ेस अद्वितीय होता है, जिसका उद्देश्य यह है कि उसे क्लासों के बीच साझा न किया जाए और उसकी ओर कई कनेक्शन की अनुमति न हो।

कोड
                            
कॉपी करें
एम्बेड
classDiagram bar ()-- foo
कोड
                            
कॉपी करें
एम्बेड
classDiagram class Class01 { int amount draw() } Class01 --() bar Class02 --() bar foo ()-- Class01

नेमस्पेस परिभाषित करें

नेमस्पेस क्लासों को समूहित करता है।

कोड
                            
कॉपी करें
एम्बेड
classDiagram namespace BaseShapes { class Triangle class Rectangle { double width double height } }

संबंध की कार्डिनैलिटी/मल्टीप्लिसिटी

क्लास डायग्राम में मल्टीप्लिसिटी या कार्डिनैलिटी दर्शाती है कि एक क्लास के कितने इंस्टेंस किसी अन्य क्लास के इंस्टेंस से जुड़ सकते हैं। उदाहरण के लिए, प्रत्येक कंपनी में एक या अधिक कर्मचारी होंगे, शून्य नहीं, और प्रत्येक कर्मचारी वर्तमान में शून्य या एक कंपनी में कार्यरत होता है।

मल्टीप्लिसिटी प्रतीक एसोसिएशन के अंत के पास रखा जाता है।

विभिन्न कार्डिनैलिटी विकल्प हैं:

  • 1 केवल 1
  • 0..1 0 या 1
  • 1..* 1 या अधिक
  • * 0 या 1 या अधिक
  • n n (जहाँ n>1)
  • 0..n 0 से n (जहाँ n>1)
  • 1..n 1 से n (जहाँ n>1)

कार्डिनैलिटी को किसी दिए गए तीर के आगे या पीछे टेक्स्ट विकल्प को दोहरे उद्धरण चिह्न "" में लपेटकर आसानी से परिभाषित किया जा सकता है। उदाहरण:

                            
कॉपी करें
एम्बेड
[classA] "cardinality1" [Arrow] "cardinality2" [ClassB]:LabelText
कोड
                            
कॉपी करें
एम्बेड
classDiagram Customer "1" --> "*" Ticket Student "1" --> "1..*" Course Galaxy --> "many" Star : Contains

क्लास की टिप्पणी

क्लास पर टैग का उपयोग करके टिप्पणी की जा सकती है, जिससे उस क्लास के बारे में अतिरिक्त मेटाडेटा प्रदान किया जाता है। यह क्लास की प्रकृति को अधिक स्पष्ट रूप से दर्शा सकता है। कुछ सामान्य टिप्पणियों में शामिल हैं:

  • <<Interface>> एक इंटरफ़ेस क्लास दर्शाता है
  • <<Abstract>> एक अमूर्त क्लास दर्शाता है
  • <<Service>> एक सेवा क्लास दर्शाता है
  • <<Enumeration>> एनम दर्शाता है

टिप्पणी शुरुआत के << और अंत के >> में परिभाषित की जाती है। क्लास में टिप्पणी जोड़ने के तीन तरीके हैं, तीनों तरीकों का आउटपुट समान होता है:

  • क्लास परिभाषा के साथ इनलाइन
                            
कॉपी करें
एम्बेड
classDiagram class Shape <<interface>>

क्लास परिभाषित करने के बाद अलग पंक्ति में:

कोड
                            
कॉपी करें
एम्बेड
classDiagram class Shape <<interface>> Shape Shape : noOfVertices Shape : draw()
  • क्लास परिभाषा की नेस्टेड संरचना में:
कोड
                            
कॉपी करें
एम्बेड
classDiagram class Shape{ <<interface>> noOfVertices draw() } class Color{ <<enumeration>> RED BLUE GREEN WHITE BLACK }

टिप्पणी

क्लास डायग्राम में टिप्पणी दर्ज की जा सकती है, जिसे एडिटर अनदेखा कर देगा। टिप्पणी को अलग पंक्ति में होना चाहिए और दोहरे प्रतिशत चिह्न (%%) से शुरू होना चाहिए। अगली पंक्ति तक का सारा टेक्स्ट, किसी भी क्लास डायग्राम सिंटैक्स सहित, टिप्पणी माना जाएगा।

कोड
                            
कॉपी करें
एम्बेड
classDiagram %% This whole line is a comment classDiagram class Shape <<interface>> class Shape{ <<interface>> noOfVertices draw() }

चार्ट की दिशा सेट करें

आप क्लास डायग्राम की रेंडरिंग दिशा सेट करने के लिए दिशा कथन का उपयोग कर सकते हैं:

कोड
                            
कॉपी करें
एम्बेड
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

इंटरैक्शन

नोड के साथ क्लिक ईवेंट बाइंड किया जा सकता है। क्लिक ईवेंट JavaScript कॉलबैक फ़ंक्शन ट्रिगर कर सकता है, या एक लिंक खोल सकता है जो नए ब्राउज़र टैब में लोड होगा। नोट: securityLevel='strict' का उपयोग करते समय यह सुविधा अक्षम रहती है, और securityLevel='loose' का उपयोग करते समय सक्षम रहती है।

आप इन क्रियाओं को सभी क्लास घोषणाओं के बाद एक अलग पंक्ति में परिभाषित कर सकते हैं।

                            
कॉपी करें
एम्बेड
action className "reference" "tooltip" click className call callback() "tooltip" click className href "url" "tooltip"
  • action link या callback है, यह इस पर निर्भर करता है कि आप किस प्रकार का इंटरैक्शन कॉल करना चाहते हैं।
  • className उस नोड id है जो क्रिया से संबद्ध है।
  • reference URL लिंक या कॉलबैक फ़ंक्शन का नाम हो सकता है।
  • (वैकल्पिक) टूलटिप वह स्ट्रिंग है जो माउस को किसी तत्व पर होवर करने पर प्रदर्शित होती है।
  • कॉलबैक फ़ंक्शन को nodeId पैरामीटर के रूप में पास करके कॉल किया जाएगा।

नोट

चार्ट पर टिप्पणी जोड़ने के लिए note "line1 line2" का उपयोग किया जा सकता है। किसी विशिष्ट क्लास के लिए टिप्पणी जोड़ने के लिए note for <CLASS NAME> "line1 line2" का उपयोग किया जा सकता है।

उदाहरण

कोड
                            
कॉपी करें
एम्बेड
classDiagram note "This is a general note" note for MyClass "This is a note for a class" class MyClass{ }

वेबसाइट लिंक:

कोड
                            
कॉपी करें
एम्बेड
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"

कॉन्फ़िगरेशन

सदस्य बॉक्स

क्लास नोड के खाली सदस्य बॉक्स को छिपाया जा सकता है, यह क्लास डायग्राम कॉन्फ़िगरेशन के hideEmptyMembersBox मान को बदलकर किया जाता है।

कोड
                            
कॉपी करें
एम्बेड
--- config: class: hideEmptyMembersBox: true --- classDiagram class Duck