JavaRush /جاوا بلاگ /Random-SD /پوليمورفيزم استعمال ڪرڻ جي مشق

پوليمورفيزم استعمال ڪرڻ جي مشق

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

   public void run() {
       System.out.println("Бег!");
   }
}
ھاڻي اچو ته ٽي طبقا ٺاھيون جن مان ورثي ۾ مليا آھن Cat: Lion, Tigerand Cheetah, denoting lion , tiger and cheetah .
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