वर्ग आरेख (क्लास डायग्राम)

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

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

डायग्राम में, क्लासों को उन बक्सों के साथ दर्शाया गया है जिनमें तीन डिब्बे हैं: एक प्रणाली के डिज़ाइन में, कई क्लासों की पहचान की जाती है और उन्हें एक क्लास डायग्राम में एक साथ समूहीकृत किया जाता है जो उनके बीच स्थिर संबंधों को निर्धारित करने में सहायता करता है। विस्तृत मॉडलिंग में, वैचारिक डिज़ाइन की क्लासों को अधिकांशतः उपक्लासों में विभाजित किया जाता है। प्रणाली के सम्बन्ध का और वर्णन करने के लिए, इन क्लास डायग्रामों को स्थिति डायग्राम या यूएमएल स्थिति मशीन द्वारा पूरक किया जा सकता है।
 * शीर्ष डिब्बे में क्लास का नाम होता है। यह बोल्ड और बीच में मुद्रित है, और पहला अक्षर बड़े अक्षरों में है।
 * मध्य डिब्बे में क्लास की विशेषताएँ सम्मिलित हैं। वे बाएँ-संरेखित हैं और पहला अक्षर लोअरकेस है।
 * निचले डिब्बे में वे ऑपरेशन सम्मिलित हैं जिन्हें क्लास निष्पादित कर सकती है। वे भी बाएँ-संरेखित हैं और पहला अक्षर लोअरकेस है।

सदस्य
यूएमएल क्लास के सदस्यों का प्रतिनिधित्व करने के लिए तंत्र प्रदान करता है, जैसे कि विशेषताएँ और विधियाँ, और कंस्ट्रक्टर्स की तरह उनके बारे में अतिरिक्त जानकारी दी जाती है ।

दृश्यता
किसी क्लास सदस्य (अर्थात कोई विशेषता या विधि) की दृश्यता निर्दिष्ट करने के लिए, इन नोटेशन को सदस्यों के नाम से पहले रखा जाना चाहिए: व्युत्पन्न गुण वह गुण है जिसका मूल्य (या मान) अन्य जानकारी से उत्पन्न या गणना किया जाता है, उदाहरण के लिए, अन्य गुणों के मूल्यों का उपयोग करते है ।

एक व्युत्पन्न गुण को उसके नाम के पहले फॉरवर्ड स्लैश '/' के साथ दिखाया जाता है।

स्कोप
यूएमएल सदस्यों के लिए दो प्रकार के सीमा (कंप्यूटर विज्ञान) निर्दिष्ट करता है: उदाहरण और क्लास, और बाद वाले को रेखांकित नामों द्वारा दर्शाया जाता है।
 * इंस्टेंस सदस्यों का सीमा एक विशिष्ट इंस्टेंस तक होता है।
 * विशेषता मान उदाहरणों के बीच भिन्न हो सकते हैं
 * विधि आह्वान उदाहरण की स्थिति को प्रभावित कर सकता है (अर्थात उदाहरण की विशेषताओं को बदलें)
 * कई प्रोग्रामिंग भाषाओं में क्लास के सदस्यों को समान्यत: "स्थैतिक" के रूप में पहचाना जाता है। कार्यक्षेत्र का अंत क्लास ही है।
 * विशेषता मान सभी उदाहरणों के लिए समान हैं
 * विधि मंगलाचरण क्लासिफायरियर की स्थिति को प्रभावित नहीं करता है

किसी सदस्य के लिए क्लासिफायर स्कोप को निरुपित करने के लिए, उसके नाम को रेखांकित किया जाना चाहिए। अन्यथा, उदाहरण का सीमा डिफ़ॉल्ट रूप से मान लिया जाता है।

संबंध
संबंध एक सामान्य शब्द है जो क्लास और वस्तु डायग्रामों पर पाए जाने वाले विशिष्ट प्रकार के तार्किक कनेक्शनों को कवर करता है। यूएमएल निम्नलिखित संबंधों को परिभाषित करता है:

निर्भरता
निर्भरता (यूएमएल) एक प्रकार का जुड़ाव है जहां आश्रित और स्वतंत्र मॉडल तत्वों के बीच एक अर्थपूर्ण संबंध होता है। यह दो तत्वों के बीच उपस्थित होता है यदि एक तत्व (सर्वर या लक्ष्य) की परिभाषा में परिवर्तन से दूसरे (क्लाइंट या स्रोत) में परिवर्तन हो सकता है। यह जुड़ाव एक पक्षीय है. निर्भरता को एक विवर्त तीर के साथ धराशायी रेखा के रूप में प्रदर्शित किया जाता है जो ग्राहक से आपूर्तिकर्ता तक निरुपित करता है।

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

एकत्रीकरण
एकत्रीकरण (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग) एक एसोसिएशन संबंध का एक प्रकार है; एकत्रीकरण एसोसिएशन की तुलना में अधिक विशिष्ट है। यह एक ऐसा संघ है जो आंशिक-संपूर्ण या आंशिक-संबंध का प्रतिनिधित्व करता है। जैसा कि छवि में दिखाया गया है, एक प्रोफेसर के पास पढ़ाने के लिए एक क्लास है। एक प्रकार के संघ के रूप में, एक एकत्रीकरण को नाम दिया जा सकता है और इसमें वही अलंकरण हो सकते हैं जो एक संघ में हो सकते हैं। चूँकि एक एकत्रीकरण में दो से अधिक क्लास सम्मिलित नहीं हो सकते हैं; यह एक द्विआधारी संघ होना चाहिए. इसके अतिरिक्त, कार्यान्वयन के समय एकत्रीकरण और संघों के बीच संभवतः ही कोई अंतर होता है, और डायग्राम एकत्रीकरण संबंधों को पूरी तरह से छोड़ सकता है। एकत्रीकरण तब हो सकता है जब एक क्लास अन्य क्लासों का संग्रह या कंटेनर होता है, किन्तु निहित क्लासों में कंटेनर पर शक्तिशाली जीवनचक्र निर्भरता नहीं होती है। कंटेनर के नष्ट हो जाने पर भी कंटेनर की सामग्री उपस्थित रहती है।

एकीकृत मॉडलिंग भाषा में, इसे ग्राफिक रूप से युक्त क्लास पर एक खोखले विषमकोण के रूप में दर्शाया जाता है, जिसमें एक पंक्ति होती है जो इसे निहित क्लास से जोड़ती है। समुच्चय शब्दार्थ की दृष्टि से एक विस्तारित वस्तु है जिसे कई परिचालनों में एक इकाई के रूप में माना जाता है, चूँकि भौतिक रूप से यह कई छोटी वस्तुओं से बना होता है।

रचना
एक रचना संबंध का यूएमएल प्रतिनिधित्व, रेखाओं के युक्त क्लास के अंत पर एक भरे हुए हीरे के आकार के रूप में संरचना को दर्शाता है जो निहित क्लास को युक्त क्लास से जोड़ता है।

संरचना और एकत्रीकरण के बीच अंतर

 * रचना संबंध
 * 1. वास्तविक दुनिया के संपूर्ण-भाग संबंधों का प्रतिनिधित्व करने का प्रयास करते समय, उदाहरण के लिए इंजन एक कार का एक भाग है.
 * 2. जब कंटेनर नष्ट हो जाता है, तो सामग्री भी नष्ट हो जाती है, उदाहरण के लिए। एक विश्वविद्यालय और उसके विभाग।


 * एकत्रीकरण संबंध
 * 1. किसी सॉफ़्टवेयर या डेटाबेस संबंध का प्रतिनिधित्व करते समय, उदा. कार मॉडल इंजन ईएनजी01 कार मॉडल सीएम01 का भाग है, क्योंकि इंजन, ईएनजी01 संभवतः एक अलग कार मॉडल का भी भाग है।
 * 2. जब कंटेनर नष्ट हो जाता है, तो सामग्री समान्यत: नष्ट नहीं होती है, उदाहरण के लिए एक प्रोफेसर के पास छात्र हैं; जब प्रोफेसर विश्वविद्यालय छोड़ते हैं तो छात्र उनके साथ नहीं जाते हैं।

इस प्रकार एकत्रीकरण संबंध को रचना के भौतिक नियंत्रण से अलग करने के लिए अधिकांशतः कैटलॉग नियंत्रण होता है।

सामान्यीकरण/विरासत
यह निरुपित करता है कि दो संबंधित क्लासों (उपक्लास) में से एक को दूसरे (सुपरप्रकार) का एक विशेष रूप माना जाता है और सुपरक्लास को उपक्लास का सामान्यीकरण माना जाता है। सम्बन्ध में, इसका अर्थ यह है कि उपप्रकार का कोई भी उदाहरण सुपरक्लास का एक उदाहरण है। इस रूप के सामान्यीकरण का एक अनुकरणीय वृक्ष जैविक क्लासीकरण में पाया जाता है: मनुष्य सिमियन का एक उपक्लास है, जो स्तनपायी का एक उपक्लास है, इत्यादि। इस संबंध को वाक्यांश में एक 'a ,b है' (एक इंसान एक स्तनपायी है, एक स्तनपायी एक जानवर है) द्वारा सबसे सरलता से समझा जा सकता है।

सामान्यीकरण का यूएमएल ग्राफिकल प्रतिनिधित्व लाइन (या लाइनों के पेड़) के सुपरक्लास छोर पर एक खोखला त्रिकोण आकार है जो इसे एक या अधिक उपप्रकारों से जोड़ता है।

symbolic of realization          (subclass) _______▻ (superclass)

सामान्यीकरण संबंध को वंशानुक्रम (कंप्यूटर विज्ञान) के रूप में भी जाना जाता है या एक संबंध है।

सामान्यीकरण संबंध में सुपरक्लास (कंप्यूटर विज्ञान) (बेस क्लास) को पैरेंट, सुपरक्लास, बेस क्लास या बेस प्रकार के रूप में भी जाना जाता है।

विशेषज्ञता संबंध में उपप्रकार को "बच्चा", उपक्लास, व्युत्पन्न क्लास, व्युत्पन्न प्रकार, विरासत क्लास, या विरासत प्रकार के रूप में भी जाना जाता है।

ध्यान दें कि यह सम्बन्ध जैविक माता-पिता-बच्चे के सम्बन्ध से कोई समानता नहीं रखता है: इन शब्दों का उपयोग अधिक समान्य है, किन्तु अस्पष्ट हो सकता है।


 * A, B का एक प्रकार है
 * उदाहरण के लिए, ओक एक प्रकार का पेड़ है, एक ऑटोमोबाइल एक प्रकार का वाहन है

सामान्यीकरण केवल क्लास डायग्रामों और उपयोग केस डायग्रामों पर दिखाया जा सकता है।

अनुभव /कार्यान्वयन
यूएमएल मॉडलिंग में, एक अनुभव संबंध दो मॉडल तत्वों के बीच एक संबंध है, जिसमें एक मॉडल तत्व (क्लाइंट) उस सम्बन्ध को अनुभव करता है (कार्यान्वयन या निष्पादित करता है) जिसे दूसरा मॉडल तत्व (आपूर्तिकर्ता) निर्दिष्ट करता है।

एक अनुभव का यूएमएल ग्राफिकल प्रतिनिधित्व धराशायी लाइन (या लाइनों के पेड़) के इंटरफ़ेस अंत पर एक खोखला त्रिकोण आकार है जो इसे एक या अधिक कार्यान्वयनकर्ताओं से जोड़ता है। धराशायी लाइन के इंटरफ़ेस अंत पर एक सादा तीर शीर्ष का उपयोग किया जाता है जो इसे अपने उपयोगकर्ताओं से जोड़ता है। घटक डायग्रामों में, बॉल-एंड-सॉकेट ग्राफिक सम्मेलन का उपयोग किया जाता है (कार्यान्वयनकर्ता एक गेंद या लॉलीपॉप को उजागर करते हैं, जबकि उपयोगकर्ता एक सॉकेट दिखाते हैं)।

अनुभव केवल क्लास या घटक डायग्रामों पर दिखाए जा सकते हैं। एक अनुभव क्लासों, इंटरफेस, घटकों और पैकेजों के बीच एक संबंध है जो ग्राहक तत्व को आपूर्तिकर्ता तत्व से जोड़ता है। क्लासों /घटकों और इंटरफेस के बीच एक अनुभव संबंध से पता चलता है कि क्लास/घटक इंटरफ़ेस द्वारा प्रस्तुत किए गए संचालन का अनुभव करता है।

symbolic of realization          (implementer) ---▻ (interface)

निर्भरता
निर्भरता (यूएमएल) बंधन का एक अशक्त रूप हो सकता है जो निरुपित करता है कि एक क्लास दूसरे पर निर्भर करता है क्योंकि वह किसी समय इसका उपयोग करता है। यदि स्वतंत्र क्लास आश्रित क्लास की किसी विधि का एक पैरामीटर चर या स्थानीय चर है तो एक क्लास दूसरे पर निर्भर करता है। कभी-कभी दो क्लासों के बीच संबंध बहुत अशक्त होते हैं। उन पर निष्पादन नहीं किया जाता है पूर्ण रूप से सदस्य चर किन्तु उन्हें सदस्य फ़ंक्शन तर्क के रूप में कार्यान्वित किया जा सकता है।

बहुलता
यह साहचर्य संबंध निरुपित करता है कि (कम से कम) दो संबंधित क्लासों में से एक दूसरे का संदर्भ देता है। इस सम्बन्ध को समान्यत: a के पास b के रूप में वर्णित किया जाता है (एक मां बिल्ली के पास बिल्ली के बच्चे होते हैं, बिल्ली के बच्चे के पास एक मां बिल्ली होती है)।

किसी एसोसिएशन का यूएमएल प्रतिनिधित्व दो संबंधित क्लासों को जोड़ने वाली एक रेखा है। पंक्ति के प्रत्येक छोर पर वैकल्पिक संकेतन है। उदाहरण के लिए, हम एक तीर के शीर्ष का उपयोग करके संकेत कर सकते हैं कि तीर की पूंछ से नुकीला सिरा दिखाई दे रहा है। हम एक गेंद के स्थान से स्वामित्व का संकेत दे सकते हैं, भूमिका के लिए एक नाम प्रदान करके उस अंत के तत्वों की भूमिका और उस इकाई के उदाहरणों की बहुलता (परिप्रेक्ष्य से एसोसिएशन में भाग लेने वाली वस्तुओं की संख्या की सीमा) दूसरे छोर का है ।

संस्थाएँ
इकाई क्लास प्रणाली द्वारा प्रबंधित लंबे समय तक चलने वाली जानकारी और कभी-कभी जानकारी से जुड़े सम्बन्ध को मॉडल करते हैं। उन्हें डेटाबेस तालिकाओं या अन्य डेटा-संचार के रूप में पहचाना नहीं जाना चाहिए।

वह वृत्त के रूप में खींचे गए हैं और वृत्त के नीचे एक छोटी रेखा जुड़ी हुई है। वैकल्पिक रूप से उन्हें क्लास नाम के ऊपर "इकाई" स्टीरियोटाइप नोटेशन के साथ सामान्य क्लासों के रूप में तैयार किया जा सकता है।

यह भी देखें

 * निष्पादन योग्य यूएमएल
 * यूएमएल उपकरणों की सूची
 * वस्तु-उन्मुख मॉडलिंग
 * निर्भरता (यूएमएल)
 * संबंधित डायग्राम
 * डोमेन मॉडल
 * इकाई-संबंध मॉडल
 * वस्तु डायग्राम

बाहरी संबंध

 * Introduction to UML 2 Class Diagrams
 * UML 2 Class Diagram Guidelines
 * IBM Class diagram Introduction
 * OMG UML 2.2 specification documents
 * UML 2 Class Diagrams