CodeGym /جاوا بلاگ /Random-SD /جاوا ۾ پوليمورفيزم
John Squirrels
سطح
San Francisco

جاوا ۾ پوليمورفيزم

گروپ ۾ شايع ٿيل
سلام اڄ اسان OOP جي اصولن تي سبقن جو هڪ سلسلو ختم ڪريون ٿا. هن سبق ۾، اسان جاوا پوليمورفيزم بابت ڳالهائينداسين. پوليمورفيزم ڪيترن ئي قسمن سان ڪم ڪرڻ جي صلاحيت آهي ڄڻ ته اهي ساڳيا قسم آهن. ان کان علاوه، شين جو رويو مختلف هوندو انهن جي قسم جي لحاظ کان. اچو ته هن بيان تي هڪ ويجهي نظر رکون. اچو ته پهرين حصي سان شروع ڪريون: 'ڪيترن ئي قسمن سان ڪم ڪرڻ جي صلاحيت ڄڻ ته اهي ساڳيا قسم آهن'. ڪيئن مختلف قسمن جا ساڳيا ٿي سگهن ٿا؟ اهو ٿورڙو عجيب لڳي ٿو:/ پوليمورفيزم ڪيئن استعمال ڪجي - 1حقيقت ۾، اهو سڀ ڪجهه بلڪل سادو آهي. مثال طور، هي صورتحال وراثت جي عام استعمال دوران پيدا ٿئي ٿو. اچو ته ڏسو ته اهو ڪيئن ڪم ڪري ٿو. فرض ڪريو اسان وٽ ھڪڙو سادي ٻلي والدين ڪلاس آھي ھڪڙي ھڪڙي رن () طريقي سان:
public class Cat {

   public void run() {
       System.out.println("Run!");
   }
}
ھاڻي اسين ٽي طبقا ٺاھينداسين جيڪي ٻلي جا وارث آھن : شعر ، ٽائيگر ۽ چيتا .
public class Lion extends Cat {

   @Override
   public void run() {
       System.out.println("Lion runs at 80 km/h");
   }
}

public class Tiger extends Cat {

   @Override
   public void run() {
       System.out.println("Tiger runs at 60 km/h");
   }
}

public class Cheetah extends Cat {

   @Override
   public void run() {
       System.out.println("Cheetah runs at up to 120 km/h");
   }
}
تنهنڪري اسان وٽ 3 طبقا آهن. اچو ته صورتحال کي نموني ڏيون جتي اسان انهن سان گڏ ڪم ڪري سگهون ٿا ڄڻ ته اهي ساڳيا طبقي هئا. تصور ڪريو ته اسان جي ٻلين مان هڪ بيمار آهي ۽ ڊاڪٽر ڊولٽل جي مدد جي ضرورت آهي. اچو ته هڪ ڊولٽ ڪلاس ٺاهڻ جي ڪوشش ڪريون جيڪا شينهن، شينهن ۽ چيتا کي شفا ڏئي سگهي.
public class Dolittle {

   public void healLion(Lion lion) {

       System.out.println("Lion is healthy!");
   }

   public void healTiger(Tiger tiger) {

       System.out.println("Tiger is healthy!");
   }

   public void healCheetah(Cheetah cheetah) {

       System.out.println("Cheetah is healthy!");
   }
}
اهو لڳي ٿو مسئلو حل ٿي ويو آهي: ڪلاس لکيو ويو آهي ۽ وڃڻ لاءِ تيار آهي. پر جيڪڏهن اسان پنهنجي پروگرام کي وڌائڻ چاهيون ٿا ته ڇا ڪنداسين؟ اسان وٽ هن وقت صرف 3 قسم آهن: شينهن، شينهن ۽ چيتا. پر دنيا ۾ ٻلين جا 40 کان وڌيڪ قسم آهن. تصور ڪريو ته ڇا ٿيندو جيڪڏھن اسان مينول، جاگوار، مين ڪونز، گھر جي ٻڪرين ۽ باقي سڀني لاءِ الڳ ڪلاس شامل ڪيون. پوليمورفيزم ڪيئن استعمال ڪجي - 2پروگرام پاڻ، يقينا، ڪم ڪندو، پر اسان کي هر قسم جي ٻلي کي شفا ڏيڻ لاء ڊولٽ ڪلاس ۾ مسلسل نوان طريقا شامل ڪرڻو پوندو. نتيجي طور، اهو غير معمولي سائيز تائين وڌندو. هي اهو آهي جتي پوليمورفيزم - "ڪيترن ئي قسمن سان ڪم ڪرڻ جي صلاحيت ڄڻ ته اهي هڪ ئي قسم جا آهن" - اندر اچي ٿو. اسان کي ساڳيو ڪم ڪرڻ لاء بيشمار طريقا ٺاهڻ جي ضرورت ناهي - هڪ ٻلي کي شفا ڏيو. ھڪڙو طريقو انھن سڀني لاء ڪافي آھي:
public class Dolittle {

   public void healCat(Cat cat) {

       System.out.println("The patient is healthy!");
   }
}
healCat () طريقو قبول ڪري سگھي ٿو Lion ، Tiger ، ۽ Cheetah شيون - اھي سڀ Cats جا مثال آھن :
public class Main {

   public static void main(String[] args) {

       Dolittle dolittle = new Dolittle();

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

       dolittle.healCat(simba);
       dolittle.healCat(shereKhan);
       dolittle.healCat(chester);
   }
}
ڪنسول آئوٽ: مريض صحتمند آهي! مريض صحتمند آهي! مريض صحتمند آهي! تنهنڪري اسان جو ڊولٽ ڪلاس مختلف قسمن سان ڪم ڪري ٿو ڄڻ ته اهي هڪ ئي قسم جا هجن. ھاڻي اچو ته ٻئي ڀاڱي کي حل ڪريون: ”وڌيڪ، شين جو رويو انھن جي قسم جي لحاظ کان مختلف ھوندو“. اهو سڀ ڪجهه بلڪل سادو آهي. فطرت ۾، هر ٻلي مختلف انداز ۾ هلندو آهي. گهٽ ۾ گهٽ، اهي مختلف رفتار تي هلندا آهن. اسان جي ٽن ٻڪرين ۾ چيتا سڀ کان تيز آهي، جڏهن ته شينهن ۽ شينهن تمام تيز ڊوڙندا آهن. ٻين لفظن ۾، انهن جو رويو مختلف آهي. پوليمورفيزم صرف ان کان وڌيڪ ڪم ڪري ٿو اسان کي مختلف قسمن کي هڪ طور استعمال ڪرڻ ڏيو. اهو پڻ اسان کي انهن جي اختلافن کي ياد ڪرڻ جي اجازت ڏئي ٿو، انهن مان هر هڪ لاء مخصوص رويي کي محفوظ ڪري ٿو. هيٺ ڏنل مثال هن کي واضح ڪري ٿو. فرض ڪريو ته اسان جي ٻليون، ڪامياب بحالي کان پوء، ٿوري ڊوڙڻ جو مزو وٺڻ جو فيصلو ڪيو. اسان هن کي اسان جي Dolittle ڪلاس ۾ شامل ڪنداسين :
public class Dolittle {

   public void healCat(Cat cat) {

       System.out.println("The patient is healthy!");
       cat.run();
   }
}
اچو ته ٽن جانورن جي علاج لاءِ ساڳيو ڪوڊ هلائڻ جي ڪوشش ڪريون:
public static void main(String[] args) {

   Dolittle dolittle = new Dolittle();

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

   dolittle.healCat(simba);
   dolittle.healCat(shereKhan);
   dolittle.healCat(chester);
}
۽ هتي اهو آهي ته نتيجا ڇا نظر اچن ٿا: مريض صحتمند آهي! شعر 80 ڪلوميٽر في ڪلاڪ جي رفتار سان هلندو آهي. مريض صحتمند آهي! ٽائيگر 60 ڪلوميٽر في ڪلاڪ جي رفتار سان هلندو آهي. مريض صحتمند آهي! چيتا 120 ڪلوميٽر في ڪلاڪ جي رفتار سان ڊوڙندو آهي هتي اسان واضح طور تي ڏسون ٿا ته شين جو مخصوص رويو محفوظ آهي، جيتوڻيڪ اسان ٽنهي جانورن کي ’جنرل ڪرڻ‘ کان پوءِ انهن کي ٻلي ڏانهن منتقل ڪيو آهي . پوليمورفيزم جي ڪري، جاوا کي چڱي طرح ياد آهي ته اهي صرف ٽي ٻليون نه آهن. اهي هڪ شينهن، هڪ شير ۽ هڪ چيتا آهن، جيڪي هر هڪ مختلف انداز سان هلندا آهن. هي پوليمورفيزم جي بنيادي فائدي کي بيان ڪري ٿو: لچڪدار. جڏهن اسان کي ضرورت آهي ته ڪيترن ئي قسمن جي گڏيل ڪارڪردگيءَ کي لاڳو ڪريون، ته پوءِ شعر، ٽائگر ۽ چيتا رڳو ’ڪيٽ‘ بڻجي ويندا آهن. سڀئي جانور مختلف آهن، پر ڪجهه حالتن ۾ هڪ ٻلي هڪ ٻلي آهي، قطع نظر ان جي ذات جي :) هتي توهان لاء ڪجهه وڊيو تصديق آهي.
جڏهن هي 'عام ڪرڻ' ناپسنديده آهي ۽ ان جي بدران اسان کي هر ذات کي مختلف طريقي سان عمل ڪرڻ جي ضرورت آهي، هر قسم پنهنجي ڪم ڪري ٿو. پوليمورفيزم جي مهرباني، توهان طبقن جي وسيع رينج لاء هڪ واحد انٽرفيس (طريقن جو سيٽ) ٺاهي سگهو ٿا. اهو پروگرامن کي گهٽ پيچيده بڻائي ٿو. ايستائين جو اسان پروگرام کي 40 قسم جي ٻلين کي سپورٽ ڪرڻ لاءِ وڌايو، اسان وٽ اڃا به آسان انٽرفيس هوندو: هڪ واحد رن () طريقو سڀني 40 ٻلين لاءِ.
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION