JavaRush /جاوا بلاگ /Random-UR /یو ایم ایل: تھیوری سے پریکٹس تک
Viacheslav
سطح

یو ایم ایل: تھیوری سے پریکٹس تک

گروپ میں شائع ہوا۔

تعارف

میرے خیال میں سب نے بچپن میں یہ کہاوت سنی ہوگی کہ ’’ دو بار ناپ لو، ایک بار کاٹو ‘‘۔ پروگرامنگ میں بھی ایسا ہی ہے۔ اس پر عمل درآمد کرنے میں وقت گزارنے سے پہلے اس کے نفاذ کے بارے میں سوچنا ہمیشہ بہتر ہے۔ اکثر عمل درآمد کے دوران آپ کو کلاسیں بنانا پڑتی ہیں اور ان کا تعامل ایجاد کرنا پڑتا ہے۔ اور اکثر اس کی بصری نمائندگی مسئلے کو درست طریقے سے حل کرنے میں مدد کر سکتی ہے۔ یہ وہ جگہ ہے جہاں UML ہماری مدد کرتا ہے ۔

UML کیا ہے؟

اگر آپ سرچ انجن میں تصویریں دیکھیں تو یہ واضح ہو جائے گا کہ یو ایم ایل ڈائیگرام، تیر اور چوکوں کے بارے میں کچھ ہے۔ اہم بات یہ ہے کہ یو ایم ایل یونیفائیڈ ماڈلنگ لینگویج میں ترجمہ کرتا ہے ۔ یونیفائیڈ کا لفظ یہاں اہم ہے۔ یعنی ہماری تصویریں صرف ہم ہی نہیں بلکہ UML کو جاننے والے دوسرے بھی سمجھیں گے۔ یہ پتہ چلتا ہے کہ یہ خاکے بنانے کے لیے ایک بین الاقوامی زبان ہے۔

یو ایم ایل: تھیوری سے پریکٹس تک - 1

جیسا کہ وکی پیڈیا کہتا ہے۔

UML سافٹ ویئر ڈویلپمنٹ، بزنس پروسیس ماڈلنگ، سسٹم ڈیزائن، اور تنظیمی ڈھانچے کی نمائش میں آبجیکٹ ماڈلنگ کے لیے ایک گرافیکل وضاحتی زبان ہے۔
سب سے دلچسپ بات جس کے بارے میں ہر کوئی نہیں سوچتا اور نہ ہی اس کا احساس ہوتا ہے وہ یہ ہے کہ UML کی خصوصیات ہیں۔ مزید یہ کہ، یہاں تک کہ ایک UML2 تفصیلات بھی ہیں۔ تفصیلات کے بارے میں مزید تفصیلات آبجیکٹ مینجمنٹ گروپ کی ویب سائٹ پر مل سکتی ہیں ۔ دراصل، یہ گروپ یو ایم ایل کی وضاحتیں تیار کر رہا ہے۔ یہ بھی دلچسپ ہے کہ UML صرف طبقات کی ساخت کو بیان کرنے تک محدود نہیں ہے۔ UML ڈایاگرام کی بہت سی قسمیں ہیں۔ یو ایم ایل ڈایاگرام کی اقسام کی ایک مختصر تفصیل اسی ویکیپیڈیا: یو ایم ایل ڈائیگرامز میں یا ویڈیو میں تیمور بطیرشینوف ریویو آف یو ایم ایل ڈائیگرامس میں دیکھی جا سکتی ہے ۔ UML بھی وسیع پیمانے پر مختلف عملوں کو بیان کرنے کے لیے استعمال کیا جاتا ہے، مثال کے طور پر یہاں: JWT کا استعمال کرتے ہوئے سنگل سائن آن ۔ UML کلاس ڈایاگرام کے استعمال کی طرف واپس آتے ہوئے، یہ کتاب Head First: Design Patterns پر توجہ دینے کے قابل ہے ، جس میں انہی UML ڈایاگرام کے ذریعے نمونوں کی عکاسی کی گئی ہے۔ یہ پتہ چلتا ہے کہ واقعی UML استعمال ہو رہا ہے۔ اور یہ پتہ چلتا ہے کہ اس کے اطلاق کے بارے میں علم اور سمجھ کافی مفید مہارت ہے۔

درخواست

آئیے دیکھتے ہیں کہ آپ IDE سے اسی UML کے ساتھ کیسے کام کر سکتے ہیں۔ آئیے IntelliJ Idea کو بطور IDE لیتے ہیں ۔ اگر ہم IntelliJ Idea Ultimate استعمال کرتے ہیں ، تو ہمارے پاس " UML Support " پلگ ان باکس کے باہر انسٹال ہوگا۔ یہ آپ کو خود بخود خوبصورت کلاس ڈایاگرام بنانے کی اجازت دیتا ہے۔ مثال کے طور پر، Ctrl+N یا مینو آئٹم "Navigate" -> "Class" کا استعمال کرتے ہوئے ہم ArrayList کلاس میں جاتے ہیں ۔ اب، کلاس کے نام کے لیے سیاق و سباق کے مینو کے ذریعے، "ڈایاگرام" -> "ڈائیگرام پاپ اپ دکھائیں" کو منتخب کریں۔ نتیجے کے طور پر، ہمیں ایک خوبصورت خاکہ ملتا ہے:
یو ایم ایل: تھیوری سے پریکٹس تک - 2
لیکن کیا ہوگا اگر آپ اسے خود کھینچنا چاہتے ہیں، اور آپ کے پاس آئیڈیا کا حتمی ورژن بھی نہیں ہے؟ اگر ہم IntelliJ Idea Community Edition استعمال کرتے ہیں، تو ہمارے پاس کوئی اور چارہ نہیں ہے۔ ایسا کرنے کے لیے، آپ کو یہ سمجھنے کی ضرورت ہے کہ اس طرح کے UML ڈایاگرام کو کس طرح بنایا گیا ہے۔ سب سے پہلے، ہمیں Graphviz انسٹال کرنے کی ضرورت ہوگی ۔ یہ گراف کو دیکھنے کے لیے افادیت کا ایک مجموعہ ہے۔ یہ اس پلگ ان کے ذریعہ استعمال ہوتا ہے جسے ہم استعمال کریں گے۔ انسٹالیشن کے بعد، آپ کو گرافویز انسٹالیشن ڈائرکٹری سے بن ڈائرکٹری کو اپنے PATH ماحولیاتی متغیر میں شامل کرنے کی ضرورت ہے ۔ اس کے بعد، IntelliJ Idea میں، مینو سے File -> Settings کو منتخب کریں۔ "Settings" ونڈو میں، "Plugins" زمرہ منتخب کریں، "Browse repositories" بٹن پر کلک کریں اور PlantUML انٹیگریشن پلگ ان انسٹال کریں ۔ پلانٹ یو ایم ایل اتنا اچھا کیوں ہے ؟ یہ UML کو بیان کرنے کے لیے " ڈاٹ " نامی گراف کی وضاحت کی زبان استعمال کرتا ہے اور یہ اسے زیادہ عالمگیر ہونے کی اجازت دیتا ہے، کیونکہ... یہ زبان نہ صرف PlantUML استعمال کرتی ہے۔ مزید یہ کہ ہم ذیل میں جو کچھ بھی کرتے ہیں وہ نہ صرف IDE میں بلکہ آن لائن سروس planttext.com میں بھی کیا جا سکتا ہے ۔ پلانٹ یو ایم ایل پلگ ان انسٹال کرنے کے بعد، ہم "فائل" -> "نیو" کے ذریعے یو ایم ایل ڈائیگرامس بنانے کے قابل ہو جائیں گے۔ آئیے "UML کلاس" قسم کا ایک خاکہ بنائیں۔ اس عمل کے دوران، مثال کے ساتھ ایک ٹیمپلیٹ خود بخود تیار ہو جاتا ہے۔ آئیے اس کے مشمولات کو حذف کریں اور Habr: Class relationships - UML سے code تک کے ایک مضمون سے لیس اپنی تخلیق کریں ۔ اور یہ سمجھنے کے لیے کہ متن میں اس کی تصویر کشی کیسے کی جائے، آئیے PlantUML manual: plantuml class-diagram لیتے ہیں ۔ بالکل شروع میں ایک ٹیبل ہے جس میں دکھایا گیا ہے کہ کنکشن کو کیسے بیان کیا جانا چاہئے:
یو ایم ایل: تھیوری سے پریکٹس تک - 3
ہم خود یہاں کنکشنز کو بھی دیکھ سکتے ہیں: " UML میں کلاسوں کے درمیان تعلقات۔ مثالیں۔ " ان مواد کی بنیاد پر، آئیے اپنا UML خاکہ بنانا شروع کریں۔ آئیے مندرجہ ذیل مواد کو شامل کریں جو دو کلاسوں کی وضاحت کرتا ہے:

@startuml
class ArrayList {
}
class LinkedList {
}
@enduml
Idea میں نتیجہ دیکھنے کے لیے، "View" -> "Tool Windows" -> "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
اس سب کے بعد یہ اس طرح نظر آئے گا:
یو ایم ایل: تھیوری سے پریکٹس تک - 4
آپ ضرورت کے مطابق زیادہ سے زیادہ تفصیل میں جا سکتے ہیں۔ تمام عہدوں کی نشاندہی یہاں کی گئی ہے: " پلانٹ یو ایم ایل - کلاس ڈایاگرام "۔ اس کے علاوہ، اس طرح کے ایک خاکہ کو ڈرائنگ میں کوئی مافوق الفطرت نہیں ہے، اور جب آپ اپنے کاموں پر کام کرتے ہیں، تو آپ اسے جلدی سے ہاتھ سے کھینچ سکتے ہیں۔ یہ ایپلیکیشن آرکیٹیکچر کے ذریعے سوچنے کی آپ کی مہارتوں کو فروغ دے گا اور آپ کو غلط ماڈل کو نافذ کرنے میں دن گزارنے کے بجائے طبقاتی ڈھانچے کی خامیوں کی جلد شناخت کرنے میں مدد ملے گی۔ مجھے لگتا ہے کہ اسے آزمانے کی ایک اچھی وجہ ہے؟ )
یو ایم ایل: تھیوری سے پریکٹس تک - 5

آٹومیشن

خود کار طریقے سے PlantUML ڈایاگرام بنانے کے مختلف طریقے ہیں۔ مثال کے طور پر، Idea کے پاس SketchIT پلگ ان ہے ، لیکن یہ انہیں بالکل درست طریقے سے نہیں کھینچتا ہے۔ مثال کے طور پر، انٹرفیس کے نفاذ کو غلط طریقے سے تیار کیا گیا ہے (وراثت کے طور پر دکھایا گیا ہے)۔ انٹرنیٹ پر ایسی مثالیں بھی موجود ہیں کہ اسے اپنے پروجیکٹ کے بلڈ لائف سائیکل میں کیسے بنایا جائے۔ ہم کہتے ہیں کہ uml-java-docklet کا استعمال کرتے ہوئے Maven کے لیے ایک مثال موجود ہے ۔ یہ دکھانے کے لیے کہ یہ کیسے کیا جاتا ہے، ہم Maven Archetype کو تیزی سے Maven پروجیکٹ بنانے کے لیے استعمال کریں گے۔ آئیے کمانڈ پر عمل کریں: جب فلٹر کو منتخب کرنے کے لیے کہا جائے ( ایک نمبر منتخب کریں یا فلٹر لگائیں ) تو صرف Enter دبانے سے پہلے سے طے شدہ چھوڑ دیں۔ یہ ہمیشہ " maven-archetype-quickstart " ہوگا ۔ تازہ ترین ورژن منتخب کریں۔ اگلا، ہم سوالات کا جواب دیتے ہیں اور پروجیکٹ کی تخلیق مکمل کرتے ہیں: mvn archetype:generate
یو ایم ایل: تھیوری سے پریکٹس تک - 6
چونکہ Maven اس مضمون کا فوکس نہیں ہے، اس لیے آپ کے Maven کے سوالات کے جوابات Maven Users Center میں مل سکتے ہیں ۔ تیار کردہ پروجیکٹ میں، ترمیم کے لیے پروجیکٹ کی تفصیل کی فائل pom.xml کھولیں ۔ آئیے اس میں uml-java-docklet انسٹال کرنے کی تفصیل سے مواد کو کاپی کرتے ہیں ۔ تفصیل میں استعمال کیا گیا نمونہ ماون سینٹرل ریپوزٹری میں نہیں مل سکا۔ لیکن اس نے میرے لئے اس کے ساتھ کام کیا: https://mvnrepository.com/artifact/com.chfourie/uml-java-doclet/1.0.0 ۔ یعنی، اس تفصیل میں آپ کو صرف گروپ آئی ڈی کو " info.leadinglight " سے " com.chfourie " سے بدلنا ہوگا اور ورژن کو " 1.0.0 " پر سیٹ کرنا ہوگا۔ اس کے بعد، ہم ان کمانڈز کو ڈائرکٹری میں چلا سکتے ہیں جہاں pom.xmlmvn clean install فائل موجود ہے: اور mvn javadoc:javadoc. اب، اگر ہم تیار کردہ دستاویزات (explorer target\site\apidocs\index.html) کو کھولتے ہیں، تو ہم UML ڈایاگرام دیکھیں گے۔ ویسے، عمل درآمد پہلے ہی یہاں صحیح طریقے سے دکھایا گیا ہے)

نتیجہ

جیسا کہ آپ دیکھ سکتے ہیں، UML آپ کو اپنی درخواست کی ساخت کو دیکھنے کی اجازت دیتا ہے۔ مزید یہ کہ یو ایم ایل صرف اس تک محدود نہیں ہے۔ UML کا استعمال کرتے ہوئے، آپ اپنی کمپنی کے اندر مختلف عمل کی وضاحت کر سکتے ہیں یا اس کاروباری عمل کی وضاحت کر سکتے ہیں جس کے اندر آپ جو فنکشن لکھ رہے ہیں کام کرتا ہے۔ UML ذاتی طور پر آپ کے لیے کتنا مفید ہے اس کا فیصلہ آپ پر منحصر ہے، لیکن اسے مزید تفصیل سے پڑھنے کے لیے وقت نکالنا ہر صورت مفید ہوگا۔ #ویاچسلاو
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION