JavaRush /جاوا بلاگ /Random-UR /پولیمورفزم کے استعمال کی مشق

پولیمورفزم کے استعمال کی مشق

گروپ میں شائع ہوا۔
ہیلو! آج ہم OOP کے اصولوں پر لیکچرز کا ایک سلسلہ ختم کر رہے ہیں ۔ اس سبق میں ہم پولیمورفزم کے بارے میں بات کریں گے۔ پولیمورفزم کے استعمال کی مشق - 1پولیمورفزم ایک سے زیادہ اقسام کا علاج کرنے کی صلاحیت ہے جیسے کہ وہ ایک ہی قسم کے ہوں۔ اس صورت میں، اشیاء کا طرز عمل اس بات پر منحصر ہوگا کہ وہ کس قسم سے تعلق رکھتے ہیں۔ آئیے اس بیان کو مزید تفصیل سے دیکھتے ہیں۔ آئیے پہلے حصے کے ساتھ شروع کریں: "متعدد اقسام کے ساتھ کام کرنے کی صلاحیت جیسے کہ وہ ایک ہی قسم کے ہوں۔" مختلف قسمیں ایک جیسی کیسے ہو سکتی ہیں؟ تھوڑا سا عجیب لگتا ہے :/ یہ اصل میں آسان ہے۔ مثال کے طور پر، یہ صورت حال وراثت کے عام استعمال سے پیدا ہوتی ہے۔ آئیے دیکھتے ہیں کہ یہ کیسے کام کرتا ہے۔ ہم کہتے ہیں کہ ہمارے پاس ایک سادہ Catطریقہ کار کے ساتھ پیرنٹ کلاس ہے run()- "رن":
public class Cat {

   public void run() {
       System.out.println("Бег!");
   }
}
اب آئیے تین کلاس بناتے ہیں جو وراثت میں آتے ہیں Cat:، اور Lion، شیر، شیر اور چیتا کی نشاندہی کرتے ہیں۔ TigerCheetah
public class Lion extends Cat {

   @Override
   public void run() {
       System.out.println("Лев бежит со speedю 80 км/ч");
   }
}

public class Tiger extends Cat {

   @Override
   public void run() {
       System.out.println("Тигр бежит со speedю 60 км/ч");
   }
}

public class Cheetah extends Cat {

   @Override
   public void run() {
       System.out.println("Гепард бежит со speedю до 120 км/ч");
   }
}
تو ہمارے پاس 3 کلاسز ہیں۔ آئیے ایک ایسی صورتحال کی تقلید کرتے ہیں جہاں ہم ان کے ساتھ اس طرح کام کر سکتے ہیں جیسے وہ ایک ہی طبقے کے ہوں۔ آئیے تصور کریں کہ ہماری ایک بلی بیمار ہے اور اسے ڈاکٹر ایبولٹ کی مدد کی ضرورت ہے۔ آئیے ایک ایسی کلاس بنانے کی کوشش کریں Aibolitجو شیر، شیر اور چیتا کا علاج کر سکے۔
public class Aibolit {

   public void healLion(Lion lion) {

       System.out.println("Лев здоров!");
   }

   public void healTiger(Tiger tiger) {

       System.out.println("Тигр здоров!");
   }

   public void healCheetah(Cheetah cheetah) {

       System.out.println("Гепард здоров!");
   }
}
ایسا لگتا ہے کہ مسئلہ حل ہو گیا ہے - کلاس لکھا ہوا ہے اور استعمال کے لیے تیار ہے۔ لیکن اگر ہم اپنے پروگرام کو بڑھانا چاہتے ہیں تو ہم کیا کریں گے؟ اب ہمارے پاس صرف 3 اقسام ہیں: شیر، شیر اور چیتا۔ لیکن دنیا میں بلیوں کی 40 سے زائد اقسام پائی جاتی ہیں۔ تصور کریں کہ کیا ہو گا اگر ہم پروگرام میں پالاس کی بلیوں، جیگوارز، مین کونز، گھریلو بلیوں اور باقی سب کے لیے الگ الگ کلاسیں شامل کریں۔ پولیمورفزم کے استعمال کی مشق - 2پروگرام خود، یقینا، کام کرے گا، لیکن کلاس کو Aibolitہر قسم کی بلی کے علاج کے لئے مسلسل نئے طریقے شامل کرنے ہوں گے، اور اس کے نتیجے میں یہ بے مثال سائز میں بڑھ جائے گا. یہ وہ جگہ ہے جہاں پولیمورفزم کی خاصیت عمل میں آتی ہے - "کئی اقسام کے ساتھ کام کرنے کی صلاحیت جیسے کہ وہ ایک ہی قسم کے ہوں۔" ہمیں ان گنت طریقے بنانے کی ضرورت نہیں ہے جو ایک ہی کام کریں - بلی کا علاج کریں۔ ایک ہی طریقہ تمام معاملات کے لیے ایک ہی وقت میں کافی ہوگا:
public class Aibolit {

   public void healCat(Cat cat) {

       System.out.println("Пациент здоров!");
   }
}
healCat()ہم اشیاء Lionاور Tigerاشیاء دونوں کو طریقہ کار میں منتقل کر سکتے ہیں Cheetah- وہ سب ہیں Cat:
public class Main {

   public static void main(String[] args) {

       Aibolit aibolit = new Aibolit();

       Lion simba = new Lion();
       Tiger sherekhan = new Tiger();
       Cheetah chester = new Cheetah();

       aibolit.healCat(simba);
       aibolit.healCat(sherekhan);
       aibolit.healCat(chester);
   }
}
کنسول آؤٹ پٹ:

Пациент здоров!
Пациент здоров!
Пациент здоров!
اس طرح ہماری کلاس Айболитمختلف اقسام کے ساتھ کام کر سکتی ہے جیسے کہ وہ ایک ہی قسم کے ہوں۔ اب آئیے دوسرے حصے سے نمٹتے ہیں: "اس صورت میں، اشیاء کا طرز عمل اس بات پر منحصر ہوگا کہ وہ کس قسم سے تعلق رکھتے ہیں۔" یہاں بھی سب کچھ آسان ہے۔ فطرت میں، تمام بلیاں مختلف طریقے سے چلتی ہیں. کم از کم، ان کی دوڑنے کی رفتار مختلف ہوتی ہے۔ ہمارے تین پالتو جانوروں میں چیتا سب سے تیز ہے، جب کہ شیر اور شیر آہستہ دوڑتے ہیں۔ یعنی ان کا رویہ مختلف ہے۔ پولیمورفزم نہ صرف ہمیں مختلف اقسام کو ایک کے طور پر استعمال کرنے کی صلاحیت فراہم کرتا ہے۔ ایک ہی وقت میں، یہ ہمیں ان کے اختلافات کو فراموش نہ کرنے کی اجازت دیتا ہے اور ان میں سے ہر ایک کے لیے مخصوص رویے کو محفوظ رکھتا ہے۔ اس کو اس مثال سے سمجھا جا سکتا ہے۔ ہم کہتے ہیں کہ کامیاب صحت یابی کے بعد، ہماری بلیوں نے جشن منانے کے لیے تھوڑا سا بھاگنے کا فیصلہ کیا۔ آئیے اسے اپنی کلاس میں شامل کریں Aibolit:
public class Aibolit {

   public void healCat(Cat cat) {

       System.out.println("Пациент здоров!");
       cat.run();
   }
}
آئیے تین جانوروں کے علاج کے لیے ایک ہی کوڈ کو چلانے کی کوشش کریں:
public static void main(String[] args) {

   Aibolit aibolit = new Aibolit();

   Lion simba = new Lion();
   Tiger sherekhan = new Tiger();
   Cheetah chester = new Cheetah();

   aibolit.healCat(simba);
   aibolit.healCat(sherekhan);
   aibolit.healCat(chester);
}
اور نتیجہ اس طرح نظر آئے گا:

Пациент здоров!
Лев бежит со speedю 80 км/ч
Пациент здоров!
Тигр бежит со speedю 60 км/ч
Пациент здоров!
Гепард бежит со speedю до 120 км/ч
یہاں ہم واضح طور پر دیکھتے ہیں کہ ہماری اشیاء کے مخصوص رویے کو محفوظ رکھا گیا تھا، حالانکہ ہم نے تینوں جانوروں کو ایک طریقہ میں منتقل کیا، ان میں سے ہر ایک کو "عام" بنا کر Cat۔ پولیمورفزم کی بدولت، جاوا کو بالکل یاد ہے کہ یہ صرف تین بلیاں نہیں ہیں، بلکہ ایک شیر، ایک شیر اور ایک چیتا ہیں، جو مختلف طریقے سے چلتے ہیں۔ یہ پولیمورفزم - لچکدار استعمال کرنے کا بنیادی فائدہ ہے ۔ جب ہمیں بہت سی اقسام میں مشترک کچھ فعالیت پیدا کرنے کی ضرورت ہوتی ہے، تو شیر، شیر اور چیتا صرف "بلیوں" میں بدل جاتے ہیں۔ تمام جانور مختلف ہیں، لیکن کچھ حالات میں - ایک بلی ایک بلی ہے، اس سے کوئی فرق نہیں پڑتا ہے کہ اس کا تعلق کس نسل سے ہے :) یہاں آپ کے لیے ویڈیو کی تصدیق ہے۔
جب اس "عمومی" کی ضرورت نہیں ہے، اور اس کے برعکس ہمیں پرجاتیوں کے رویے کو مختلف ہونے کی ضرورت ہے، ہر قسم مختلف طریقے سے برتاؤ کرتی ہے۔ پولیمورفزم کی بدولت، آپ کلاسوں کی ایک وسیع رینج کے لیے ایک ہی انٹرفیس (طریقوں کا سیٹ) بناتے ہیں۔ جس کی وجہ سے پروگراموں کی پیچیدگی کم ہو جاتی ہے۔ یہاں تک کہ اگر ہم پروگرام کو بلیوں کی 40 اقسام تک بڑھا دیتے ہیں، تب بھی ہمارے پاس سب سے آسان انٹرفیس ہوگا - run()تمام 40 بلیوں کے لیے ایک طریقہ۔
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION