CodeGym /جاوا بلاگ /Random-SD /جاوا ۾ Encapsulation
John Squirrels
سطح
San Francisco

جاوا ۾ Encapsulation

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

هاڻي اچو ته معلومات لڪائڻ بابت ڳالهايون

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

   public void gas() {

       /* Some complicated things happen inside a car.
       As a result, it moves forward */
   }

   public void brake() {

       /* Some complicated things happen inside a car.
       As a result, it slows down */
   }

   public static void main(String[] args) {

       Vehicle vehicle = new Vehicle();

       // How everything looks to the user

       // Press one pedal, the car moves
       vehicle.gas();

       // Press the other pedal, the car brakes
       vehicle.brake();
   }
}
اهو ڪيئن لاڳو ٿئي ٿو جاوا پروگرام ۾ لڪيل آهي. جيئن حقيقي زندگي ۾: استعمال ڪندڙ کي هڪ انٽرفيس سان مهيا ڪيل آهي (طريقن). هڪ پروگرام ۾، جيڪڏهن توهان کي عمل ڪرڻ لاء ڪار جي ضرورت آهي، توهان صرف گهربل طريقي سان سڏين ٿا. انهن طريقن جي اندر ڇا ٿئي ٿو ضرورت کان وڌيڪ آهي. ڇا معاملو آهي ته هر شي ڪم ڪري ٿي جيئن ان کي گهرجي. هتي اسان عملدرآمد لڪائڻ بابت ڳالهايو آهي. جاوا پڻ ڊيٽا کي لڪائي ڇڏيو آهي. اسان ان بابت سبق ۾ حاصل ڪندڙن ۽ سيٽرن بابت لکيو، پر هڪ ياد ڏياريندڙ نقصان نه ٿيندو. مثال طور، اسان وٽ هڪ ٻلي ڪلاس آهي:
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;

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

Encapsulation اسان کي ڪيترائي اهم فائدا ڏئي ٿو:

  1. صحيح اعتراض جي حالت جي نگراني. اسان مٿي ڏنل مثالن جا مثال ڏنا آهن: سيٽر ۽ پرائيويٽ موڊيفائر جي مهرباني، اسان پنهنجي پروگرام کي ڪيٽس جي خلاف 0 جي وزن سان محفوظ ڪيو آهي.

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

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