JavaRush /جاوا بلاگ /Random-UR /ترمیم کرنے والے یا جاوا کی دنیا میں جادو کاسٹ کرنے کا طری...
Petr Gorskin
سطح
Москва

ترمیم کرنے والے یا جاوا کی دنیا میں جادو کاسٹ کرنے کا طریقہ

گروپ میں شائع ہوا۔
اچھا کہکشاں دن، کامریڈز! یہ میرا پہلا بین السطور مخطوطہ ہے، اور چونکہ میں ایک انجینئر ہوں، اس لیے کچھ تصورات کی تشریح ماورائے زمین کی زبان میں کی جا سکتی ہے۔
ترمیم کرنے والے یا جاوا کی دنیا میں جادو کاسٹ کرنے کا طریقہ - 1
تعارف میری رائے میں، جاوا ایک نہ ختم ہونے والے کوریڈور کی طرح ہے جس میں دروازے (پیکیج) ہیں۔ ان میں سے ہر ایک دروازے کے پیچھے خالی جگہ ہے اور ایک فائل کیبنٹ ہے جس میں جادوئی طوماروں کا ایک پہاڑ ہے جس میں اشیاء بنانے کے لیے ہدایات (کلاسز) محفوظ ہیں۔ ہر اسکرول خصوصیات (متغیرات) اور صلاحیتوں (طریقوں) کے ایک سیٹ کو بیان کرتا ہے - اعمال (فیلڈز) یا تو خود کلاس یا اس کی بنیاد پر جمع کردہ کسی چیز پر انجام دیا جاتا ہے۔ اس مرحلے پر، آئیے اپنے آپ کو جادوگر تصور کریں اور ایک بالکل نئی ہدایات (کلاس) بنانے کی کوشش کریں۔ تو: ترمیم کرنے والے یا جاوا کی دنیا میں جادو کاسٹ کرنے کا طریقہ - 2آئیے حکمت کا امرت پیتے ہیں (بنیادی باتیں سیکھیں) اور ہدایات لکھنا شروع کریں۔ رسائی اور غیر رسائی میں ترمیم کرنے والے آئیے تصور کریں کہ کوئی بھی ہدایت اور اس کی بنیاد پر تخلیق کردہ کوئی چیز، نیز اس کی خصوصیات اور صلاحیتیں، ابتدائی طور پر جادوئی ہوں گی، یعنی انہیں ترمیم کرنے والوں کے مخصوص سیٹ تفویض کیے جائیں گے۔ آئیے ممکنہ جادو کے بارے میں ایک گائیڈ بنانے کی کوشش کرتے ہیں۔
  1. رسائی موڈیفائر ، جو کسی کلاس، آبجیکٹ یا فیلڈ کی رسائی کو بیان کرتا ہے، کی ضرورت ہے: اس کی غیر موجودگی میں، JVM (یہ آفاقی جادو کا ایسا ذریعہ ہے) خود بخود پیکج کو ڈیفالٹ شناخت کنندہ تفویض کرتا ہے۔

    دوسرے ترمیم کنندہ سے شروع کرتے ہوئے غیر رسائی والے ترمیم کار ہیں، جو لازمی نہیں ہیں اور ایک دوسرے سے متصادم بھی ہو سکتے ہیں (لیکن پہلی چیزیں پہلے)۔

  2. جامد ترمیم کرنے والا اشارہ کرتا ہے کہ کلاس، آبجیکٹ، یا فیلڈ جامد ہے۔ لیکن اس کا کیا مطلب ہے؟ بنیادی طور پر ہم اسے کھیتوں میں آزمائیں گے۔

    جامد متغیرات کو کلاس متغیر کہا جاتا ہے اور یہ اس کلاس کی تمام مثالوں کے لیے منفرد ہیں۔ جامد طریقوں کو اس چیز کو بنائے بغیر کہا جا سکتا ہے جس میں ان کا اعلان کیا گیا ہے۔ جامد کلاسز کا استعمال اس وقت کیا جاتا ہے جب ایک طبقے کو دوسرے طبقے میں داخل کیا جاتا ہے اور اندرونی طبقے اور بیرونی طبقے کے درمیان تعامل کا اصول طریقوں سے ملتا جلتا ہے (یہ ایک الگ بحث کا موضوع ہے)۔ کسی چیز کے اندر ایک علیحدہ بلاک کے طور پر بھی استعمال کیا جا سکتا ہے۔

  3. فائنل موڈیفائر مؤثر طریقے سے متغیر کی طرف اشارہ کرتا ہے کہ یہ ایک مستقل ہے۔ طریقوں کے لیے - کہ وراثت کے دوران ان کو اوور رائڈ نہیں کیا جا سکتا، لیکن کلاسز کے لیے یہ اس بات کا اشارہ ہے کہ اسے اس سے وراثت میں نہیں ملایا جا سکتا (غیر تبدیل شدہ)۔

    جامد اور حتمی ترمیم کرنے والے کلاسز، اشیاء اور فیلڈز پر لاگو ہوتے ہیں۔ تاہم، ایسے موڈیفائرز ہیں جو صرف ان میں سے کچھ پر لاگو ہوتے ہیں (یا ان کا کچھ حصہ بھی، چونکہ متغیر اور طریقہ دونوں ایک فیلڈ ہیں، لیکن تمام ترمیم کار دونوں پر لاگو نہیں ہوتے ہیں)۔ اگر ہم مشابہت کھینچیں تو رفتار کے لیے صرف جوتے اور دستانے ہی جادو کیے جا سکتے ہیں (ان کو تیز تر کرنے کے لیے)، لیکن رفتار کے لیے ٹوپی پر جادو کرنا بے معنی ہے (اور یونیورسل سپروائزری کونسل (مرتب) اس کی اجازت نہیں دے گی)۔

  4. خلاصہ موڈیفائر صرف طریقوں اور کلاسوں پر لاگو ہوتا ہے ۔ ایک تجریدی طریقہ ایک ایسا طریقہ ہے جس پر عمل درآمد (باڈی) نہیں ہے۔

    اگر کسی کلاس کو خلاصہ کے طور پر نشان زد کیا جاتا ہے، تو اس میں یا تو تجریدی طریقے ہوتے ہیں یا اس کلاس کی مثالوں کی تخلیق کو روکنے کے لیے کیا جاتا ہے۔ اگر ہم مشابہت کھینچتے ہیں، تو ہدایات کے بیچ میں آپ "کسی چیز کو رنگ دینا" کی سرخی دیکھ سکتے ہیں، جس کے بعد کوئی تفصیل نہیں ہے۔ وہ. اس ہدایت کو استعمال کرتے ہوئے آپ ایک آبجیکٹ بنا سکتے ہیں اور آپ اسے رنگ بھی کر سکتے ہیں، لیکن اس خاص ہدایات میں یہ نہیں بتایا گیا ہے کہ کیسے (اس چیز کی بنیاد پر سرخ چیز بنانے کے لیے اپنی ہدایات لکھیں اور اس کو رنگنے کا طریقہ بتائیں)۔

ملٹی تھریڈ والے ماحول میں کام کرتے وقت، خصوصی ترمیم کار استعمال کیے جا سکتے ہیں:
  1. Syncronized modifier صرف طریقوں کے لیے استعمال ہوتا ہے۔ اس کی موجودگی اس بات کی نشاندہی کرتی ہے کہ ایک وقت میں صرف ایک دھاگہ اس پر عمل درآمد کر سکتا ہے۔ کسی شے کے اندر کوڈ کے علیحدہ بلاک کے طور پر بھی استعمال کیا جا سکتا ہے (ہم وقت سازی آبجیکٹ کی وضاحت کرتے ہوئے)۔

  2. غیر مستحکم موڈیفائر - صرف متغیرات کے لیے ۔ متغیرات کے لیے استعمال کرنے کی سفارش کی جاتی ہے جو ایک ساتھ متعدد تھریڈز کے ذریعے استعمال کیے جا سکتے ہیں۔ اس طرح کے موڈیفائر والا متغیر جب بھی تبدیل ہوتا ہے تو اسے فوری طور پر پروسیسر کیشے سے مین میموری میں کاپی کر دیا جاتا ہے، جس سے متوازی تھریڈز کو تازہ ترین قدر حاصل ہو سکتی ہے۔

    یہ بات قابل غور ہے کہ volatile ان صورتوں میں لاگو ہوتا ہے جہاں صرف ایک تھریڈ کسی متغیر کو لکھ سکتا ہے، اور باقی صرف اس سے پڑھ سکتے ہیں۔ دیگر معاملات کے لیے، یہ بہتر ہے کہ ہم آہنگی والے موڈیفائر کو ان طریقوں میں شامل کیا جائے جو ایک غیر مستحکم متغیر کو لکھتے ہیں۔

  3. عارضی ترمیم کنندہ - صرف متغیرات کے لیے ۔ یہ ترمیم کنندہ متغیرات کو نشان زد کرتا ہے جنہیں کسی چیز کو سیریلائز کرتے وقت چھوڑنے کی ضرورت ہوتی ہے (یہ ایک ایسا سمارٹ عمل ہے کہ اصولی طور پر، آپ خود اس کے بارے میں پڑھ سکتے ہیں...)*

    *- میں نے یہ مضمون 17 کی سطح پر لکھا تھا اور اس وقت تک سیریلائزیشن کو بطور عمل بیان نہیں کیا گیا تھا، اس لیے کاپی پیسٹ کرنے کے بجائے، میں آپ کو مشورہ دیتا ہوں کہ اگر ضروری ہو تو خود اس کا مطالعہ کریں۔

متضاد موڈیفائر جوڑے مختلف کلاسوں، اشیاء اور فیلڈز میں ترمیم کاروں کے قابل اطلاق ہونے کے علاوہ، متضاد جوڑوں کا تصور بھی موجود ہے۔ ہم کہتے ہیں کہ ہیلمٹ کو طاقت کے ساتھ جادو کرنے سے یہ بھاری ہو جاتا ہے، اور ساتھ ہی آپ اسے ہلکا ہونے پر بھی جادو کرنا چاہتے ہیں۔ ایک دوسرے کے ساتھ فٹ نہیں بیٹھتا۔
  1. حتمی اور غیر مستحکم - جب متغیرات کی بات آتی ہے، تو ہم بیک وقت یہ نہیں کہہ سکتے کہ یہ حتمی (مستقل) ہے اور کئی تھریڈز اسے تبدیل کرنے کی صلاحیت رکھتے ہیں... بہر حال، یہ مستقل ہے، اور کسی بھی لمحے کوئی دھاگہ اسے پڑھ سکتا ہے۔ ، لیکن ایک بھی دھاگہ مستقل کو تبدیل نہیں کرسکتا (یونیورسل سپروائزری کونسل اس کی اجازت نہیں دے گی)۔
  2. حتمی اور خلاصہ - کلاسز اور طریقے دونوں خلاصہ نہیں ہوسکتے ہیں (جو زیادہ تر معاملات میں ان پر عمل درآمد کے لیے وضاحت کرنے کی ضرورت کا مطلب ہے) اور حتمی، یعنی ناقابل تغیر یہ پتہ چلتا ہے کہ ہدایات یہ بتاتی ہیں کہ کسی بھی مواد (خلاصہ حصہ) سے ایک اچھا پائیدار ہیلمیٹ کیسے بنایا جائے، لیکن اس کے لئے اس میں کوئی سوراخ نہیں ہونا چاہئے (حتمی لازمی حصہ، تبدیل نہیں کیا جا سکتا).
  3. خلاصہ اور جامد - ایک تجریدی طریقہ ایک ہی وقت میں جامد یا مطابقت پذیر نہیں ہوسکتا ہے۔ ایک جامد تجریدی طریقہ کوئی معنی نہیں رکھتا، کیونکہ یہ نہ صرف کچھ نہیں کرتا، بلکہ اس کا تعلق ایک پوری کلاس سے ہے - نتیجہ ایک بیکار چیز ہے۔
  4. خلاصہ اور مطابقت پذیری - کسی ایسے طریقہ کے ساتھ کام کو مطابقت پذیر کرنے کا کیا فائدہ ہے جو کچھ نہیں کرتا ہے؟
خلاصہ یہ ہے کہ ترمیم کرنے والوں کی تفصیل ختم ہو گئی ہے، تمام تنازعات کو حل کر دیا گیا ہے اور اب آپ چیٹ شیٹ کے ساتھ نتیجہ کو یکجا کر سکتے ہیں - ایک جادوئی خاکہ: موڈیفائرز یا جاوا کی دنیا میں جادو کاسٹ کرنے کا طریقہ - 3آخر میں، میں یہ کہنا چاہتا ہوں کہ یہ مضمون لکھنا میری خواہش کی تکمیل تھی۔ ترمیم کرنے والوں کا مطالعہ کرنا۔ تجربہ کامیاب ہے یا نہیں اس کا فیصلہ آپ پر منحصر ہے۔ میں اس کو بہتر بنانے/ درست کرنے کے لیے آپ کی تجاویز کا انتظار کر رہا ہوں اور، شاید مل کر، ہم اسے ابتدائی جاوا پلیئرز کے لیے ایک بہت مفید کتابچہ بنائیں گے۔
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION