JavaRush /جاوا بلاگ /Random-SD /جاوا ۾ Encapsulation اصول

جاوا ۾ Encapsulation اصول

گروپ ۾ شايع ٿيل
سلام! اڄ جو ليڪچر encapsulation لاء وقف ڪيو ويندو ۽ اسان ان کي فوري طور تي مثالن سان شروع ڪنداسين :) توهان جي سامهون هڪ واقف سوڊ مشين آهي. مون وٽ توهان لاءِ هڪ سوال آهي: اهو ڪيئن ڪم ڪندو آهي؟ تفصيل سان جواب ڏيڻ جي ڪوشش ڪريو: گلاس ڪٿان اچي ٿو، اندر جو گرمي پد ڪيئن برقرار رکي ٿو، برف ڪٿي ذخيرو ٿيل آهي، مشين ڪيئن سمجهي ٿي ته ڪهڙو شربت شامل ڪيو وڃي، وغيره. گهڻو ڪري، توهان وٽ انهن سوالن جا جواب نه آهن. خير، شايد هرڪو اهڙيون مشينون استعمال نه ڪندو آهي؛ اهي اڄڪلهه ايترو مشهور نه آهن. اچو ته هڪ ٻيو مثال ڏيڻ جي ڪوشش ڪريون. ڪجھ توهان کي خبر آهي ته توهان هر روز ڪيترائي ڀيرا استعمال ڪندا آهيو. ها، مون کي هڪ خيال آهي! Encapsulation اصول - 2 اسان کي ٻڌايو ته گوگل سرچ انجڻ ڪيئن ڪم ڪري ٿو . اهو توهان جي داخل ڪيل لفظن جي بنياد تي معلومات کي ڪيئن ڳولي ٿو؟ اهي نتيجا مٿين سطح تي ڇو آهن ۽ ٻيا نه؟ جيتوڻيڪ توهان هر روز گوگل استعمال ڪندا آهيو، شايد توهان کي خبر ناهي. پر اهو اهم ناهي. آخرڪار، توهان کي اهو ڄاڻڻ جي ضرورت ناهي. توهان بغير ڪنهن سوچ جي ڳولا انجڻ ۾ سوال داخل ڪري سگهو ٿا ته اهو ڪيئن ڪم ڪري ٿو. توهان هڪ وينڊنگ مشين مان سوڊ خريد ڪري سگهو ٿا بغير ڄاڻڻ جي اهو ڪيئن ڪم ڪري ٿو. توهان ڪار هلائي سگهو ٿا بغير اندروني ڪمبسشن انجڻ جي آپريشن ۾، ۽ فزڪس جي ڄاڻ کان سواءِ، اسڪول جي سطح تي به. اهو سڀ ڪجهه ممڪن آهي اعتراض جي بنياد تي پروگرامنگ جي بنيادي اصولن مان هڪ جي مهرباني - encapsulation . هن موضوع تي مختلف مضمونن کي پڙهڻ دوران، توهان شايد حقيقت ۾ آيا آهيو ته پروگرامنگ ۾ ٻه عام مفهوم آهن - encapsulation ۽ لڪائڻ . ۽ لفظ "encapsulation" جي مصنفن جو مطلب هڪ شيء يا ٻيو آهي (جيئن ته اهو ٿئي ٿو). اسان ٻنهي شرطن کي ٽوڙينداسين ته جيئن توهان کي مڪمل سمجھ هجي. پروگرامنگ ۾ لفظ " encapsulation " جو اصل مطلب آهي ڊيٽا جو ميلاپ ۽ هن ڊيٽا سان گڏ ڪم ڪرڻ جا طريقا هڪ پيڪيج ۾ ("ڪيپسول"). جاوا ۾، ڪلاس هڪ ڪئپسول پيڪيج طور ڪم ڪري ٿو . ھڪڙي طبقي ۾ ڊيٽا (ڪلاس فيلڊز) ۽ ھن ڊيٽا سان ڪم ڪرڻ جا طريقا شامل آھن. Encapsulation اصول - 3 اهو توهان لاءِ واضع لڳي ٿو، پر ٻين پروگرامنگ تصورن ۾ هر شي مختلف ڪم ڪري ٿي. مثال طور، فنڪشنل پروگرامنگ ۾، ڊيٽا کي سختي سان ان تي عملن کان الڳ ڪيو ويو آهي. او او پي (آبجڪٽ تي مبني پروگرامنگ) ۾، پروگرامن ۾ ڪيپسول ڪلاس شامل آهن، جيڪي ان سان گڏ ڪم ڪرڻ لاءِ ڊيٽا ۽ افعال ٻئي آهن. هاڻي اچو ته لڪائڻ جي باري ۾ ڳالهايون . اهو ڪيئن آهي ته اسان سڀني قسمن جي پيچيده ميکانيزم کي استعمال ڪندا آهيون بغير سمجهڻ جي اهي ڪيئن ڪم ڪن ٿا ۽ انهن جو ڪم ڪهڙي بنياد تي آهي؟ اهو سادو آهي: انهن جي ٺاهيندڙن هڪ سادي ۽ صارف دوست انٽرفيس مهيا ڪيو آهي. هڪ سوڊ مشين تي، انٽرفيس هڪ پينل تي بٽڻ آهي. ھڪڙي بٽڻ کي دٻائڻ سان، توھان گلاس جو حجم چونڊيو. ٻئي کي دٻائڻ سان، توهان شربت چونڊيو. ٽيون برف شامل ڪرڻ جو ذميوار آهي. ۽ اهو سڀ ڪجهه توهان کي ڪرڻو آهي. اهو مسئلو ناهي ته مشين اندر ڪيئن ٺهيل آهي. بنيادي شيء اها آهي ته اهو اهڙي طرح ٺهيل آهي ته سوڊ حاصل ڪرڻ لاء، صارف کي ٽي بٽڻ دٻائڻ جي ضرورت آهي . اهو ساڳيو ڪار سان آهي. هن جي اندر ڇا ٿي رهيو آهي ان سان ڪو فرق نٿو پوي. اصلي شيء اها آهي ته جڏهن توهان ساڄي پيڊل کي دٻايو، ڪار اڳتي وڌندي آهي، ۽ جڏهن توهان کاٻي پيڊل کي دٻايو، اهو سست ٿي ويندو آهي . اهو ئي لڪائڻ جو جوهر آهي. پروگرام جا سڀئي "اندر" صارف کان لڪيل آهن. هن لاء، هي معلومات غير ضروري ۽ غير ضروري آهي. صارف کي آخري نتيجو جي ضرورت آهي، نه اندروني عمل. اچو ته هڪ مثال طور ڪلاس کي ڏسو Auto:
public class Auto {

   public void gas() {

       /*some complicated things are happening inside the car
       as a result of which it goes forward*/
   }

   public void brake() {

       /*some complicated things are happening inside the car
       as a result of which it slows down*/
   }

   public static void main(String[] args) {

       Auto auto = new Auto();

       // How everything looks to the user

       //pressed one pedal - went
       auto.gas();

       //pressed another pedal - braked
       auto.brake();
   }
}
اھو اھو آھي جيڪو عملدرآمد لڪائي ھڪڙي جاوا پروگرام ۾ نظر اچي ٿو. هر شي حقيقي زندگي وانگر آهي: استعمال ڪندڙ کي هڪ انٽرفيس (طريقن) سان مهيا ڪيل آهي. جيڪڏهن هن کي پروگرام ۾ ڪار جي ضرورت آهي هڪ عمل انجام ڏيڻ لاء، هن کي صرف گهربل طريقي سان سڏڻ جي ضرورت آهي. ۽ انهن طريقن جي اندر ڇا ٿئي ٿو غير ضروري معلومات آهي، بنيادي شيء اها آهي ته هر شي ڪم ڪري ٿي جيئن ان کي گهرجي. هتي اسان عملدرآمد کي لڪائڻ بابت ڳالهايو . ان کان علاوه، جاوا پڻ ڊيٽا کي لڪائڻ لاء آهي . اسان ان بابت ليڪچر ۾ گيترز ۽ سيٽرز بابت لکيو ، پر اهو توهان کي ياد ڏيارڻ ۾ ڏک نه ٿيندو. مثال طور، اسان وٽ ھڪڙو ڪلاس آھي Cat:
public class Cat {

   public String name;
   public int age;
   public int weight;

   public Cat(String name, int age, int weight) {
       this.name = name;
       this.age = age;
       this.weight = weight;
   }

   public Cat() {
   }

   public void sayMeow() {
       System.out.println("Meow!");
   }


}
شايد توهان کي گذريل ليڪچر کان ياد هجي ته هن طبقي جو مسئلو ڇا آهي؟ جيڪڏهن نه، اچو ته ياد رکون. مسئلو اهو آهي ته هن جي ڊيٽا (فيلڊز) هر ڪنهن لاءِ کليل آهن، ۽ ٻيو پروگرامر آساني سان پروگرام ۾ هڪ بي نام ٻلي ٺاهي سگهي ٿو جنهن جو وزن 0 ۽ عمر -1000 سال آهي:
public static void main(String[] args) {

   Cat cat = new Cat();
   cat.name = "";
   cat.age = -1000;
   cat.weight = 0;

}
اهڙي صورتحال ۾، توهان ويجهي نگراني ڪري سگهو ٿا ته ڇا توهان جي ساٿين مان هڪ غلط حالت سان شيون ٺاهي رهيو آهي، پر اهو بهتر ٿيندو ته اهڙي "غلط شيون" پيدا ڪرڻ جي امڪان کي خارج ڪيو وڃي. Encapsulation اصول - 4 اهي اسان کي ڊيٽا لڪائڻ ۾ مدد ڪن ٿا:
  1. رسائي موڊيفائرز ( نجي ، محفوظ ، پيڪيج ڊفالٽ
  2. حاصل ڪندڙ ۽ مقرر ڪندڙ.
اتي اسان ڪري سگهون ٿا، مثال طور، چيڪ ڪريو ته ڇا ڪو ماڻهو ٻلي کي منفي نمبر تفويض ڪرڻ جي ڪوشش ڪري رهيو آهي ان جي عمر جي طور تي. جيئن اسان اڳ ۾ چيو آهي، مختلف مضمونن جي ليکڪن جي encapsulation تي مطلب يا ته encapsulation (ڊيٽا ۽ طريقن کي گڏ ڪرڻ)، يا لڪائڻ، يا ٻئي. جاوا وٽ ٻئي ميکانيزم آهن (اهو ضروري ناهي ته اهو معاملو ٻين OOP ٻولين ۾ هجي)، تنهن ڪري آخري اختيار سڀ کان وڌيڪ صحيح آهي. encapsulation استعمال ڪندي اسان کي ڪيترائي اهم فائدا ڏئي ٿو:
  1. اعتراض جي صحيح حالت جي نگراني. مٿي ڏنل مثالن جا هئا: سيٽٽر ۽ پرائيويٽ موڊيفائر جي مهرباني، اسان اسان جي پروگرام کي ٻلين کان وزن 0 سان محفوظ ڪيو.

  2. انٽرفيس جي ڪري صارف دوستي. اسان صرف طريقا ڇڏي ڏيون ٿا ”ٻاهر“ استعمال ڪندڙ جي رسائي لاءِ. هن کي صرف ڪرڻ جي ضرورت آهي انهن کي ڪال ڪرڻ لاءِ نتيجو حاصل ڪرڻ لاءِ ، ۽ هن کي ضرورت ناهي ته انهن جي ڪم جي تفصيل ۾ تفصيل سان.

  3. ڪوڊ ۾ تبديليون صارفين کي متاثر نه ڪندا آھن. اسان سڀني طريقن جي اندر تبديليون ڪندا آهيون. اهو صارف تي اثر انداز نه ٿيندو: هن لکيو auto.gas() ڪار جي گيس لاءِ، تنهنڪري هو ان کي لکندو. ۽ حقيقت اها آهي ته اسان گيس () طريقي جي عمل ۾ ڪجهه تبديل ڪيو آهي، هن کي پوشيده رهندو: هو، اڳ وانگر، صرف گهربل نتيجو حاصل ڪندو.
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION