CodeGym /جاوا بلاگ /Random-SD /جاوا ڊولپر پوزيشن لاءِ نوڪري جي انٽرويو کان سوالن ۽ جوابن...
John Squirrels
سطح
San Francisco

جاوا ڊولپر پوزيشن لاءِ نوڪري جي انٽرويو کان سوالن ۽ جوابن جي ڳولا. حصو 4

گروپ ۾ شايع ٿيل
سڀني کي سلام! اڄ مان جاوا ڊولپر انٽرويو سوالن جو جائزو وٺي رهيو آهيان. جاوا ڊولپر پوزيشن لاءِ نوڪري جي انٽرويو کان سوالن ۽ جوابن جي ڳولا.  حصو 4 - 1

29. ڇا ريٽرنٽر ۾ استعمال ٿي سگھي ٿو؟

ها، پر صرف واپسي جي لفظ جي ساڄي پاسي جي قيمت کان سواء . توهان واپسي استعمال ڪري سگهو ٿا؛ هڪ مددگار بيان جي طور تي هڪ تعمير ڪندڙ ۾ فوري طور تي وڌيڪ ڪوڊ جي عمل کي ختم ڪرڻ (مداخلت) ۽ اعتراض جي شروعات کي ختم ڪرڻ لاء. مثال طور، فرض ڪريو اسان وٽ هڪ ٻلي ڪلاس آهي، ۽ جيڪڏهن هڪ ٻلي بي گهر آهي ( isHomeless = true , ته پوءِ اسان چاهيون ٿا شروعات ختم ڪرڻ ۽ ٻين شعبن ۾ نه ڀرڻ (آخرڪار، اهي اسان لاءِ اڻڄاڻ آهن، ڇو ته ٻلي بي گهر آهي) :
public Cat(int age, String name, boolean isHomeless) {
   if (isHomeless){
       this.isHomeless = isHomeless;
       return;
   }
   this.isHomeless = isHomeless;
   this.age = age;
   this.name = name;
}
پر جيڪڏهن اسان ڪنڪريٽ ويلز جي باري ۾ ڳالهائي رهيا آهيون، ته پوءِ واپسي لفظ هڪ خاص قدر واپس نه ٿو ڪري سگهي ڇاڪاڻ ته:
  • جڏهن توهان هڪ تعمير ڪندڙ جو اعلان ڪيو ٿا، توهان وٽ واپسي جي قسم وانگر ڪجهه به نه هوندو؛
  • ضابطي جي طور تي، تعمير ڪندڙ کي فوري طور تي سڏيو ويندو آهي.
  • constructor هڪ طريقو نه آهي: اهو هڪ الڳ ميکانيزم آهي جنهن جو واحد مقصد مثالي متغيرن کي شروع ڪرڻ آهي، يعني، اسان هڪ اعتراض ٺاهڻ لاء نئون آپريٽر استعمال ڪري رهيا آهيون.
جاوا ڊولپر پوزيشن لاءِ نوڪري جي انٽرويو کان سوالن ۽ جوابن جي ڳولا.  حصو 4 - 2

30. ڇا ڪا استثنيٰ ٺاھيندڙ کان اڇلائي سگھجي ٿي؟

تعمير ڪندڙ استثناء سان ڪم ڪن ٿا ساڳئي طريقي سان جيڪي طريقا ڪندا آهن. طريقا اسان کي اجازت ڏين ٿا استثنا اُڇلائي اڇلائي <ExceptionType> طريقي جي هيڊر ۾. ۽ تعمير ڪندڙ اسان کي ائين ڪرڻ جي اجازت ڏين ٿا. جڏهن اسان وراثت ۾ آهيون ۽ هڪ ٻار طبقي جي تعمير ڪندڙ جي وضاحت ڪري رهيا آهيون، اسان استثناء جي قسم کي وسيع ڪري سگهون ٿا - مثال طور، IOException -> استثنا (پر ان جي برعڪس). اچو ته ڪيٽ ڪلاس جي تعمير ڪندڙ کي استعمال ڪريون مثال طور ٺاھيندڙ ھڪڙي استثنا اڇلائي. اچو ته چئو ته جڏهن اسان هڪ اعتراض ٺاهيندا آهيون، اسان ڪنسول مان نالو ۽ عمر داخل ڪرڻ چاهيون ٿا:
public Cat() throws IOException {
   BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
   this.name = reader.readLine();
   this.age = Integer.parseInt(reader.readLine());
}
جيئن ته reader.readLine() هڪ IOException اڇلائي ٿو، اسان ان کي هيڊر ۾ ممڪن طور تي اڇلائي استثنا طور لکون ٿا.

31. ڪلاس هيڊر جا عنصر ڪهڙا آهن؟ هڪ مثال لکو

عناصر کي بيان ڪرڻ لاءِ جيڪي ڪلاس هيڊر ٺاهيندا آهن، اچو ته هڪ ننڍڙي اسڪيما تي نظر وجهون:
  • لازمي عناصر بریکٹ ۾ ظاهر ٿيندا آهن <>
  • اختياري عناصر ۾ آهن {}
{access modifier}{static}{final}{abstract}<class name>{parent class جو وارث{interfaces جو نفاذ} سو، اسان وٽ ڇا آهي: {access modifier} — صرف عوامي ۽ ڊفالٽ رسائي موڊيفائر موجود آهن ڪلاس. {static} - جامد تبديل ڪندڙ اشارو ڪري ٿو ته هي طبقو جامد آهي؛ اهو صرف اندروني طبقن تي لاڳو ٿئي ٿو (ٻين طبقن اندر طبقن). {final} — هي حتمي ترميم ڪندڙ آهي، يقيناً، جيڪو ڪلاس کي ناقابل ورثو بڻائي ٿو (هڪ آئوٽ آف دي باڪس جو مثال آهي String ). {abstract} - خلاصو تبديل ڪندڙ، جيڪو ظاهر ڪري ٿو ته ڪلاس ۾ شايد غير لاڳو ٿيل طريقا آهن. هي ترميم ڪندڙ فائنل موڊيفائر سان ٽڪراءُ ڪري ٿو. ڪلاس هيڊر صرف انهن مان هڪ ٿي سگهي ٿو ڇو ته تجريدي تبديليءَ جو مطلب آهي ته ڪلاس ورثي ۾ ملندو ۽ ان جا خلاصا عنصر لاڳو ڪيا ويندا. پر حتمي ظاهر ڪري ٿو ته هي ڪلاس جو آخري نسخو آهي، ۽ اهو وارث نه ٿو ٿي سگهي. حقيقت ۾، هڪ ئي وقت ۾ ٻنهي ترميمن کي استعمال ڪرڻ بيوقوف هوندو. مرتب ڪندڙ اسان کي اهو ڪرڻ نه ڏيندو. <class> ھڪ لازمي لفظ آھي جيڪو ظاھر ڪري ٿو ڪلاس ڊڪليئريشن. <class name> ھڪڙو سادو ڪلاس جو نالو آھي جيڪو ھڪ مخصوص جاوا ڪلاس جو سڃاڻپ ڪندڙ بڻجي ويندو آھي. مڪمل طور تي قابل ڪلاس جو نالو قابليت واري پيڪيج جو نالو پلس '.' تي مشتمل آهي. گڏوگڏ سادي طبقي جو نالو. {وراثت جو والدين طبقي} هڪ اشارو آهي والدين طبقي جو (جيڪڏهن ڪو به هجي) extensions لفظ استعمال ڪندي. مثال طور، ... وڌايو ParentClass . {انٽرفيس جو نفاذ} — انٽرفيس جي هڪ فهرست جنهن کي هي طبقو لاڳو ڪري ٿو (جيڪڏهن ڪو به هجي)، انفارميشن ڪي ورڊ استعمال ڪندي. مثال طور: ... فرسٽ انٽرفيس، سيڪنڊ انٽرفيس کي لاڳو ڪري ٿو ... مثال طور، شعر ڪلاس جي ڪلاس هيڊنگ تي غور ڪريو، جيڪو Cat ورثي ۾ ملي ٿو ۽ WildAnimal انٽرفيس کي لاڳو ڪري ٿو:
public final class Lion extends Cat implements WildAnimal
جاوا ڊولپر پوزيشن لاءِ نوڪري جي انٽرويو کان سوالن ۽ جوابن جي ڳولا.  حصو 4 - 3

32. هڪ طريقو هيڊر جا عنصر ڇا آهن؟ هڪ مثال لکو

جڏهن انهن عناصر تي غور ڪيو جيڪو هڪ طريقو هيڊر ٺاهيو، اچو ته ٻيهر هڪ ننڍڙي اسڪيما تي غور ڪريو:
  • لازمي عناصر بریکٹ ۾ ظاهر ٿيندا آهن <>
  • اختياري عناصر ۾ آهن {}
{رسائي موڊيفائر{static}abstract}final}synchronized} {ناڻي} <return value><method name> <(>{method parameters}<}>{throw exceptions} {access modifier} — سڀ رسائي موڊيفائر آھن ميٿڊ لاءِ موجود آهي — عوامي , محفوظ , ڊفالٽ , پرائيويٽ . {static}جامد موڊيفائر، جيڪو ظاهر ڪري ٿو ته طريقو جامد آهي ۽ ان ڪري ڪلاس سان جڙيل آهي، نه ڪنهن شئي سان. {abstract}abstract modifier، جيڪو ظاهر ڪري ٿو ته ميٿڊ جو ڪو به عمل نه آهي (جسم). صحيح ڪم ڪرڻ لاءِ، ڪلاس جيڪو طريقو بيان ڪري ٿو، ان وٽ پڻ خلاصو موڊيفائر هجڻ ضروري آهي . جيئن ڪلاس هيڊر ۾، هي موڊيفائر فائنل موڊيفائر سان تڪرار ڪري ٿو، ۽ جامد موڊيفائر سان به تڪرار ڪري ٿو، ڇاڪاڻ ته هڪ تجريدي طريقي جو مطلب آهي طريقه ڪار کي نزول ۾ ختم ڪرڻ، ۽ جامد طريقن کي اوور رائڊ نٿو ڪري سگهجي. { finale} - حتمي ترميم ڪندڙ، جيڪو ظاهر ڪري ٿو ته هي طريقو اوور رائڊ نٿو ٿي سگهي. مختلف موضوعن کان ان تائين هڪ ئي وقت تائين رسائي. جيڪڏهن طريقو جامد نه آهي، پوء اهو اعتراض جي هن ميٽيڪس لاء بند آهي. جيڪڏهن طريقو جامد آهي، پوء اهو موجوده طبقي جي ميوٽڪس لاء بند آهي. {native} - اصلي تبديليءَ جو اشارو ڏئي ٿو ته طريقو ڪنهن ٻئي پروگرامنگ ٻولي ۾ لکيل آهي. <return type> - قدر جو قسم جيڪو طريقو ضرور موٽڻ گھرجي. جيڪڏهن طريقو ڪجھ به واپس نه ٿو ڏئي، پوء باطل . <طريقو جو نالو> - طريقي جي نالي جو نالو، يعني سسٽم ۾ ان جي سڃاڻپ ڪندڙ. {طريقي پيرا ميٽرز} - اهي پيرا ميٽرس جيڪي طريقا قبول ڪن ٿا: اهي ضروري آهن ان جي ڪارڪردگي کي لاڳو ڪرڻ لاءِ. {thrown exceptions}اڇلائي ٿو <ExceptionType> — چيڪ ڪيل استثنان جي هڪ فهرست جنهن کي هي طريقو اڇلائي سگهي ٿو. مان هيٺ ڏنل پيش ڪندس هڪ طريقي جي هيڊر جي مثال طور:
public static void main(String[] args) throws IOException

33. چائلڊ ڪلاس ۾ ڊفالٽ ڪنسٽرڪٽر ٺاھيو جيڪڏھن ھڪڙو اڳ ۾ ئي بيس ڪلاس ۾ بيان ٿيل نه آھي (پر ھڪڙو مختلف ٺاھيندڙ بيان ڪيل آھي)

مون کي پڪ ناهي ته آئون سوال کي مڪمل طور تي سمجهان ٿو، پر شايد ان جو مطلب اهو آهي ته اسان وٽ والدين طبقي ۾ هن وانگر ڪجهه تعمير ڪندڙ آهن:
public Cat(int age, String name) {
   this.age = age;
   this.name = name;
}
انهي صورت ۾، والدين طبقي ۾، اسان کي يقيني طور تي هڪ تعمير ڪندڙ جي وضاحت ڪرڻ جي ضرورت آهي جيڪا والدين جي شروعات ڪندو (يعني والدين تعمير ڪندڙ کي سڏيندو):
public class Lion extends Cat {

   public Lion(int age, String name) {
       super(age, name);
   }
}
جاوا ڊولپر پوزيشن لاءِ نوڪري جي انٽرويو کان سوالن ۽ جوابن جي ڳولا.  حصو 4 - 4

34. هي لفظ ڪڏهن استعمال ٿيندو آهي؟

جاوا ۾، هي ٻه مختلف معنائون آهن. 1. اهو موجوده اعتراض جو حوالو آهي، مثال طور this.age = 9 . اھو آھي، اھو اھو اعتراض ڏانھن اشارو ڪري ٿو جنھن ۾ اھو استعمال ڪيو ويو آھي ۽ جنھن کي ھن سان ڪوڊ اشارو ڪري ٿو. بنيادي مقصد ڪوڊ پڙهڻ جي صلاحيت کي بهتر بڻائڻ ۽ ابهام کان بچڻ آهي. مثال طور، جيڪڏهن هڪ مثال فيلڊ ۽ هڪ طريقو دليل ساڳيو نالو آهي:
public void setName(String name) {
   this.name = name;
}
اهو آهي، this.name اعتراض جي فيلڊ آهي، جڏهن ته نالو طريقو پيٽرولر آهي. ھي حوالو جامد طريقن ۾ استعمال نٿو ڪري سگھجي . 2. Constructor ۾، ھن کي ھڪڙي طريقي وانگر سڏي سگھجي ٿو، مثال طور ھي (value) . انهي حالت ۾، اهو ساڳيو طبقي جي ڪنهن ٻئي تعمير ڪندڙ کي سڏيندو. بنيادي طور تي، توهان هڪ اعتراض ٺاهڻ جي عمل دوران ٻه تعمير ڪندڙن کي سڏي سگهو ٿا:
public Cat(int age, String name) {
   this(name);
   this.age = age;
}

public Cat(String name) {
   this.name = name;
}
جڏهن هڪ ٻلي اعتراض ٺاهڻ لاء پهرين تعمير ڪندڙ کي سڏيندو ، ٻنهي مثالن جي فيلڊ کي ڪاميابي سان شروع ڪيو ويندو. هتي ڪجهه nuances آهن:
  1. هي () صرف هڪ تعمير ڪندڙ ۾ ڪم ڪري ٿو.
  2. هڪ ٻئي تعمير ڪندڙ جو حوالو لازمي طور تي تعمير ڪندڙ بلاڪ (جسم) جي پهرين قطار ۾ هجڻ گهرجي. هن جو مطلب آهي ته هڪ تعمير ڪندڙ پنهنجي طبقي جي هڪ کان وڌيڪ (ٻين) تعمير ڪندڙ کي سڏي نٿو سگهي.
جاوا ڊولپر پوزيشن لاءِ نوڪري جي انٽرويو کان سوالن ۽ جوابن جي ڳولا.  حصو 4 - 5

35. شروعات ڪندڙ ڇا آهي؟

جيتري قدر مان سمجهان ٿو، اهو سوال عام ۽ جامد شروعاتي بلاڪ بابت آهي. اچو ته پهرين ياد رکون ته شروعات ڇا آهي. شروعات آهي تخليق، چالو ڪرڻ، تيار ڪرڻ، ۽ فيلڊ جي تعريف. استعمال لاء تيار ٿيڻ لاء هڪ پروگرام يا جزو تيار ڪرڻ. توهان کي ياد هوندو ته جڏهن توهان هڪ اعتراض ٺاهيندا آهيو، هڪ طبقي متغير کي فوري طور تي شروع ڪري سگهجي ٿو جڏهن اهو اعلان ڪيو ويو آهي:
class Cat {
   private int age = 9;
   private String name = "Tom";
يا تعمير ڪندڙ جي ذريعي حقيقت کان پوء مقرر ڪريو:
class Cat {
   private int age;
   private String name;

   public Cat(int age, String name) {
       this.age = age;
       this.name = name;
   }
پر ھڪڙو ٻيو طريقو آھي: توھان ھڪڙي شروعاتي بلاڪ کي استعمال ڪندي ھڪڙو مثال متغير مقرر ڪري سگھو ٿا، جيڪو ھڪڙي ڪلاس جي اندر گھمڻ واري ڪنگڻ جي شڪل وٺي ٿو {} ، بغير نالي جي (جهڙوڪ ھڪڙو نالو طريقو يا ٺاھيندڙ):
class Cat {
   private int age;
   private String name;

   {
       age = 10;
       name = "Tom";
   }
هڪ شروعاتي بلاڪ ڪوڊ جو هڪ ٽڪرو آهي جيڪو لوڊ ڪيو ويندو آهي جڏهن هڪ اعتراض ٺاهيو ويندو آهي. اهڙا بلاڪ عام طور تي ڪجهه پيچيده حسابن کي انجام ڏيڻ لاءِ استعمال ڪيا ويندا آهن جيڪي گهربل هوندا آهن جڏهن هڪ طبقي کي لوڊ ڪيو ويندو آهي. انهن حسابن جا نتيجا متغيرن جي قدرن جي طور تي مقرر ڪري سگھجن ٿا. عام شروعاتي بلاڪ کان علاوه، جامد آهن. اهي ساڳيا نظر اچن ٿا پر جامد لفظ آهي افتتاحي گھمڻ واري ڪنگڻ جي اڳيان:
class Cat {
   private static int age;
   private static String name;

   static{
       age = 10;
       name = "Tom";
   }
هي بلاڪ پوئين هڪ وانگر آهي. پر جيڪڏهن عام هڪ تي عمل ڪيو ويندو آهي جڏهن هر شئي جي شروعات ڪئي ويندي آهي، پوءِ جامد صرف هڪ ڀيرو عمل ڪيو ويندو آهي، جڏهن ڪلاس لوڊ ڪيو ويندو آهي. ضابطي جي طور تي، ڪجهه پيچيده حسابن کي جامد بلاڪ ۾ ڪيو ويندو آهي، جامد طبقي متغير کي شروع ڪرڻ لاء استعمال ڪيو ويندو آهي. ساڳئي پابنديون جامد بلاڪ تي لاڳو ٿين ٿيون جيڪي جامد طريقن تي لاڳو ٿين ٿيون: توهان غير جامد ڊيٽا استعمال نٿا ڪري سگهو، جهڙوڪ موجوده اعتراض ( هن ) جو حوالو جامد بلاڪ ۾. جاوا ڊولپر پوزيشن لاءِ نوڪري جي انٽرويو کان سوالن ۽ جوابن جي ڳولا.  حصو 4 - 6ھاڻي اسان ڪلاس جي شروعات جي ترتيب کي ڏسي سگھون ٿا (گڏھن ان جي والدين طبقي سان گڏ) بهتر سمجھڻ لاءِ جڏھن اصل ۾ شروعاتي بلاڪن کي سڏيو وڃي ٿو.

36. ڏنو ويو هڪ عوامي چائلڊ ڪلاس جيڪو والدين کي وڌايو، اعتراض جي شروعاتي ترتيب لکو

چائلڊ ڪلاس کي لوڊ ڪرڻ وقت ، شروعاتي ترتيب هن ريت هوندي:
  1. والدين طبقي جا جامد ڪلاس جا شعبا.
  2. والدين طبقي جو جامد شروعاتي بلاڪ .
  3. چائلڊ ڪلاس جا جامد شعبا .
  4. چائلڊ ڪلاس جو جامد شروعاتي بلاڪ .
  5. والدين طبقي جا غير جامد شعبا .
  6. غير جامد شروعاتي بلاڪ والدين طبقي جو.
  7. والدين طبقي جي تعمير ڪندڙ.
  8. غير جامد شعبن جو ٻار طبقو.
  9. غير جامد شروعاتي بلاڪ Сchild طبقي جي.
  10. ٻاراڻي طبقي جو ٺاھيندڙ .
جاوا ڊولپر پوزيشن لاءِ نوڪري جي انٽرويو کان سوالن ۽ جوابن جي ڳولا.  حصو 4 - 7

37. توهان کي خبر آهي ته طبقن جي وچ ۾ ڪهڙي قسم جا لاڳاپا آهن؟

جاوا ۾ ٻه قسم جا متغير آهن: ابتدائي قسمون ۽ مڪمل شين جا حوالا.
  • IS-A تعلقات
OOP جو IS-A اصول طبقاتي ورثي يا انٽرفيس جي نفاذ تي ٻڌل آهي. مثال طور، جيڪڏهن شعر جو طبقو ٻلي جو وارث آهي ، ته پوءِ اسان چئون ٿا ته شعر هڪ ٻلي آهي :
Lion IS-A Cat
(پر هر ٻلي هڪ شعر ناهي ) ساڳي صورتحال انٽرفيس سان موجود آهي. جيڪڏهن شعر طبقو WildAnimal انٽرفيس کي لاڳو ڪري ٿو، ته پوءِ اهي رشتي ۾ به موجود آهن:
Lion IS-A WildAnimal
  • HAS- هڪ تعلق
هن قسم جو تعلق اهو آهي جتي هڪ طبقو ٻين طبقن کي استعمال ڪري ٿو، جنهن کي "انجمن" پڻ سڏيو ويندو آهي. هڪ انجمن هڪ طبقو آهي جيڪو هڪ ٻئي طبقي ڏانهن اشارو ڪري ٿو (يا هڪ ٻئي ڏانهن باهمي حوالن). مثال طور، ڪار ڪلاس مسافر طبقي جو حوالو ڏئي سگھي ٿو، جيڪو ھيٺ ڏنل تعلق قائم ڪندو:
Car HAS-A Passenger
۽ ان جي برعڪس: جيڪڏهن مسافر وٽ ڪار جو حوالو آهي ، ته پوءِ اهو تعلق هوندو:
Passenger HAS-A Car

38. ڪھڙي صحبتي شئي جا رشتا توھان ڄاڻو ٿا؟

مجموعي ۽ ٺهڪندڙ انجمن جي خاص ڪيسن کان سواء ٻيو ڪجهه ناهي. مجموعي هڪ تعلق آهي جتي هڪ شئي ٻئي جو حصو آهي. مثال طور، هڪ مسافر ڪار ۾ واقع ٿي سگهي ٿو. وڌيڪ ڇا آهي، ٿي سگهي ٿو ته ڪيترائي مسافر هجن يا ڪو به نه هجي (۽ جيڪڏهن اسان ٽسلا بابت ڳالهائي رهيا آهيون، اتي شايد ڪو ڊرائيور نه هجي). مثال طور:
public class Car {
   private List passengers = new ArrayList<>();

 void setPassenger(Passenger passenger) {
     passengers.add(passenger);
 }

   void move() {
       for (Passenger passenger : passengers) {
           System.out.println("Transporting passenger - " + passenger.toString());
       }
       passengers.clear();
   }
}
ٻين لفظن ۾، مسافرن جو تعداد (ڪنهن به) اسان لاء اهم ناهي: ڪار ڪلاس جي ڪارڪردگي هن تي منحصر ناهي. Aggregation اهو پڻ ظاهر ڪري ٿو ته جڏهن ٻيو اعتراض هڪ اعتراض استعمال ڪري ٿو، پهرين اعتراض ٻين شين جي طرفان استعمال ڪري سگهجي ٿي. مثال طور، ساڳيو شاگرد ٻنهي ۾ ٿي سگهي ٿو بنان واري ڪلب ۽ هڪ راڪ بينڊ ۽ گڏوگڏ هڪ اسپيني ڪلاس ۾ شرڪت ڪري. جئين توهان تصور ڪري سگهو ٿا، مجموعي طبقن جي وچ ۾ هڪ لوزر ساٿي تعلق آهي. ڪمپوزيشن هڪ وڌيڪ سخت تعلق آهي جتي هڪ شئي نه رڳو ٻي شئي جو حصو آهي، پر هڪ شئي جو ڪم ٻئي تي تمام گهڻو منحصر هوندو آهي. مثال طور، هڪ ڪار هڪ انجڻ آهي. هڪ انجڻ ڪار کان سواءِ موجود ٿي سگهي ٿي، پر اها ڪار جي ٻاهران بيڪار آهي. ۽ هڪ ڪار انجڻ کان سواء ڪم نه ٿا ڪري سگهو:
public class Car {
   private Engine engine;

   public Car(Engine engine) {
       this.engine = engine;
   }

   void startMoving() {
       engine.start();
           ...
   }
ڪمپوزيشن جو مطلب اهو به آهي ته جڏهن ڪا ٻي شئي ڪا شئي استعمال ڪري ٿي، ته پهرين شئي جو تعلق ڪنهن ٻئي شئي سان نه ٿو ٿي سگهي. اسان جي مثال ڏانهن واپس وڃو، هڪ انجڻ صرف هڪ ڪار سان تعلق رکي ٿو، هڪ ئي وقت ۾ ٻه يا وڌيڪ نه. مان سمجهان ٿو ته اڄ جي لاءِ ڪافي آهي، تنهنڪري اسان هتي روڪينداسين.
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION