यूएमएल मानक एक दर्जन से अधिक विभिन्न प्रकारों को परिभाषित करता है, जैसा कि इस आसान चार्ट में दिखाया गया है:
स्रोत: https://en.wikipedia.org/wiki/File:UML_diagrams_overview.svg
चित्र A.5 भी देखें UML 2.5 कल्पना में संरचना और व्यवहार आरेखों का वर्गीकरण ।
ध्यान दें कि यह एक वर्ग आरेख का एक उदाहरण है, जिसमें-आरेख में टाइप के बीच एक घटिया संबंध, और इटैलिक में अमूर्त आरेख प्रकार हैं। हालांकि ये आरेख प्रकार वास्तव में यूएमएल मेटामोडेल के भीतर कक्षाएं हैं, यह वर्ग आरेख अभी भी एक पदानुक्रम को चित्रित करने के लिए उपयोगी है, बिना ओओपी के किसी भी कनेक्शन के।
कुछ प्रकार हैं जो स्पष्ट रूप से केवल ओओपी पर लागू होते हैं, उदाहरण के लिए वर्ग आरेख या ऑब्जेक्ट आरेख । लेकिन बाकी वस्तु-उन्मुख प्रणालियों की तुलना में अधिक व्यापक रूप से लागू है।
राज्य मशीन आरेख - FP राज्यों से नहीं बचता है, यह केवल उन्हें स्पष्ट करता है। एक राज्य मशीन आरेख नियंत्रण प्रवाह, या कार्यक्रम में विभिन्न राज्य संक्रमणों की व्याख्या करने के लिए उपयोगी हो सकता है।
गतिविधि आरेख - राज्य मशीन आरेख के लिए समान मामलों में उपयोगी हैं, लेकिन उच्च स्तर पर। उनका उपयोग विभिन्न उप-प्रणालियों के बीच डेटा के प्रवाह की व्याख्या करने के लिए, या बाहरी व्यावसायिक प्रक्रियाओं को मॉडल करने के लिए किया जा सकता है।
इंटरएक्शन डायग्राम - कई राज्य प्रक्रियाओं के बीच बातचीत का मॉडल। स्पष्ट रूप से, यह एक शुद्ध कार्यात्मक कार्यक्रम के आंतरिक मॉडलिंग के लिए उपयोगी नहीं है। हालांकि, यूएमएल न केवल कोड की संरचना मॉडलिंग के बारे में है, बल्कि मुख्य रूप से एक सार्वभौमिक मॉडलिंग भाषा प्रदान करने के बारे में है। इंटरएक्शन आरेख के साथ, मैं उदाहरणों के लिए सिस्टम, बाह्य जैसे ब्राउज़र और वेब सर्वर के बीच के बाहरी व्यवहार को मॉडल करने के लिए इंटरैक्शन डायग्राम का उपयोग कर सकता हूं - यहां तक कि जब वे एफपी तकनीकों का उपयोग करके लिखे जाते हैं।
केस डायग्राम का उपयोग करें - ऐसे मामलों और आवश्यकताओं का उपयोग करें जो उन्हें संतुष्ट करने के लिए उपयोग की जाने वाली तकनीक से स्वतंत्र हों। OOP या FP यहाँ बिलकुल अप्रासंगिक है।
परिनियोजन आरेख - इस आरेख प्रकार का उपयोग रन करने योग्य सॉफ़्टवेयर और हार्डवेयर संसाधनों के बीच संबंध का वर्णन करने के लिए किया जाता है। चाहे वह सॉफ्टवेयर FP भाषा में लिखा गया हो, इससे कोई फर्क नहीं पड़ता।
घटक आरेख - अधिकांश कार्यात्मक भाषाओं में इन दिनों मॉड्यूलर प्रोग्रामिंग के लिए स्पष्ट समर्थन है। एक घटक आरेख घटकों / मॉड्यूल और उनके प्रस्तावित और आवश्यक इंटरफेस का वर्णन करता है। यह मुझे बहुत सारे OCaml के Functor मॉड्यूल की याद दिलाता है।
प्रोफ़ाइल आरेख - यूएमएल में ही एक्सटेंशन का वर्णन करते हैं और जैसे वास्तव में कभी उपयोग नहीं किए जाते हैं।
समग्र संरचना आरेख - कंपोजिट की संरचना का वर्णन करते हैं। इसका उपयोग डेटा संरचनाओं का वर्णन करने के लिए किया जा सकता है, या किसी फ़ंक्शन के इंटरैक्शन पॉइंट भी। विकिपीडिया एक उदाहरण के रूप में फाइबोनैचि फ़ंक्शन के लिए एक आरेख दिखाता है:
स्रोत: https://commons.wikimedia.org/wiki/File:Composite_Structure_Diagram.png
एक अर्थ में, यह एक वर्ग आरेख के बजाय कार्यात्मक प्रोग्रामर विकल्प होगा, लेकिन यह बहुत ही कठिन लगता है…।
पैकेज आरेख - पैकेज नामस्थान के यूएमएल समकक्ष हैं। यह आरेख प्रकार एक अलग आरेख प्रकार की तुलना में UML भाषा के बुनियादी ढांचे का अधिक हिस्सा है। उदाहरण के लिए, आप किसी बड़े उपयोग के मामले के आरेख को वर्गीकृत करने के लिए संकुल का उपयोग कर सकते हैं।
जैसा कि हमने देखा है, कार्यात्मक प्रोग्रामिंग करते समय विभिन्न यूएमएल आरेख प्रकार अभी भी उपयोगी हो सकते हैं।
मैंने सिस्टम डिजाइन करते समय यूएमएल का उपयोग करने की इच्छा शायद ही कभी महसूस की हो, और मुख्य रूप से यूएमएल का उपयोग मेरे असाइन किए गए होमवर्क को करने के लिए, या एक त्वरित स्केच के साथ एक वास्तुकला की रूपरेखा संवाद करने के लिए किया। यहां तक कि एक ओओपी प्रणाली के लिए, यूएमएल हर समय इसका उपयोग करने के लिए पर्याप्त मूल्य प्रदान नहीं करता है - वास्तविक कोड एक हजार से अधिक आरेख कहता है। मैं एक एफपी कार्यक्रम में विभिन्न कार्यों और डेटा संरचनाओं के बीच निर्भरता की व्याख्या करने के लिए यूएमएल जैसे आरेखों का उपयोग करने की कल्पना कर सकता हूं, लेकिन अभी तक ऐसा करना है - मेरी व्यक्तिगत शैली ओओपी और एफपी के मिश्रण को पसंद करती है जहां स्थानीय स्तर पर एफपी तकनीकों का उपयोग किया जाता है, लेकिन समग्र वास्तुकला को प्रभावित नहीं करते हैं।