2011-10-19 11 views
15

के लिए कोई भी यूएमएल उपकरण स्कैला के लिए कोई यूएमएल उपकरण उपलब्ध है। मेरे प्रश्न का कारण यह है कि यह कार्यात्मक और ओओ अवधारणाओं का मिश्रण है इसलिए मैं जानना चाहता हूं कि ऐसे उपकरण यूएमएल आरेखों में कार्यों को कैसे दर्शाते हैं।स्कैला

उत्तर

22

यह thread बाधाओं स्काला वर्गों का प्रतिनिधित्व करने के लिए इच्छुक किसी भी यूएमएल उपकरण को पेश आ रही सार रखते हैं:

  • यूएमएल में mixins का कोई आधिकारिक प्रतिनिधित्व नहीं है
  • यह प्रदर्शित करना कठिन होता है:
    • बंद
    • स्कैला प्रकार के सदस्य
    • वर्ग कन्स्ट्रक्टर पैरामीटर सीमाएं (ए.के.ए. "टेम्पलेट प्रकार" सीमा/कमी)
    • covariant और contravariant वर्ग निर्माता विरासत
    • कक्षा या विशेषता और साथी वस्तु

इस शोध के बीच संबंध ("Evaluierung des Einsatzes von Scala bei der Entwicklung für die Android-Plattform", पीडीएफ, जर्मन) विशेषता मिश्रणों और अन्य स्कैला विशिष्ट तत्वों (पीपी 146) के लिए रूढ़िवादी जोड़ता है।

क्या 2009 में Meiko Rachimow से जोड़ा गया है: सभी प्रकाशित विशेषताओं के लिए

गुण, गेटर और सेटर

Scala attributes

, अंतर्निहित गेटर (attribute1 और attribute2) मौजूद छोड़कर दृश्यता private (attribute3) के रूप में घोषित किया गया था। यदि प्रकाशित विशेषताओं को एक स्टीरियोटाइप Var के साथ टैग किया गया है, तो वे चर हैं, जिसके लिए निहित सेटटर मौजूद है (attribute2)। स्टीरियोटाइप lazy आंशिक चर आलसी के रूप में चिह्नित करता है (attribute4)।

वर्गों और जेनरिक

Scala class and genericity

यूएमएल में की तरह, सामान्य वर्गों एक सार प्रकार के साथ चिह्नित हैं। स्कैला भाषा वाक्यविन्यास का उपयोग करके, इस प्रकार के लिए ऊपरी और निचली सीमाओं को घोषित किया जा सकता है (EineKlasse)। संरचित प्रकारों को सीमाओं के रूप में उपयोग करना संभव है, घुमावदार ब्रेसिज़() द्वारा कौन से गुण और विधियों को गले लगाया जाता है। विधियों के जेनेरिक प्रकार पैरामीटर स्क्वायर ब्रैकेट्स (operation) द्वारा गले लगाए जाते हैं।

लक्षण

Scala traits in UML

लक्षण सार वर्गों की तरह प्रदर्शित किए जाते हैं और स्टीरियोटाइप trait के साथ टैग। सार विशेषताओं और विधियों इटालिक्स में प्रदर्शित होते हैं (attribute2, operation2)। अमूर्त गुणों के लिए निर्भरता तीर को स्टीरियोटाइप requires (Trait3, attribute3) के साथ टैग किया जा सकता है। दूसरी तरफ, स्टीरियोटाइप self का उपयोग स्वयं संदर्भ प्रकारों (Trait4) के लिए किया जाता है। यदि किसी विशेषता को एक और विशेषता प्राप्त होती है, तो विरासत विरासत तीर (Trait2) के साथ प्रदर्शित होती है। यदि कोई वर्ग एक विशेषता (Klasse) बढ़ाता है तो यह तीर प्रकार भी उपयोग किया जाता है। लक्षणों के "मिश्रण" पर जोर देने के लिए, विरासत तीर को स्टीरियोटाइप mixin (Klasse) के साथ टैग किया जा सकता है।

सिंगलटन वस्तुओं

Scala singleton in UML

सिंगलटन वस्तुओं वर्गों की तरह प्रदर्शित किए जाते हैं और स्टीरियोटाइप singleton के साथ टैग। यह संभव है कि एक ही नाम के साथ दो वर्ग तत्व मौजूद हैं। वास्तव में यह संबंधित साथी वर्ग के साथ एक सिंगलटन वस्तु है। इस मामले में निर्भरता तीर को स्टीरियोटाइप hasA के साथ टैग किया गया है।

+0

दरअसल थीसिस का लिंक काम नहीं करता है। –

+0

@ पीटरस्मिट्स: मैंने उस पीडीएफ फ़ाइल के लिंक को तय कर दिया है। – VonC

+1

@ वॉनसी यह वास्तव में मेरी मदद करेगा (और अन्य हो सकता है) यदि आप विशेषता वर्ग आरेख के लिए स्कैला हस्ताक्षर (या कंकाल) जोड़ सकते हैं। (उदाहरण के लिए 'विशेषता ट्रैट 2 विशेषता' बढ़ाती है और इसी तरह।) – dips

1

बस Green UML Eclipse plugin का परीक्षण किया। कुछ महीने पहले यह काम नहीं करता था लेकिन स्कैला आईडीई रात के संस्करण अप्रैल 2012 के साथ) आप कुछ प्रकार के क्लास आरेख प्राप्त कर सकते हैं। प्रमोशन लग रहा है।

2

आप कोशिश कर सकते हैं (प्रयोगात्मक) Dia2Scala उपकरण। इस कोड जनरेटर द्वारा उपयोग किए गए Notation मेको रचिमो की थीसिस (answer में वॉनसी से वर्णित) से एक नोटेशन पर आधारित है।

+0

यह आशाजनक लग रहा है। लेकिन क्या यह कोड से आरेख उत्पन्न कर सकता है? –

+0

@ वेई-चिंगलिन नोप, यह केवल एक ही रास्ता है: डाया -> स्कैला। एक स्कैला पार्सर लिखना मुझे कल्पना करना मुश्किल हो सकता है। – monnef