“ऑब्जेक्ट-ओरिएंटेड डिज़ाइन सीखने का सबसे अच्छा तरीका पैटर्न को याद करना नहीं है — यह भूमिकाओं को निभाना है।”
इस लेख में, हम एक के माध्यम से चलेंगेCRC कार्ड का स्टेप-बाय-स्टेप परिचय (वर्ग-ज़िम्मेदारी-सहयोगी) वास्तविक दुनिया के, बिगिनर-फ्रेंडली उदाहरण के उपयोग से: एकपुस्तकालय किताब उधार लेने की प्रणालीक्या आप सॉफ्टवेयर डिज़ाइन में अपनी यात्रा शुरू कर रहे हैं या एक टीम वर्कशॉप का नेतृत्व कर रहे हैं, CRC कार्ड ऑब्जेक्ट-ओरिएंटेड प्रणालियों को मॉडल करने का एक सरल, शक्तिशाली और सहयोगी तरीका प्रदान करते हैं।
🎯 CRC कार्ड क्या हैं?
CRC कार्ड ऑब्जेक्ट-ओरिएंटेड डिज़ाइन में उपयोग किए जाने वाले हल्के, भौतिक (या डिजिटल) मॉडलिंग तकनीक हैं। प्रत्येक कार्ड एक का प्रतिनिधित्व करता हैवर्ग और तीन मुख्य तत्वों को समावेश करता है:
| क्षेत्र | विवरण |
|---|---|
| वर्ग | वर्ग का नाम (उदाहरण के लिएपुस्तक) |
| ज़िम्मेदारियाँ | वह क्या है जो वर्गजानता हैयाकरता है |
| सहयोगी | वे अन्य वर्ग जिनके साथ इस वर्ग को काम करने की आवश्यकता होती है |
वे विशेष रूप से प्रभावी हैंमस्तिष्क झड़ी, डिज़ाइन करने के लिए, औरसत्यापन कर रहा हैविकास के शुरुआती चरण में क्लास संरचनाएँ — कोड की एक भी पंक्ति लिखने से पहले।
📚 केस स्टडी: पुस्तकालय पुस्तक उधार लेने प्रणाली
आइए एक छोटे सार्वजनिक पुस्तकालय की कल्पना करें जहाँ सदस्य निम्न कर सकते हैं:
-
शीर्षक के आधार पर पुस्तकों की खोज करें
-
उपलब्ध पुस्तकें उधार लें (सीमा तक)
-
जब तैयार हों तो पुस्तकें वापस करें
प्रणाली को ट्रैक करना चाहिए:
-
कौन सी पुस्तकें उधार ली गई हैं
-
किसके द्वारा
-
जब वे लौटाए जाने चाहिए
हम उपयोग करेंगेCRC कार्ड विधिइस प्रणाली में क्लासेस की खोज और सुधार करने के लिए — चरण दर चरण।
✅ चरण 1: उम्मीदवार क्लासेस खोजें (नाम विचार विनिमय)
पहले परिदृश्य को पढ़ें और निकालेंसंज्ञाएँ— ये संभावित क्लासेस हैं।
विवरण से, हम पहचानते हैं:
-
पुस्तकालय
-
सदस्य (या अतिथि)
-
पुस्तक
-
उधार (या उधार लेना)
-
मिति (संभवतः बहुत छोटी)
-
पुस्तकालय कार्ड (सदस्य का हिस्सा हो सकता है)
हम फ़िल्टर करते हैं और केवल सबसे महत्वपूर्ण को रखते हैं:
✅ सदस्य, पुस्तक, लोन
⚠️ नोट: पहले सभी क्लासेस सही करने के बारे में चिंता मत करें — यही CRC कार्ड्स की सुंदरता है। आप भूमिका निभाने के माध्यम से गायब क्लासेस को खोज लेंगे!
✏️ चरण 2: प्रारंभिक CRC कार्ड बनाएं
अब, हम आवंटित करते हैंजिम्मेदारियाँ और सहयोगी प्रत्येक क्लास को।
📘 क्लास: पुस्तक
| जिम्मेदारियाँ | सहयोगी |
|---|---|
| इसका शीर्षक जानता है | — |
| इसके लेखक को जानता है | — |
| इसका ISBN जानता है | — |
| यह वर्तमान में उपलब्ध है या नहीं, इसके बारे में जानता है | लोन |
| उधार लिया जाना | लोन |
| वापस कर दिया जाना | लोन |
💬 पुस्तक को यह नहीं पता कि किसने उसे उधार लिया — वह केवल यह जानती है कि क्या उसके पास एक सक्रिय लोन है।
👤 क्लास: सदस्य
| जिम्मेदारियाँ | सहयोगी |
|---|---|
| नाम जानें | — |
| सदस्य आईडी जानें | — |
| यह जानें कि कितनी पुस्तकें वर्तमान में उधार ली गई हैं | उधार |
| पुस्तक उधार लें (यदि अनुमति हो) | पुस्तक, उधार |
| पुस्तक वापस करें | पुस्तक, उधार |
| यह जांचें कि उधार सीमा प्राप्त हो गई है या नहीं | उधार |
💬 सदस्य अपने उधार व्यवहार का प्रबंधन करता है और लॉन क्लास के माध्यम से सीमाओं की जांच करता है।
📅 क्लास: उधार
| जिम्मेदारियाँ | सहयोगी |
|---|---|
| यह रिकॉर्ड करें कि कौन सी पुस्तक उधार ली गई | पुस्तक |
| यह रिकॉर्ड करें कि किस सदस्य ने इसे उधार लिया | सदस्य |
| उधार तिथि रिकॉर्ड करें | — |
| समय सीमा तिथि की गणना करें | — |
| यह जानें कि क्या यह लेट हो गया है | — |
| लौटाए गए के रूप में चिह्नित करें | पुस्तक |
💬 लोन क्लास सदस्य और पुस्तक के बीच संबंध को रखती है, समय संबंधी विवरण सहित।
🎭 चरण 3: परिदृश्य का अभिनय करें — “पुस्तक उधार लेना”
अब मजेदार हिस्सा आता है: अभिनय करना परिदृश्य को ऐसे अभिनय करें जैसे कार्ड वास्तविक वस्तुएँ हों।
📖 परिदृश्य: कर्टिस को उधार लेना है “साफ कोड”जो उपलब्ध है।
चलिए इसे चरण दर चरण चलें:
-
सदस्य (कर्टिस) कहता है: “मैं ‘साफ कोड’ उधार लेना चाहता हूँ।”
→ पहले जांच: “क्या मेरे पास पहले से 3 से कम पुस्तकें हैं?”
→ पूछता है लोन: “मेरे पास कितने सक्रिय लोन हैं?” -
लोन प्रतिक्रिया देता है: “आपके पास 1 सक्रिय लोन है → आप उधार ले सकते हैं।”
-
सदस्य पुस्तक खोजता है: “‘साफ कोड’ कहाँ है?”
→ पूछता है पुस्तक: “क्या आप उपलब्ध हैं?” -
पुस्तक जांचता है: “क्या मेरे पास एक सक्रिय (वापस नहीं किया गया) ऋण है?”
→ पूछता है ऋण: “क्या मेरे लिए कोई सक्रिय ऋण है?” -
ऋण उत्तर देता है: “नहीं — आप उपलब्ध हैं!”
-
सदस्य एक नया बनाता है ऋण वस्तु:
-
इससे जुड़ता है पुस्तक और सदस्य
-
उधार तिथि = आज को सेट करता है
-
देय तिथि की गणना = आज + 14 दिन
-
-
पुस्तक अद्यतन किया गया है: “अब मेरे पास एक सक्रिय ऋण है → मैं अब उपलब्ध नहीं हूँ।”
✅ परिणाम: उधार लेने की प्रक्रिया प्राकृतिक, वितरित और तार्किक महसूस होती है।
🔄 चरण 4: एक अन्य परिदृश्य — “पुस्तक वापस करें”
📖 परिदृश्य: कर्टिस वापस करता है “क्लीन कोड”
-
सदस्य (कर्टिस) कहते हैं: “मैं ‘क्लीन कोड’ वापस करना चाहता हूँ।”
-
सदस्य मिलता है ऋण (संभवतः प्रश्न करके ऋण पुस्तक और सदस्य के साथ)।
-
ऋण खुद को वापस कर दिया गया.
-
ऋण कहता है पुस्तक: “अब आप फिर से उपलब्ध हैं।”
✅ साफ, स्पष्ट और सुसंगत — कोई क्लास अपनी जिम्मेदारी के बाहर काम नहीं कर रही है।
🔍 चरण 5: सुधारें और अनुपस्थित क्लासेज जोड़ें
भूमिका निभाने के बाद, हमें एक खाई:
❓ कौन पुस्तक का शीर्षक द्वारा खोजता है?
वर्तमान में, सदस्य पूछ रहा है पुस्तक सीधे — लेकिन पुस्तक खोजने का तरीका नहीं जानता!
हमें एक आवश्यकता है केंद्रीय समन्वयक.
➕ नई कक्षा: पुस्तकालय
| जिम्मेदारियाँ | सहयोगी |
|---|---|
| संग्रह में एक नई पुस्तक जोड़ें | पुस्तक |
| शीर्षक द्वारा पुस्तक खोजें | पुस्तक |
| एक नए सदस्य के लिए पंजीकरण करें | सदस्य |
| पुस्तक उधार लेने के अनुरोध को प्रक्रिया में लाएं | सदस्य, पुस्तक, उधार |
| पुस्तक वापसी की प्रक्रिया करें | सदस्य, पुस्तक, उधार |
| सभी वर्तमान उधार के बारे में जानें | उधार |
💬 पुस्तकालय केंद्रीय हब के रूप में कार्य करता है — यह सभी पुस्तकों, सभी सदस्यों और सभी उधारों के बारे में जानता है।
✨ अद्यतित प्रवाह: “पुस्तक उधार लें” पुस्तकालय के साथ
-
सदस्य → पुस्तकालय: ‘Clean Code’ शीर्षक वाली पुस्तक खोजें।
-
पुस्तकालयअपने संग्रह की खोज करता है और लौटाता हैपुस्तकया
नलयदि नहीं मिलती है।) -
सदस्यअब पुस्तक के अस्तित्व के बारे में जानता है → पूछता हैपुस्तकालय: क्या मैं इस पुस्तक को उधार ले सकता हूँ?
-
पुस्तकालयजांचता है:
-
क्या पुस्तक उपलब्ध है? (के माध्यम से
पुस्तक.isAvailable()) -
क्या सदस्य उधार लेने की सीमा के भीतर है? (के माध्यम से
उधार.countActiveLoans(सदस्य))
-
-
यदि हाँ →पुस्तकालयएक नई बनाता हैउधारऔर दोनों को अद्यतन करता हैपुस्तकऔरउधार.
-
पुस्तक उपलब्ध नहीं हो जाता है; ऋण संबंध का अनुसरण करता है।
✅ अब प्रवाह समझ में आता है — वह पुस्तकालय खोज और समन्वय का प्रबंधन करता है।
🧩 अंतिम CRC कार्ड सारांश (शुरुआती लोगों के लिए सरलीकृत)
| वर्ग | मुख्य जिम्मेदारियाँ | मुख्य सहयोगी |
|---|---|---|
| पुस्तकालय | पुस्तकों, सदस्यों, ऋणों का प्रबंधन करता है; उधार लेने/वापसी का प्रबंधन करता है | पुस्तक, सदस्य, ऋण |
| सदस्य | व्यक्तिगत जानकारी जानता है; उधार लेने/वापसी शुरू करता है | पुस्तकालय, ऋण |
| पुस्तक | मेटाडेटा संग्रहीत करता है; उपलब्धता का अनुसरण करता है | पुस्तकालय, ऋण |
| ऋण | उधार लेने का इतिहास ट्रैक करता है; तारीख की गणना करता है; वापसी स्थिति का प्रबंधन करता है | सदस्य, पुस्तक, पुस्तकालय |
✅ डिज़ाइन सिद्धांत: प्रत्येक वर्ग के पास एक स्पष्ट उद्देश्य, और जिम्मेदारियाँ हैं एकजुट और अच्छी तरह वितरित.
🌟 CRC कार्ड्स काम क्यों करते हैं (शुरुआती निष्कर्ष)
| लाभ | स्पष्टीकरण |
|---|---|
| जिम्मेदारी-आधारित डिज़ाइन | आपको सोचने के लिए मजबूर करता है: “इस क्लास को क्या पता है या क्या करना है?” बस डेटा स्टोर करने के बजाय। |
| गायब क्लासेस की प्राकृतिक खोज | भूमिका निभाने से अंतर दिखते हैं (जैसे गायब पुस्तकालय) — कोई अनुमान नहीं लगाने की आवश्यकता है। |
| भूमिका निभाने के माध्यम से तुरंत प्रतिक्रिया | अगर कोई प्रवाह असहज महसूस होता है, तो आपको पता चल जाता है कि जिम्मेदारी गलत जगह है। |
| कम रूढ़ियों वाला और सहयोगात्मक | कोई जटिल उपकरण नहीं — बस इंडेक्स कार्ड, स्टिकी नोट्स या एक व्हाइटबोर्ड। टीम्स के लिए बहुत अच्छा। |
| आवश्यकताओं को कोड से जोड़ता है | उपयोगकर्ता कहानियों को वास्तविक क्लास इंटरैक्शन में बदल देता है। |
🛠️ आपके पहले CRC सत्र के लिए त्वरित टिप्स
-
भौतिक कार्ड का उपयोग करें (3×5 इंडेक्स कार्ड या स्टिकी नोट्स) — यह अधिक आकर्षक है।
-
प्रत्येक कार्ड पर एक क्लास — इसे सरल रखें।
-
बड़े और पढ़ने योग्य लिखें — दूसरों को इसे आसानी से पढ़ना चाहिए।
-
आवाज़ में भूमिका निभाएं — कार्डों को वास्तविक वस्तुओं की तरह आगे-पीछे घुमाएं।
-
3–6 मुख्य परिदृश्यों से शुरुआत करें (जैसे, उधार लेना, वापस करना, खोजना)।
-
आदर्शता का लक्ष्य न रखें — लक्ष्य है पुनरावृत्ति, अंतिम डिज़ाइन नहीं। आगे बढ़ते हुए सुधारते रहें।
-
सरल, क्षेत्र-विशिष्ट नामों का उपयोग करें — तकनीकी शब्दावली से बचें। यदि आपकी टीम सहमत है, तो “सदस्य” के बजाय “दर्शक” का उपयोग करें।
-
सभी को भागीदारी में आमंत्रित करें — यहां तक कि गैर-प्रोग्रामर भी लापता जिम्मेदारियों को निर्धारित करने में मदद कर सकते हैं।
-
बाद में एक सरल क्लास आरेख बनाएं — संबंधों को दृश्याकृत करने और सुसंगतता की पुष्टि करने के लिए।
-
इसे मनोरंजक बनाए रखें — इसे एक खेल की तरह लें। आपकी टीम जितनी अधिक लगन से शामिल होगी, उतने ही बेहतर परिणाम मिलेंगे।
🔄 खुद को आजमाएं: अगले अन्वेषण क्षेत्र
जब आप लाइब्रेरी प्रणाली पर नियंत्रण कर लें, तो अन्य शुरुआती उपयोगकर्ता अनुकूल क्षेत्रों में CRC कार्डों के उपयोग का प्रयास करें:
☕ कॉफी शॉप ऑर्डर प्रणाली
-
वर्ग:
ग्राहक,आदेश,मेनू आइटम,बारिस्टा,नकद रजिस्टर -
परिदृश्य: आदेश दें → पेय जोड़ें → छूट लागू करें → भुगतान करें → रसीद प्रिंट करें
🪙 वेंडिंग मशीन
-
वर्ग:
वेंडिंग मशीन,उत्पाद,सिक्का,वितरक,बदला गणक -
परिदृश्य: सिक्का डालें → वस्तु चुनें → उत्पाद वितरित करें → बदला वापस करें
🎮 क्विज खेल
-
वर्ग:
क्विज,प्रश्न,खिलाड़ी,स्कोर ट्रैकर,खेल सत्र -
परिदृश्य: क्विज शुरू करें → प्रश्न का उत्तर दें → सही या गलत जांचें → अंतिम स्कोर दिखाएं
🚗 पार्किंग गैराज
-
वर्ग:
गैराज,गाड़ी,पार्किंग स्थान,टिकट,द्वार -
परिदृश्य: गैरेज में प्रवेश करें → कार को पार्क करें → निकलें → शुल्क भुगतान करें → टिकट प्राप्त करें
इनमें से प्रत्येक प्रणाली एक ही सिद्धांतों पर आधारित है:
-
संज्ञाओं की पहचान करें → जिम्मेदारियाँ आवंटित करें → भूमिका निभाएँ → सुधारें → दोहराएँ।
📌 अंतिम विचार: CRC कार्ड एक तकनीक से अधिक हैं — ये एक मानसिकता हैं
CRC कार्डों की वास्तविक शक्ति उन कार्डों में नहीं है — यह उनके द्वारा उत्पन्न चर्चा जो उत्पन्न करते हैं।
जब आप एक कार्ड लिखते हैं और कहते हैं, “यह किसके लिए है?” या “इसे किससे बात करने की आवश्यकता है?”तो आप पहले से ही ऑब्जेक्ट-ओरिएंटेड डिजाइनर की तरह सोच रहे हैं।
🔥 प्रो टिप: स्प्रिंट योजना, तकनीकी शीर्ष या यहां तक कि साक्षात्कार में CRC कार्डों का उपयोग करें ताकि आपके डिजाइन सोच को प्रदर्शित किया जा सके।
वे केवल डेवलपर्स के लिए नहीं हैं — ये किसी भी व्यक्ति सॉफ्टवेयर बनाने में शामिल हैं: उत्पाद प्रबंधक, डिजाइनर, परीक्षक और छात्र।
📎 और जानना चाहते हैं?
👉 छापने योग्य CRC कार्ड टेम्पलेट डाउनलोड करें (PDF या डिजिटल) अपने अगले कार्यशाला में उपयोग करने के लिए।
👉 एक लाइव CRC सत्र का प्रयास करें एक सहकर्मी के साथ — भूमिकाएँ आवंटित करें: “तुम सदस्य हो,” “तुम पुस्तक हो,” आदि।
👉 अपने परिणाम साझा करें — अपने कार्डों को सोशल मीडिया पर पोस्ट करें #CRCcards या #OODesignJourney के साथ।
🏁 निष्कर्ष
दपुस्तकालय पुस्तक उधार लेने की प्रणाली एक सबसे प्राचीन और प्रभावी CRC कार्ड उदाहरणों में से एक है — इसके जटिल होने के कारण नहीं, बल्कि इसके कारण कि यह सरल, समझ में आने वाला और प्रकट करने वाला.
बस निम्नलिखित चरणों का पालन करके पांच चरणों — मस्तिष्क झड़ी, कार्ड निर्माण, भूमिका निभाना, सुधार और दोहराना — आप कर सकते हैं:
-
कक्षाओं को प्राकृतिक रूप से खोजें
-
जिम्मेदारियों को स्पष्ट रूप से निर्धारित करें
-
डिज़ाइन की कमियों को जल्दी पहचानें
-
टीम के रूप में एक साझा मानसिक मॉडल बनाएं
और सबसे अच्छी बात? इसे करने के लिए आपको सीनियर डेवलपर होने की आवश्यकता नहीं है।
आपको बस जिज्ञासा, कुछ कार्ड और खेलने की इच्छा की आवश्यकता है।
✅ अब आपकी बारी है: कुछ स्टिकी नोट्स लें, एक सरल प्रणाली (जैसे कॉफी शॉप या वेंडिंग मशीन) चुनें, और CRC विधि का प्रयोग करें।
📌 याद रखें: अच्छा डिज़ाइन आदर्श कोड लिखने के बारे में नहीं है — यह सही सवाल पूछने के बारे में है।
और CRC कार्ड के साथ, आप पहले से ही उन सवालों को पूछ रहे हैं।
📌 बोनस: प्रिंट करने योग्य CRC कार्ड टेम्पलेट (टेक्स्ट संस्करण)
┌────────────────────┐
│ [क्लास नाम] │
├────────────────────┤
│ जिम्मेदारियाँ: │
│ - │
│ - │
│ - │
├────────────────────┤
│ सहयोगी: │
│ - │
│ - │
└────────────────────┘
इसे 3×5 कार्ड पर प्रिंट करें या Miro, Figma या Google Slides जैसे डिजिटल टूल में इसका उपयोग करें।
📚 अगला चरण?
क्या आपको पूरी व्याख्या चाहिए कॉफी शॉप ऑर्डर प्रणाली उसी CRC शैली का उपयोग करके?
👉 बस शब्द कहें — मैं आपको अगला केस स्टडी, चरण दर चरण, कार्ड, परिदृश्य और भूमिका निभाने के साथ भेज दूंगा!
डिज़ाइनिंग में शुभकामनाएं! 🎮🧩💻
- Visual Paradigm में CRC कार्ड कैसे बनाएं: इस चरणबद्ध गाइड में सॉफ्टवेयर के विशेष डायग्रामिंग टूल्स का उपयोग करके CRC कार्ड बनाने के निर्देश दिए गए हैं।
- Visual Paradigm में CRC कार्ड डायग्राम को समझना: एक समीक्षा जो बताती है कि इन डायग्रामों का ऑब्जेक्ट-ओरिएंटेड सिस्टम और उनके इंटरैक्शन के मॉडलिंग में कैसे उपयोग किया जाता है।
- Visual Paradigm में CRC कार्ड डायग्राम कैसे बनाएं: कम्युनिटी सर्कल पर मिलने वाला एक विस्तृत ट्यूटोरियल जो CRC डायग्राम के निर्माण और कस्टमाइजेशन को कवर करता है।
- Visual Paradigm में CRC डायग्राम का परिचय: ऑब्जेक्ट-ओरिएंटेड डिजाइन और व्यापक सिस्टम मॉडलिंग के लिए CRC डायग्राम के उपयोग पर केंद्रित एक व्यापक गाइड।
- क्लास डायग्राम से CRC कार्ड उत्पन्न करना: यह कम्युनिटी चर्चा विद्यमान क्लास डायग्राम के उपयोग करके रिवर्स इंजीनियरिंग के माध्यम से कार्ड ऑटोमैटिक रूप से उत्पन्न करने के तरीकों का अध्ययन करती है।
- क्लास डायग्राम के साथ CRC कार्ड को सिंक करना: डायग्राम और क्लास मॉडल के बीच डिजाइन सुसंगतता सुनिश्चित करने के लिए द्विदिश डिजाइन पर चर्चा करने वाला तकनीकी संसाधन।
- CRC कार्ड डायग्राम का परिचय (PDF गाइड): डाउनलोड करने योग्य तकनीकी संसाधन जो CRC कार्ड के मूल अवधारणाओं और सिस्टम विश्लेषण में उनके उपयोग को समझाता है।
- CRC कार्ड और क्लास डायग्राम के बीच संबंध स्थापित करना: इस लेख में विभिन्न मॉडलिंग स्तरों के बीच ट्रेसेबिलिटी और लिंकेज बनाए रखने के तरीकों पर बल दिया गया है।
- Visual Paradigm गैलरी में CRC कार्ड टेम्पलेट: एक संसाधन जिसमें ऑब्जेक्ट-ओरिएंटेड डिजाइन के प्रारंभिक चरण में सहायता करने के लिए डाउनलोड करने योग्य टेम्पलेट शामिल है।
- डायग्राम के बीच CRC कार्ड को हटाना: एक गाइड जो डेटा सुसंगतता बनाए रखते हुए विभिन्न डायग्रामों के बीच कार्ड को स्थानांतरित करने के तरीकों का वर्णन करता है।
यह पोस्ट Deutsch, English, Español, فارسی, Français, Bahasa Indonesia, 日本語, Polski और Portuguese में भी उपलब्ध है।









