تعارف
منهنجو خيال آهي ته هر ڪنهن کي ننڍپڻ ۾ اهڙي چوڻي ٻڌو آهي ته " ٻه ڀيرا ماپ ڪريو، هڪ ڀيرو ڪٽي ." اهو ساڳيو پروگرامنگ ۾ آهي. اهو هميشه بهتر آهي ته توهان ان تي عمل ڪرڻ کان پهريان ان تي عمل ڪرڻ بابت سوچيو. اڪثر عمل جي دوران توهان کي ڪلاس ٺاهڻ ۽ انهن جي رابطي کي ايجاد ڪرڻو پوندو. ۽ اڪثر هن جي هڪ بصري نمائندگي سڀ کان وڌيڪ صحيح انداز ۾ مسئلو حل ڪرڻ ۾ مدد ڪري سگهي ٿو. هي آهي جتي UML اسان جي مدد ڪري ٿي .UML ڇا آهي؟
جيڪڏهن توهان سرچ انجڻ ۾ تصويرن کي ڏسو، اهو واضح ٿي ويندو ته يو ايم ايل ڊراگرام، تير ۽ چوڪن بابت ڪجهه آهي. ڇا ضروري آهي ته UML ترجمو ڪري ٿو متحد ماڊلنگ ٻولي . گڏيل لفظ هتي اهم آهي. يعني اسان جون تصويرون نه رڳو اسان کي پر ٻين کي به سمجھندا جيڪي UML کي ڄاڻن ٿا. اهو ظاهر ٿئي ٿو ته هي ڊرائنگ ڊرائنگ لاء هڪ بين الاقوامي ٻولي آهي.
جيئن وڪيپيڊيا چوي ٿو
UML سافٽ ويئر ڊولپمينٽ، ڪاروباري پروسيس ماڊلنگ، سسٽم ڊيزائن، ۽ تنظيمي ڍانچي کي ڊسپلي ڪرڻ ۾ اعتراض ماڊلنگ لاء هڪ گرافاتي وضاحت جي ٻولي آهي.سڀ کان وڌيڪ دلچسپ شيء جيڪا هر ڪنهن جي باري ۾ نه سوچيندو آهي يا اهو محسوس ڪري ٿو ته يو ايم ايل جون خاصيتون آهن. ان کان علاوه، اتي به ھڪڙو UML2 وضاحت آھي. تفصيل جي باري ۾ وڌيڪ تفصيل ڳولهي سگهجن ٿا Object Management Group ويب سائيٽ . دراصل، هي گروپ ترقي ڪري رهيو آهي UML وضاحتون. اهو پڻ دلچسپ آهي ته UML صرف طبقن جي جوڙجڪ کي بيان ڪرڻ تائين محدود ناهي. UML ڊراگرام جا ڪيترائي قسم آھن. UML ڊرائگرامن جي قسمن جو مختصر بيان ساڳئي وڪيپيڊيا: يو ايم ايل ڊاگرامس ۾ يا وڊيو ۾ تيمور باتيرشينوف جي يو ايم ايل ڊاگرامس جو جائزو ڏسي سگھجي ٿو . UML پڻ وڏي پيماني تي استعمال ڪيو ويندو آهي مختلف عملن کي بيان ڪرڻ لاءِ، مثال طور هتي: سنگل سائن آن استعمال ڪندي JWT . يو ايم ايل ڪلاس ڊاگرامس جي استعمال ڏانھن واپسي، اھو نوٽ ڪرڻ جي لائق آھي ڪتاب Head First: Design Patterns ، جنھن ۾ نمونن کي انھن ساڳين يو ايم ايل ڊاگرامن ذريعي بيان ڪيو ويو آھي. اهو ظاهر ٿئي ٿو ته يو ايم ايل واقعي استعمال ٿي رهيو آهي. ۽ اهو ظاهر ٿئي ٿو ته علم ۽ ان جي ايپليڪيشن کي سمجهڻ ڪافي مفيد مهارت آهي.
درخواست
اچو ته ڏسو ته توهان ڪيئن ڪم ڪري سگهو ٿا انهي ساڳئي UML سان IDE مان. اچو ته IntelliJ Idea کي IDE طور وٺون . جيڪڏهن اسان استعمال ڪريون ٿا IntelliJ Idea Ultimate ، ته پوءِ اسان وٽ هوندو ” UML Support “ پلگ ان دٻي مان انسٽال ٿيل. اهو توهان کي خودڪار طريقي سان خوبصورت ڪلاس ڊراگرام ٺاهڻ جي اجازت ڏئي ٿو. مثال طور، Ctrl+N استعمال ڪندي يا مينيو آئٽم "Navigate" -> "Class" اسان وڃون ٿا ArrayList class . ھاڻي، ڪلاس جي نالي جي حوالي سان مينيو مان، چونڊيو "ڊاگرام" -> "ڊاگرام پاپ اپ ڏيکاريو". نتيجي طور، اسان هڪ خوبصورت خاڪو حاصل ڪريون ٿا:
@startuml
class ArrayList {
}
class LinkedList {
}
@enduml
Idea ۾ نتيجو ڏسڻ لاءِ، "ڏسو" -> "ٽول ونڊوز" -> "PlantUML" چونڊيو. اسان صرف ٻه اسڪوائر حاصل ڪنداسين جيڪي طبقن جي نمائندگي ڪن ٿا. جيئن اسان ڄاڻون ٿا، انهن ٻنهي طبقن کي لاڳو ڪن ٿا لسٽ انٽرفيس. اهو طبقاتي تعلق عمل کي سڏيو ويندو آهي. اهڙي ڪنيڪشن کي ظاهر ڪرڻ لاء، هڪ تير استعمال ڪريو ڊاٽ ٿيل لڪير سان. اچو ته ان کي بيان ڪريون:
interface List
List <|.. ArrayList
List <|.. LinkedList
List
- ٻارن جي طبقن مان هڪ Collection
. اھو آھي، اھو ڪليڪشن مان ورثي ۾ ملي ٿو. هن رابطي کي عام سڏيو ويندو آهي. اهو هڪ تير وانگر ڏسڻ ۾ اچي ٿو جيڪو باقاعده مسلسل لائين سان. اچو ته ان کي بيان ڪريون:
interface Collection
Collection <|-- List
هيٺين قسم جي ڪنيڪشن لاءِ، ڪلاس جي تفصيل ۾ شامل ڪريو پيڪيج جي پرائيويٽ صفن جي عناصر ArrayList
جي باري ۾ داخلا :
~Object[] elementData
ھاڻي اسان ڏيکارڻ چاھيون ٿا ته ArrayList
ڪھڙي شيءِ تي مشتمل آھي. انهي صورت ۾، ڪنيڪشن جو قسم مجموعي هوندو . هن معاملي ۾ يونٽ آهي ArrayList
، ڇاڪاڻ ته اهو ٻين شين تي مشتمل آهي. اسان مجموعي کي چونڊيندا آهيون ڇاڪاڻ ته فهرست ۾ شيون فهرست کان سواء رهي سگهن ٿيون: اهي ان جا لازمي حصا نه آهن. انهن جي زندگي جي فهرست جي زندگيء سان ڳنڍيل نه آهي. Aggregate لاطيني مان ترجمو ڪيو ويو آهي "جمع ٿيل"، يعني ڪا شيءِ جو ٺهيل آهي. مثال طور، زندگي ۾، اتي هڪ پمپنگ يونٽ آهي، جنهن ۾ هڪ پمپ ۽ هڪ موٽر تي مشتمل آهي. يونٽ پاڻ کي جدا ڪري سگهجي ٿو، ان جي ڪجهه حصن کي ڇڏي. مثال طور، وڪڻڻ يا ٻي يونٽ ۾ رکڻ. ائين ئي فهرست آهي. ۽ اهو بيان ڪيو ويو آهي هڪ خالي هيرن جي صورت ۾ يونٽ جي ويجهو ۽ هڪ مسلسل لڪير. اچو ته ان کي هن طرح بيان ڪريون:
class Object{
}
ArrayList o- Object
هاڻي اسان اهو ڏيکارڻ چاهيون ٿا ته، ان جي ابتڙ ArrayList
، ڪلاس ۾ ڪنٽينرز LinkedList
شامل آهن جيڪي ذخيرو ٿيل ڊيٽا ڏانهن اشارو ڪن ٿا. Node
هن معاملي ۾، Node
اهي پاڻ جو حصو آهن LinkedList
۽ الڳ الڳ رهي نه ٿا ڪري سگهو. Node
سڌو سنئون ذخيرو ٿيل مواد نه آهي، پر صرف ان جي لنڪ تي مشتمل آهي. مثال طور، جڏهن اسان LinkedList
هڪ قطار ۾ شامل ڪندا آهيون، اسان هڪ نئون شامل ڪندا آهيون Node
، جنهن ۾ انهي قطار جي هڪ لنڪ شامل آهي، انهي سان گڏ پوئين ۽ ايندڙ جي لنڪ Node
. هن قسم جي رابطي کي ڪمپوزيشن سڏيو ويندو آهي . هڪ جامع (جنهن ۾ حصن تي مشتمل آهي) کي ظاهر ڪرڻ لاءِ، هڪ رنگين هيرو ٺهيل آهي، جنهن ۾ هڪ لڳاتار لڪير آهي، جيڪا ان ڏانهن وڃي ٿي. اچو ته ھاڻي ھن کي لکون ڪنيڪشن جي ٽيڪسٽ ڊسپلي جي طور تي:
class Node{
}
LinkedList *-- Node
۽ هاڻي اسان کي سکڻ جي ضرورت آهي ته هڪ ٻيو اهم قسم جو تعلق ڪيئن ڏيکاريو - انحصار تعلق. اهو استعمال ٿيندو آهي جڏهن هڪ طبقو ٻيو استعمال ڪندو آهي، پر ڪلاس ۾ اهو طبقو نه هوندو آهي جيڪو استعمال ڪيو ويندو آهي ۽ نه ئي ان جو اولاد آهي. مثال طور، LinkedList
اهي ArrayList
ڄاڻن ٿا ته ڪيئن ٺاهيو ListIterator
. اچو ته هن کي ڊاٽ ٿيل لڪير سان تير وانگر ڏيکاريون:
class ListIterator
ListIterator <... ArrayList : create
ListIterator <... LinkedList : create
سڀ کان پوء، اهو هن طرح نظر ايندو:
آٽوميشن
پلانٽ يو ايم ايل ڊاگرامس پاڻمرادو پيدا ڪرڻ جا مختلف طريقا آھن. مثال طور، Idea وٽ SketchIT پلگ ان آھي ، پر اھو انھن کي بلڪل صحيح طرح نٿو ٺاھيو. مثال طور، انٽرفيس تي عمل درآمد غلط طور تي ٺهيل آهي (وراثت جي طور تي ڏيکاريل). انٽرنيٽ تي پڻ مثال موجود آهن ته ڪيئن ٺاهيو اهو توهان جي منصوبي جي زندگي جي چڪر ۾ ٺاهيو. اچو ته چوندا آهن ته Maven لاءِ هڪ مثال آهي uml-java-docklet استعمال ڪندي . اهو ڏيکارڻ لاءِ ته اهو ڪيئن ڪيو ويو آهي، اسان استعمال ڪنداسين Maven Archetype جلدي هڪ Maven پروجيڪٽ ٺاهڻ لاءِ. اچو ته ڪمانڊ تي عمل ڪريون:mvn archetype:generate
جڏهن فلٽر چونڊڻ لاءِ چيو وڃي ( ڪو نمبر چونڊيو يا فلٽر لاڳو ڪريو )، صرف Enter کي دٻائڻ سان ڊفالٽ ڇڏي ڏيو. اهو هميشه ٿيندو " maven-archetype-quickstart ". جديد نسخو چونڊيو. اڳيون، اسان سوالن جا جواب ڏيون ٿا ۽ منصوبي جي پيدائش کي مڪمل ڪريو:
mvn clean install
mvn javadoc:javadoc
GO TO FULL VERSION