परिचय
मला वाटते "दोनदा मोजा, एकदा कापा" ही म्हण सर्वांनी ऐकली असेल. प्रोग्रामिंगमध्ये हा खरा सल्ला आहे. आपण अंमलबजावणीसाठी कोणताही वेळ घालवण्यापूर्वी त्याच्या अंमलबजावणीबद्दल विचार करणे केव्हाही चांगले. अंमलबजावणी दरम्यान, तुम्हाला अनेकदा वर्ग तयार करावे लागतात आणि ते कसे संवाद साधतील याचा विचार करावा लागतो. या सर्वांचे व्हिज्युअल प्रतिनिधित्व तुम्हाला सर्वात योग्य उपाय शोधण्यात मदत करू शकते. इथेच UML वर्ग आकृती आमच्या मदतीला येते.UML म्हणजे काय?
तुम्ही शोध इंजिनमधील संबंधित प्रतिमा पाहिल्यास, तुम्हाला दिसेल की UML चा आकृती, बाण आणि चौरस यांच्याशी काहीतरी संबंध आहे. तुम्हाला हे माहित असणे आवश्यक आहे की UML म्हणजे युनिफाइड मॉडेलिंग लँग्वेज. युनिफाइड हा इथे महत्त्वाचा शब्द आहे. याचा अर्थ असा की आमची प्रतिमा केवळ आम्हालाच नाही तर UML जाणणाऱ्या इतर कोणालाही समजेल. आकृत्या काढण्यासाठी ही लिंग्वा फ्रँका आहे.विकिपीडियानुसार,
"यूएमएल ही सॉफ्टवेअर अभियांत्रिकीच्या क्षेत्रातील एक सामान्य-उद्देश, विकासात्मक, मॉडेलिंग भाषा आहे जी सिस्टमच्या डिझाइनची कल्पना करण्यासाठी एक मानक मार्ग प्रदान करण्याच्या उद्देशाने आहे."सर्वात मनोरंजक गोष्ट, ज्याचा प्रत्येकजण अंदाज लावणार नाही, ती म्हणजे यूएमएलची वैशिष्ट्ये आहेत. आणि एक UML 2 तपशील देखील आहे. स्पेसिफिकेशनबद्दल अधिक माहिती ऑब्जेक्ट मॅनेजमेंट ग्रुप वेबसाइटवर उपलब्ध आहे. खरं तर, हा गट UML तपशील विकसित करतो. हे देखील मनोरंजक आहे की UML केवळ वर्गांच्या संरचनेचे वर्णन करण्यापुरते मर्यादित नाही. UML आकृत्यांचे अनेक प्रकार आहेत. विकिपीडियामध्ये विविध प्रकारच्या UML आकृत्यांचे संक्षिप्त वर्णन आहे: UML आकृत्या . UML वर्ग आकृत्यांकडे परत येताना, "हेड फर्स्ट डिझाईन पॅटर्न" या पुस्तकाचा उल्लेख करणे योग्य आहे , डिझाइन नमुने स्पष्ट करण्यासाठी UML आकृत्या वापरतात. तळ ओळ आहे की UML खरोखर वापरले जाते. आणि असे दिसून आले की ते जाणून घेणे आणि कसे वापरायचे हे समजून घेणे खूप उपयुक्त आहे.
अर्ज
आपण IDE मध्ये UML सह कार्य करू शकतो हे शोधूया. आम्ही आमचा IDE म्हणून IntelliJ IDEA वापरू. जर तुम्ही IntelliJ IDEA Ultimate वापरत असाल, तर आमच्याकडे "UML सपोर्ट" प्लगइन "बॉक्सच्या बाहेर" स्थापित केले जाईल. हे तुम्हाला आपोआप सुंदर वर्ग आकृती तयार करू देते. उदाहरणार्थ, ArrayList वर्गावर जाण्यासाठी Ctrl+N किंवा "Navigate" -> "Class" मेनू आयटम वापरा. आता वर्गाच्या नावाच्या संदर्भ मेनूमध्ये, "डायग्राम" -> "डायग्राम पॉपअप दर्शवा" निवडा. परिणामी, आम्हाला एक सुंदर आकृती मिळते.

@startuml
class ArrayList {
}
class LinkedList {
}
@enduml
IDEA मध्ये निकाल पाहण्यासाठी, "पहा" -> "टूल विंडोज" -> "प्लांटयूएमएल" निवडा. आम्हाला फक्त दोन वर्ग मिळतात जे वर्गांचे प्रतिनिधित्व करतात. आम्हाला माहित आहे की हे दोन्ही वर्ग लिस्ट इंटरफेस लागू करतात. या वर्ग संबंधाला अनुभूती म्हणतात. हा संबंध ठिपके असलेल्या रेषेसह बाण वापरून दर्शविला जातो. चला ते काढूया:
interface List
List <|.. ArrayList
List <|.. LinkedList
यादी संग्रह वर्गातील मुलांपैकी एक आहे . म्हणजेच, त्याला संग्रहाचा वारसा मिळतो . या संबंधाला सामान्यीकरण म्हणतात. हे सामान्य अखंड रेषेसह बाणासारखे दिसते. चला ते काढूया:
interface Collection
Collection <|-- List
पुढील प्रकारच्या नातेसंबंधासाठी, ArrayList वर्ग वर्णनामध्ये घटकांच्या खाजगी अॅरे पॅकेजबद्दलची नोंद जोडा:
~Object[] elementData
आता आपल्याला दाखवायचे आहे की ArrayList मध्ये काही ऑब्जेक्ट्स आहेत. या प्रकरणात, एकत्रीकरण संबंध असेल. अॅरेलिस्टएकूण आहे, कारण त्यात इतर वस्तू आहेत. आम्ही एकत्रीकरण म्हणतो कारण सूचीच्या वस्तू सूचीशिवाय अस्तित्वात असू शकतात: ते सूचीचे अविभाज्य भाग नाहीत. त्यांचे जीवनकाल सूचीच्या जीवनकाळाशी जोडलेले नाही. "एकत्रित" हा शब्द लॅटिनमधून आमच्याकडे येतो आणि "एकत्रित" म्हणून अनुवादित करतो, म्हणजेच काहीतरी बनलेले आहे. उदाहरणार्थ, जीवनात, आमच्याकडे पंप असेंब्ली (एकूण), ज्यामध्ये पंप आणि मोटर असते. असेंब्ली स्वतःच डिस्सेम्बल केली जाऊ शकते आणि आम्ही त्यातील काही घटक एकटे सोडू शकतो. उदाहरणार्थ, विक्री करणे किंवा दुसर्या असेंब्लीमध्ये ठेवणे. यादीतही असेच आहे. हे एकूणात रिकाम्या समभुज चौकोनाने आणि अखंड रेषेने व्यक्त केले जाते. आम्ही हे खालीलप्रमाणे प्रतिनिधित्व करू:
class Object{
}
ArrayList o- Object
आता आम्हाला दाखवायचे आहे की ArrayList च्या विपरीत , LinkedList क्लासमध्ये Node s — कंटेनर असतात जे संग्रहित डेटाचा संदर्भ देतात. या प्रकरणात, नोड हे LinkedList चा भाग आहेत आणि त्यांचे स्वतंत्र अस्तित्व नाही. नोड ही सामग्री नाही. त्यात फक्त सामग्रीचा संदर्भ आहे. उदाहरणार्थ, जेव्हा आम्ही लिंक्डलिस्टमध्ये स्ट्रिंग जोडतो , तेव्हा आम्ही एक नवीन नोड जोडतो ज्यामध्ये स्ट्रिंगचा संदर्भ असतो, तसेच मागील आणि पुढील नोडची लिंक असते.. या संबंधाला रचना म्हणतात. संमिश्र (घटक भागांपासून बनलेले काहीतरी) वर भरलेल्या समभुज चौकोनासह सतत रेषा रेखाटून त्याचे चित्रण केले जाते. आता आम्ही मजकूर म्हणून संबंध दर्शवू:
class Node{
}
LinkedList *-- Node
आणि आता तुम्हाला आणखी एक महत्त्वाचा नातेसंबंध कसे चित्रित करायचे हे शिकण्याची आवश्यकता आहे: अवलंबित्व. जेव्हा एक वर्ग दुसरा वापरतो तेव्हा त्याचा वापर केला जातो, परंतु वर्गामध्ये वापरलेल्या वर्गाचा समावेश किंवा वारसा नसतो. उदाहरणार्थ, LinkedList आणि ArrayList ला ListIterator कसा तयार करायचा हे माहित आहे . आम्ही हे चिन्हांकित रेषेसह बाण म्हणून प्रस्तुत करतो:
class ListIterator
ListIterator <... ArrayList : create
ListIterator <... LinkedList : create
हे सर्व केल्यानंतर, आम्हाला मिळते: 
ऑटोमेशन
PlantUML आकृत्या आपोआप निर्माण करण्याचे विविध मार्ग आहेत. उदाहरणार्थ, IDEA मध्ये SketchIT प्लगइन आहे, परंतु ते संपूर्णपणे योग्यरित्या रेखाचित्रे काढत नाही. समजा इंटरफेसची अंमलबजावणी चुकीच्या पद्धतीने काढली गेली आहे (ते वारसा म्हणून प्रदर्शित केले आहे). तुमच्या प्रोजेक्टच्या बिल्ड प्रक्रियेमध्ये हे कसे समाकलित करायचे याची उदाहरणे इंटरनेटमध्ये आहेत. उदाहरणार्थ, Maven सह uml-java-docklet कसे वापरायचे ते तुम्ही शोधू शकता . प्रदर्शित करण्यासाठी, आम्ही द्रुतपणे एक Maven प्रकल्प तयार करण्यासाठी Maven Archetype वापरू . धावा
mvn archetype:generate
नंबर निवडा किंवा फिल्टर लागू करा याला प्रतिसाद म्हणून, डीफॉल्ट सोडा — फक्त एंटर दाबा. हे नेहमी "maven-archetype-quickstart" असेल. नवीनतम आवृत्ती निवडा. पुढे, आम्ही काही प्रश्नांची उत्तरे देऊ आणि प्रकल्प तयार करणे पूर्ण करू: 
mvn clean install
आणि
mvn javadoc: javadoc
जर आपण आता जनरेट केलेले डॉक्युमेंटेशन (एक्सप्लोरर टार्गेट\site\apidocs\index.html) उघडले तर आपल्याला UML डायग्राम्स दिसतील. तसे, अंमलबजावणी संबंध आता योग्यरित्या प्रदर्शित केले आहे :)
GO TO FULL VERSION