UML क्लास डायग्राम्स: नोटेशन, संबंध और सर्वोत्तम प्रथाओं का व्यापक मार्गदर्शिका

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

What is Class Diagram?

क्लास के अनातोमी को समझना

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

  • क्लास नाम: पहले (ऊपरी) भाग में स्थित है। यह अनिवार्य है। एबस्ट्रैक्ट क्लासेज आमतौर पर इटैलिक में लिखी जाती हैं।
  • विशेषताएं: दूसरे भाग में स्थित हैं। ये क्लास के राज्य या संरचनात्मक विशेषताओं का प्रतिनिधित्व करते हैं (मेंबर चर)।
  • संचालन (विधियां): तीसरे भाग में स्थित हैं। ये क्लास द्वारा प्रदान की जाने वाली व्यवहारात्मक विशेषताओं या सेवाओं को परिभाषित करते हैं।

दृश्यता और पहुंच नियंत्रण

एनकैप्सुलेशन को परिभाषित करने के लिए, UML विशेष प्रतीकों का उपयोग विशेषता और संचालन नामों के पहले करता है ताकि दृश्यता को दर्शाया जा सके। यह निर्धारित करता है कि कौन सी अन्य क्लासेज इन सदस्यों तक पहुंच सकती हैं।
Class Diagram Tutorial

प्रतीक दृश्यता प्रकार विवरण
+ सार्वजनिक किसी भी अन्य क्लास द्वारा प्राप्त किया जा सकता है।
निजी केवल क्लास के भीतर ही उपलब्ध।
# सुरक्षित क्लास और उसके उपवर्गों (व्युत्पन्न क्लासेस) द्वारा उपलब्ध।
~ पैकेज एक ही पैकेज के किसी भी क्लास द्वारा उपलब्ध।

क्लास संबंधों को समझना

UML क्लास डायग्राम की शक्ति इस बात में है कि यह कैसे दर्शाता हैक्लासों के बीच बातचीत. जैसे कोड कार्यान्वयन तर्क पर निर्भर होता है, वैसे ही UML इरादे को व्यक्त करने के लिए विशिष्ट कनेक्टर्स पर निर्भर होता है। नीचे मुख्य संबंध प्रकार दिए गए हैं:
UML Class Diagram Tutorial

1. विरासत (सामान्यीकरण)

विरासत एक को दर्शाती है“है-एक”संबंध। यह एक वर्गीकरण संबंध है जहां एक विशिष्ट वर्गीकरण (बच्चा) सामान्य वर्गीकरण (माता-पिता) से विशेषताओं को विरासत में प्राप्त करता है। उदाहरण के लिए, एकवृत्तएक हैआकृति.

  • प्रतीक: एक ठोस रेखा जिसमें बच्चे क्लास से माता-पिता क्लास की ओर इशारा करता हुआ खाली तीर का सिरा होता है।
  • उपयोग: एक सुपरक्लास में सामान्यता लाकर विश्लेषण मॉडल को सरल बनाने के लिए उपयोग किया जाता है।

2. संबंध

यह समकक्ष क्लासों के बीच एक संरचनात्मक संबंध है, जिसे अक्सर क्रिया शब्द (उदाहरण के लिए, “शिक्षक छात्र को पढ़ाता है”) द्वारा वर्णित किया जाता है। इसका अर्थ है कि दो क्लासेस संबंधित हैं लेकिन इससे ढीला जुड़ाव बनता है।

  • प्रतीक: दो क्लासों को जोड़ने वाली एक ठोस रेखा।
  • बहुलता: यह बताता है कि कितनी वस्तुएं भाग लेती हैं (उदाहरण के लिए,1, 0..1, 1..*).

3. संग्रहण

संग्रहण एक विशेष प्रकार का संबंध है जो एक को दर्शाता है“भाग-हिस्सा” संबंध। हालांकि, इसका अर्थ है कमजोर स्वामित्व। भाग पूर्ण के बिना भी स्वतंत्र रूप से अस्तित्व में हो सकता है। उदाहरण के लिए, एककार के पास हैटायर लेकिन यदि कार नष्ट हो जाती है, तो टायर अभी भी अस्तित्व में रह सकते हैं।

  • प्रतीक: एक ठोस रेखा जिसके अंत में एकअनपूर्ण (खोखला) हीरा है जो संगृहीत (माता-पिता) वर्ग से जुड़ा है।

4. संयोजन

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

  • प्रतीक: एक ठोस रेखा जिसके अंत में एकभरा हुआ (ठोस) हीरा है जो संयुक्त (माता-पिता) वर्ग से जुड़ा है।

5. निर्भरता

यह एक “उपयोग” संबंध का प्रतिनिधित्व करता है। यह तब मौजूद होता है जब एक क्लास दूसरी क्लास के साथ विधि में पैरामीटर के रूप में या स्थानीय चर के रूप में बजाय फील्ड के रूप में बातचीत करती है। आपूर्तिकर्ता क्लास के परिभाषा में परिवर्तन क्लाइंट क्लास को प्रभावित कर सकते हैं।

  • प्रतीक: एक बिंदीदार रेखा जिसमें निर्भरता की ओर खुला तीर होता है।

    UML Class Diagram Tutorial

प्रभावी क्लास आरेखों के लिए दिशानिर्देश

पठनीय और सटीक आरेख बनाने के लिए विशिष्ट दिशानिर्देशों का पालन करना आवश्यक है।

  1. मानक नामकरण पद्धति का उपयोग करें: क्लास के नाम संज्ञा होने चाहिए (उदाहरण के लिए, ग्राहक, आदेश), आम तौर पर बड़े अक्षरों में। संबंध के नाम क्रिया होने चाहिए (उदाहरण के लिए, रखता है, समावेश करता है).
  2. दृष्टिकोण की पहचान करें: आरेख बनाने से पहले तय करें कि आप एक अवधारणात्मक दृष्टिकोण (क्षेत्र की अवधारणाएँ), एक विनिर्देश दृष्टिकोण (इंटरफेस), या एक कार्यान्वयन दृष्टिकोण (कोड-विशिष्ट)।
  3. जटिलता का प्रबंधन करें: एक ही आरेख में पूरी प्रणाली के मॉडलिंग की कोशिश न करें। प्रणाली को बहुत से आरेखों में विभाजित करें, जिसमें विशिष्ट मॉड्यूल या व्यापार क्षेत्रों पर ध्यान केंद्रित करें।
  4. बहुलता को स्पष्ट रूप से लेबल करें: हमेशा स्पष्ट करें कि कोई संबंध एक-एक, एक-बहुत या बहुत-बहुत है ताकि डेटाबेस या कोड तर्क व्यापार आवश्यकता को प्रतिबिंबित करे।

    ऑनलाइन क्लास आरेख कैसे बनाएं

वास्तविक दुनिया का उदाहरण: आदेश प्रसंस्करण प्रणाली

एक मानक ई-कॉमर्स परिदृश्य को ध्यान में रखें जिसमें एक ग्राहक, एक आदेश और एक उत्पाद शामिल है। यहां संबंधों का एक वर्ग आरेख संरचना:

  • ग्राहक और आदेश (संबंध): एक ग्राहक रखता है एक आदेश। बहुलता है 1 ग्राहक से 0..* आदेशों।
  • आदेश और लाइनआइटम (संघटना): एक आदेश लाइनआइटम से बना होता है। यदि आदेश को हटा दिया जाता है, तो लाइनआइटम का अर्थ खो जाता है और नष्ट हो जाता है। यह आदेश की ओर इंगित करता हुआ भरा हुआ हीरा है।
  • लाइनआइटम और उत्पाद (संबंध/एकीकरण): एक लाइनआइटम एक उत्पाद की ओर संकेत करता है। हालांकि, उत्पाद लाइनआइटम के स्वतंत्र रूप से अस्तित्व में है (यह स्टॉक में रहता है)। यह एक मानक संबंध या कमजोर एकीकरण है।
  • भुगतान (वास्तविकीकरण): एक इंटरफेस जिसका नाम है IPayment क्लास द्वारा वास्तविक बनाया जा सकता है क्रेडिट कार्ड भुगतान और PayPal भुगतान.

अनुकूलन के लिए टिप्स और ट्रिक्स

इन टिप्स को लागू करें ताकि आपके आरेखों को सरल चित्रों से पेशेवर तकनीकी उपकरणों में बदला जा सके:

  • “आवाज में पढ़ने” का परीक्षण: अपने संबंधों को आवाज में पढ़ें। “एक कार पहियों से बनी है।” यदि यह अस्वाभाविक लगता है, तो जांचें कि क्या आप सही तीर की दिशा या संबंध प्रकार का उपयोग कर रहे हैं।
  • पैरामीटर दिशात्मकता: क्रियाओं के भाग में, आप पैरामीटर दिशा को उपयोग करके निर्दिष्ट कर सकते हैं in, आउट, या इनआउट पैरामीटर नाम के पहले डेटा फ्लो को स्पष्ट करने के लिए।
  • एबस्ट्रैक्ट इटैलिक्स: यदि कोई क्लास सीधे इनस्टेंशिएट नहीं की जा सकती है (यह एबस्ट्रैक्ट है), तो सुनिश्चित करें कि इसका नाम इटैलिक में है। यह डेवलपर्स के लिए एक सूक्ष्म लेकिन महत्वपूर्ण संकेत है।
  • क्रॉसिंग लाइन्स से बचें: जबकि आधुनिक टूल्स जैसे विजुअल पैराडाइग्म रूटिंग को अच्छी तरह से संभालते हैं, लेकिन क्रॉसिंग लाइन्स को कम करने के लिए क्लासेज को हाथ से व्यवस्थित करने की कोशिश करें, जिससे पठनीयता में काफी सुधार होता है।

क्लास डायग्राम ऑडिट चेकलिस्ट

अपने UML क्लास डायग्राम को अंतिम रूप देने से पहले, इस क्रियान्वयन योग्य चेकलिस्ट के माध्यम से गुजरें:

  • [ ] पूर्णता: क्या विशिष्ट मॉड्यूल के लिए आवश्यक सभी क्लासेज उपलब्ध हैं?
  • [ ] दृश्यता: क्या एट्रिब्यूट्स और ऑपरेशन्स को सही दृश्यता संकेतों (+, -, #) के साथ चिह्नित किया गया है?
  • [ ] संबंध सटीकता: क्या आपने सही तरीके से एग्रीगेशन (खाली हीरा) और कंपोजिशन (भरा हीरा) के बीच अंतर किया है?
  • [ ] बहुलता: क्या संबंधों के दोनों सिरों पर कार्डिनैलिटी परिभाषित है (उदाहरण के लिए, 1..*)?
  • [ ] नैविगेबिलिटी: क्या तीर स्पष्ट रूप से इंगित करते हैं कि कौन सी क्लास दूसरी क्लास को एक्सेस कर सकती है?
  • [ ] नामकरण: क्या क्लास नाम संज्ञा हैं और अद्वितीय हैं? क्या संबंध वर्ब स्पष्ट हैं?
  • [ ] सामान्यीकरण: क्या विरासत पद्धति समझ में आती है (Is-A संबंध)?