JavaRush /جاوا بلاگ /Random-SD /JAVA Object Oriented Programming Concepts
shabnahm
سطح

JAVA Object Oriented Programming Concepts

گروپ ۾ شايع ٿيل
JAVA اعتراض تي مبني پروگرامنگ جي تصورن تي ٻڌل آهي، جيڪا توهان کي ڪنهن به مسئلي کي حقيقي انداز ۾ حل ڪرڻ لاءِ تجريد جي اعليٰ سطح تي وڃڻ جي اجازت ڏئي ٿي. اعتراض تي مبني نقطه نظر هڪ مسئلي جي حل کي حقيقي دنيا جي شين جي لحاظ کان تصور ڪري ٿو جيڪي ايپليڪيشن ۾ ٻيهر استعمال ڪرڻ آسان آهن. مثال طور، Chair(ڪرسي)، Fan(فين)، Dog(ڪتو)، Computer(ڪمپيوٽر) وغيره. JAVA ۾، هڪ ڪلاس هڪ ترتيب، ٽيمپليٽ، يا پروٽوٽائپ آهي جيڪو هڪ ڏنل قسم جي اعتراض جي عام رويي کي بيان ڪري ٿو. هڪ مثال هڪ طبقي جو هڪ الڳ عمل آهي، ۽ هڪ طبقي جي سڀني مثالن ۾ ساڳيون خاصيتون آهن، جيڪي طبقي جي تعريف ۾ بيان ڪيل آهن. مثال طور، توهان هڪ ڪلاس جي وضاحت ڪري سگهو ٿا جنهن جو نالو هائوس نالي ڪمرن جو تعداد هڪ خاصيت جي طور تي آهي ۽ ڪلاس جا مثال ٺاهي سگهو ٿا جهڙوڪ ٻه ڪمرا گهر، ٽي ڪمرا گهر وغيره. JAVA Object Oriented Programming Concepts - 1فائدا: ھيٺ ڏنل فهرست ڏنل آھن ڪجھ فائدن تي مبني سافٽ ويئر ڊولپمينٽ.
  • گھٽ ۾ گھٽ سافٽ ويئر سپورٽ جي قيمت، خاص طور تي حقيقت اها آهي ته اهو ماڊل طور تي ڪيو ويندو آهي.
  • بهتر ڪوڊ ٻيهر استعمال ڪندي خاصيتن جهڙوڪ وراثت، نتيجي ۾ تيز سافٽ ويئر ڊولپمينٽ.
  • وڌايو ڪوڊ قابل اعتماد ۽ لچڪدار.
  • حقيقي دنيا جي تخليق جي ڪري سمجھڻ ۾ آسان.
  • اعتراض جي سطح تي بهتر خلاصو.
  • ھڪڙي ترقي واري مرحلي کان ٻئي ڏانھن منتقلي جي پيچيدگي کي گھٽائڻ.
او او پي جا چار مکيه خاصيتون آهن:
  • انڪپسوليشن
  • وراثت
  • پوليمورفيزم
  • خلاصو

انڪپسوليشن

Encapsulation هڪ اعتراض جي معاهدي جي طور تي ڪم ڪري ٿو جيڪو ان کي لڪائڻ گهرجي ۽ ان کي ٻين شين جي رسائي لاء ڇا کولڻ گهرجي. JAVA ۾، اسان privateهڪ طريقي کي لڪائڻ ۽ ٻاهرين دنيا کان متغير تائين رسائي کي محدود ڪرڻ لاء هڪ رسائي موڊيفائر استعمال ڪندا آهيون. JAVA وٽ مختلف رسائي موڊيفائر پڻ آهن: public, default، protected, private, جيڪي مختلف سطحن تي نمائش کي محدود ڪرڻ لاءِ استعمال ڪيا ويندا آهن. پر حتمي مقصد اهو آهي ته انهن شين کي ختم ڪرڻ گهرجي جيڪي تبديل نه ٿيڻ گهرجن. اهو طريقو جيڪو بهترين ڪم ڪري ٿو اهو آهي ته هڪ طبقي کي تبديل ڪرڻ لاء صرف هڪ سبب هجڻ گهرجي، ۽ encapsulation انهي "هڪ سبب" جي ڊزائن کي هڪ حقيقت بڻائي ٿو. encapsulation جو صحيح طريقو اهو آهي ته انهن شين کي لڪايو جيڪي بار بار تبديل ٿين ٿيون ٻين طبقن کي نقصان پهچائڻ کان بچڻ لاءِ. فائدا: هيٺيان ڪجھ فائدا آھن encapsulation:
  • اسان ڪنهن شئي جي اندروني حالت کي ان جي خاصيتن کي لڪائي ان جي حفاظت ڪري سگهون ٿا.
  • هي ڪوڊ ماڊليت کي بهتر بڻائي ٿو ڇاڪاڻ ته اهو شين کي غير متوقع طريقن سان لهه وچڙ ڪرڻ کان روڪي ٿو.
  • ڪوڊ جي استعمال کي بهتر بڻائي ٿو.
  • هي هڪ مخصوص اداري جي معاهدي جي رشتي جي حمايت ڪري ٿو.
  • Encapsulation سافٽ ويئر کي برقرار رکڻ لاء آسان بڻائي ٿو.
  • ڪوڊ ۾ تبديليون هڪ ٻئي کان آزاد ٿي سگهن ٿيون.

پوليمورفيزم

پروگرامنگ ۾ پوليمورفيزم مختلف بنيادي شڪلن (ڊيٽا جي قسمن) لاءِ ساڳيو انٽرفيس مهيا ڪرڻ جي صلاحيت آهي. هن جو مطلب اهو آهي ته مختلف ڪارڪردگي وارا ڪلاس هڪ ئي انٽرفيس کي حصيداري ڪن ٿا ۽ انهن کي متحرڪ طور سڏيو وڃي ٿو حوالن ذريعي پيرا ميٽرز پاس ڪندي. ھڪڙو مثالي مثال آھي طبقو Shape(شڪل) ۽ سڀئي طبقا جيڪي ان مان ورثي ۾ ملن ٿا: square(مربع)، circle(دائرو)، dodecahedron(ڊوڊيڪاڊرون)، irregular polygon(غير منظم پوليگون)، splat(بلاب)، وغيره. هن مثال ۾، هر طبقي جو پنهنجو طريقو هوندو Draw()۽ ڪلائنٽ ڪوڊ صرف ڪري سگهي ٿو:
Shape shape = new Shape();
Shape.area()ڪنهن به شڪل جو صحيح رويو حاصل ڪرڻ لاءِ پوليمورفيزم جي خوبي اها آهي ته ڪوڊ مختلف طبقن سان ڪم ڪري رهيو آهي، اهو ڄاڻڻ جي ضرورت ناهي ته اهو ڪهڙي طبقي کي استعمال ڪري رهيو آهي، ڇاڪاڻ ته اهي سڀ هڪ ئي اصول تي ڪم ڪن ٿا. متحرڪ پوليمورفيزم کي لاڳو ڪرڻ لاءِ اعتراض تي مبني پروگرامنگ ٻولين پاران استعمال ٿيندڙ عمل کي متحرڪ بائنڊنگ سڏيو ويندو آهي. نوٽ: پوليمورفيزم وڌيڪ مخصوص طريقن کي چونڊڻ جي صلاحيت آهي جيڪو اعتراض تي منحصر ڪري ٿو. پوليمورفيزم تڏهن ٿئي ٿو جڏهن تجريدي طبقن ۾ شامل نه آهن. فائدا:
  • ٻيهر قابل استعمال ڪوڊ ٺاهي رهيو آهي. اهو آهي، هڪ دفعو هڪ ڪلاس ٺاهيو وڃي ٿو، ان تي عمل ڪيو وڃي ٿو، ۽ آزمائشي، اهو آزاديء سان استعمال ڪري سگهجي ٿو بغير پريشان ٿيڻ جي ته ان ۾ ڇا لکيل آهي.
  • هي اجازت ڏئي ٿو وڌيڪ عام ۽ آساني سان جوڙيل ڪوڊ لاءِ.
  • تاليف جو وقت گھٽجي ويو آهي، جيڪو ترقي کي تيز ڪري ٿو.
  • متحرڪ ڳنڍڻ.
  • ساڳيو انٽرفيس استعمال ڪري سگھجي ٿو طريقن کي ٺاهڻ لاءِ مختلف عملن سان.
  • سڄي عمل کي تبديل ڪري سگھجي ٿو ساڳئي طريقي سان دستخط استعمال ڪندي.
پوليمورفيزم جي حصي جي طور تي ختم ڪرڻ جو طريقو. هڪ اوور رائڊ ٻن طريقن سان رابطو ڪري ٿو: هڪ طريقو والدين طبقي ۾ ۽ هڪ طريقو نڪتل طبقي ۾. اهي طريقا ساڳيا نالا ۽ دستخط آهن. اوور رائڊنگ توهان کي مختلف طريقن سان ساڳيو آپريشن ڪرڻ جي اجازت ڏئي ٿي مختلف قسمن جي شين لاءِ. مثال طور:
while(it.hasNext()) {
Shape s = (Shape) it.next();
totalArea += s.area(dim); //будет применен полиморфизм и вызван нужный метод для каждого an object.
}
JAVA Object Oriented Programming Concepts - 2طريقو اوورلوڊنگ يا ايڊ-هاڪ پوليمورفيزم يا جامد پوليمورفيزم اوورلوڊنگ هڪ ئي طبقي جي ڪيترن ئي طريقن سان رابطو ڪري ٿو جيڪي هڪجهڙا نالا آهن پر مختلف طريقن جي دستخط آهن. ٻيهر لوڊ ڪرڻ توهان کي مختلف ڊيٽا لاءِ ساڳي آپريشن کي مختلف طريقن سان بيان ڪرڻ جي اجازت ڏئي ٿي. اهو ڪڏهن ڪڏهن جامد پوليمورفيزم سڏيو ويندو آهي، پر حقيقت ۾ اهو پوليمورفيزم ناهي. اهو صرف هڪ ئي نالن سان ٻه طريقا هجڻ کان وڌيڪ ناهي، پر دليلن جي هڪ مختلف فهرست. ريبوٽنگ جو وراثت ۽ پوليمورفيزم سان ڪو به واسطو ناهي. ۽ هڪ اوورلوڊ ٿيل طريقو بلڪل ساڳيو نه آهي جيئن اوور رائڊ ٿيل طريقو. JAVA ۾ Generication ذريعي Parametric Polymorphism جڏهن ڪنهن طبقي جو اعلان ڪري، نالو فيلڊ مختلف قسمن سان لاڳاپيل ٿي سگهي ٿو، ۽ طريقي جو نالو مختلف پيرا ميٽرز ۽ واپسي جي قسمن سان لاڳاپيل ٿي سگهي ٿو. JAVA generics استعمال ڪندي parametric polymorphism کي سپورٽ ڪري ٿو.
List<String> list = new ArrayList<String>();
اسان JAVA ۾ جامد طريقي کي ڇو نه ٿا ڪري سگھون؟ اوور رائيڊنگ ڪلاس جي مثال جي وجود تي منحصر آهي. پوليمورفيزم جو خيال اهو آهي ته توهان هڪ ذيلي ڪلاس ٺاهي سگهو ٿا، ۽ انهن ذيلي ڪلاسن پاران لاڳو ڪيل شيون والدين طبقي جي ساڳي طريقن سان (ذيلي طبقن ۾ ختم ٿيل) سان مختلف طريقي سان عمل ڪندا. هڪ جامد طريقو ڪلاس جي ڪنهن به مثال سان جڙيل ناهي، تنهنڪري پاڻ کي ختم ڪرڻ جو تصور لاڳو نٿو ڪري سگهجي. جاوا جي تخليق ڪندڙن کي ھدايت ڪئي وئي ٻن غورن سان جيڪي ھن طريقي تي اثر انداز ڪيا. پهريون، ڪوڊ جي عملدرآمد جا مسئلا آهن: سست هجڻ جي ڪري Smalltalk تي تمام گهڻي تنقيد هئي (ڪچرا گڏ ڪرڻ ۽ پوليمورفيزم هن مسئلي جو حصو هئا)، ۽ JAVA ان کان بچڻ لاءِ ٺاهيو ويو هو. ٻيو غور اهو فيصلو هو ته جاوا جا ٽارگيٽ سامعين C++ ڊولپر هوندا. جامد طريقن سان ڪم ڪرڻ هن طريقي سان C++ پروگرامرز کي تمام گهڻو واقف هو، ۽ پڻ شين کي تيز ڪيو ويو آهي ڇو ته اهو معلوم ڪرڻ لاء ڪلاس جي درجه بندي کي مٿي وڃڻ جي ضرورت نه هئي ته ڪهڙي طريقي سان ڪال ڪجي. توهان سڌو ڪلاس ڏانهن وڃو ۽ هڪ مخصوص طريقي سان سڏين ٿا.

وراثت

وراثت هڪ بنيادي طبقي جي رويي (يعني طريقن) ۽ رياست (يعني متغيرن) کي هڪ نڪتل طبقي ۾ شامل ڪرڻ جو عمل آهي ته جيئن اهي حاصل ڪيل طبقي ۾ موجود هجن. وراثت جو بنيادي فائدو اهو آهي ته اهو ڪوڊ جي ٻيهر استعمال لاءِ هڪ رسمي ميکانيزم مهيا ڪري ٿو ۽ نقل کان پاسو ڪري ٿو. هڪ وراثت وارو طبقو ايپليڪيشن جي ڪارڪردگي کي وڌائي ٿو والدين طبقي جي رويي کي نقل ڪندي ۽ نئين ڪارڪردگي شامل ڪندي. اهو ڪوڊ کي انتهائي ملائي ٿو. جيڪڏهن توهان سپر ڪلاس کي تبديل ڪرڻ چاهيو ٿا، ته توهان کي ذيلي ڪلاس جا سڀ تفصيل ڄاڻڻا پوندا ته جيئن ڪوڊ ٽوڙي نه وڃي. وراثت سافٽ ويئر جي ٻيهر استعمال جو هڪ روپ آهي جتي موجوده طبقي (سپر ڪلاس) مان هڪ نئون ڪلاس (ذيلي ڪلاس) ٺاهيو ويندو آهي جيڪو پنهنجي ڪارڪردگي کي وڌائيندو آهي ۽ سپر ڪلاس جي ڪجهه ملڪيتن کي استعمال ڪندو آهي. تنهن ڪري جيڪڏهن توهان وٽ والدين ڪلاس آهي ۽ پوء هڪ ٻار ڪلاس ظاهر ٿئي ٿو، ٻار سڀني شين جو وارث آهي جيڪو والدين وٽ آهي. فائدا:
  • بهتر ڪوڊ ٻيهر استعمال.
  • منطقي تعلق "هڪ آهي" (جيڪو آهي، ڪجهه آهي) قائم آهي. مثال طور: ڪتو هڪ جانور آهي . (ڪتو هڪ جانور آهي).
  • ڪوڊ modularization.
  • ورجائي نڪتل آهن.
نقص:
  • مضبوطي سان جوڙيل: ھڪڙو ذيلي ڪلاس والدين طبقي جي عمل تي منحصر آھي، ڪوڊ کي مضبوط طور تي جوڙيو.

خلاصو

تجزيه جو مطلب آهي ڪلاسز کي ڊزائين ڪرڻ انهن جي انٽرفيس ۽ ڪارڪردگي جي بنياد تي، بغير عمل جي تفصيل کي حساب ۾ رکڻ جي. هڪ خلاصو طبقو حقيقي عمل کي شامل ڪرڻ کان سواء انٽرنيٽ جي نمائندگي ڪري ٿو. اهو هڪ اعتراض جي عمل کي ان جي رويي کان ڌار ڪري ٿو. خلاصو ڪوڊ کي آسان بڻائي ٿو غير ضروري تفصيلن کي لڪائڻ سان. فائدا:
  • تجريدي استعمال ڪندي، اسين الڳ ڪري سگھون ٿا ته ڇا گروپ ڪري سگھجي ٿو ڪنھن قسم ۾.
  • بار بار تبديل ٿيل ملڪيتن ۽ طريقن کي الڳ قسم ۾ ورهائي سگھجي ٿو، تنھنڪري بنيادي قسم تبديلين جي تابع نه ٿيندي. هي OOP اصول کي مضبوط ڪري ٿو: "ڪوڊ کي وڌائڻ لاء کليل هجڻ گهرجي، پر تبديل ڪرڻ لاء بند ڪيو وڃي . "
  • خلاصو ڊومين ماڊل جي نمائندگي کي آسان بڻائي ٿو.
تجريد ۽ encapsulation جي وچ ۾ فرق Encapsulation هڪ حڪمت عملي آهي جيڪا تجريد جي حصي طور استعمال ڪئي وئي آهي. Encapsulation هڪ اعتراض جي ساخت ڏانهن اشارو ڪري ٿو: شيون انهن جي ملڪيت کي ڍڪيندا آهن ۽ انهن کي ٻاهرين رسائي کان لڪائي ڇڏيندا آهن. هڪ طبقي جا استعمال ڪندڙ ان جي طريقن کي استعمال ڪندي ان سان لهه وچڙ ۾ ايندا آهن، پر طبقاتي جوڙجڪ تائين سڌي رسائي نه هوندي آهي. هن طريقي سان، ڪلاس ان جي ڊيزائن سان لاڳاپيل عمل جي تفصيلن کي خلاص ڪري ٿو. خلاصو هڪ وڌيڪ عام اصطلاح آهي. اهو پڻ حاصل ڪري سگهجي ٿو، ٻين شين جي وچ ۾، ذيلي ڪلاس استعمال ڪندي. مثال طور، Listمعياري لائبريري ۾ هڪ ڪلاس (فهرست) عنصرن جي تسلسل لاءِ هڪ خلاصو آهي، فهرست ۾ انهن جي جڳهه جي مطابق ترتيب ڏنل آهي. ھڪڙي فهرست جا مخصوص مثال Listآھن ArrayListيا LinkedList. ڪوڊ جيڪو هڪ فهرست سان لاڳاپو رکي ٿو Listان جي تفصيل کي ختم ڪري ٿو جيڪا فهرست استعمال ڪري ٿي. گهڻو ڪري خلاصو ممڪن نه آهي بغير انڪپسوليشن استعمال ڪندي هيٺئين رياست کي لڪائڻ کان سواءِ. جيڪڏهن ڪو طبقو پنهنجي اندروني ڍانچي کي بي نقاب ڪري ٿو، ته اهو پنهنجي اندروني عملن کي تبديل نٿو ڪري سگهي، ۽ تنهنڪري ان کي خلاصو نٿو ڪري سگهجي. تجريدي طبقي ۽ تجريدي طريقا ڇا آهن؟ اهو ٿئي ٿو ته ترقي دوران توهان هڪ بنيادي ڪلاس چاهيو ٿا ته صرف ان جي نڪتل طبقن کي هڪ انٽرفيس مهيا ڪري. اهو آهي، توهان نٿا چاهيو ته ڪو به بنيادي ڪلاس جا مثال ٺاهي. توھان کي انٽرفيس کي استعمال ڪرڻ جي ضرورت آھي اھڙيءَ طرح ته توھان صرف ان تي شيون اڇلائي ڇڏيو (ھي ھڪڙو غير معمولي ڪاسٽ آھي جيڪو پوليمورفڪ رويي جي اجازت ڏئي ٿو). اهو حاصل ڪيو ويو آهي هن طبقي کي خلاصو لفظ استعمال ڪندي abstract. اهو ڪجهه پابنديون لاڳو ڪري ٿو، جهڙوڪ تجريدي طبقي جا مثال پيدا ڪرڻ جي ناڪامي؛ جڏهن هڪ تجريدي طبقي کي استعمال ڪندي، اهو ضروري آهي ته تجريدي طريقن کي لاڳو ڪرڻ. اهو پوليمورفيزم کي يقيني بڻائي ٿو. هڪ خلاصو طبقو ٻنهي خلاصن ۽ ڪنڪريٽ طريقن تي مشتمل ٿي سگھي ٿو. جيڪڏهن هڪ طبقي ۾ گهٽ ۾ گهٽ هڪ طريقو خلاصو قرار ڏنو وڃي، ته سڄي طبقي کي پڻ خلاصو قرار ڏنو وڃي. تنهن هوندي به، قاعدي جي مخالف طرف ۾ مشاهدو نه ڪيو وڃي. جيڪڏهن هڪ طبقي کي خلاصو قرار ڏنو ويو آهي، اهو شايد تجريدي طريقن تي مشتمل نه هجي. ھڪڙو طريقو جيڪو صرف پنھنجي نشانين جي وضاحت ڪري ٿو ۽ عمل درآمد نٿو ڪري، خلاصو سڏيو ويندو آھي. ان جو اصل عمل ان جي ذيلي طبقن تي رهجي ويو آهي، جيڪي خلاصي طبقي کي وڌايو. هڪ خلاصو طريقو ڪنهن شئي طرفان استعمال نٿو ڪري سگهجي، صرف ٻيو طبقو ان کي وڌائي سگھي ٿو. جڏهن توهان کي هڪ خلاصو ڪلاس استعمال ڪرڻ گهرجي؟ خلاصو ڪلاس توهان کي ڪجهه ڊفالٽ رويي جي وضاحت ڪرڻ جي اجازت ڏين ٿا ۽ ذيلي ڪلاس ڪنهن مخصوص رويي کي مهيا ڪن ٿا. مثال طور: List(فهرست) هڪ انٽرفيس آهي، بدلي ۾ AbstractListهڪ فهرست جي بنيادي رويي کي بيان ڪري ٿو، جنهن کي استعمال ڪري سگهجي ٿو جيئن هڪ ذيلي ڪلاس ۾، مثال طور، ArrayList(فهرست جي صف) ۾. هڪ انٽرفيس ڇا آهي؟ هڪ انٽرفيس جو تصور هڪ خلاصو طبقو آهي، پر انٽرفيس (جي لفظ طرفان بيان ڪيل interface) هڪ قدم اڳتي وڌي ٿو. اهو ڪنهن به طريقي يا فنڪشن جي عمل کي روڪي ٿو. توهان صرف هڪ طريقو يا فنڪشن جو اعلان ڪري سگهو ٿا، پر ان تي عمل درآمد نه ڏيو. اهو طبقو جيڪو انٽرفيس کي لاڳو ڪري ٿو، ان کي اصل عمل درآمد جو خيال رکڻو پوندو. انٽرفيس تمام مفيد آهن ۽ وڏي پيماني تي OOP ۾ استعمال ٿيندا آهن. جيئن ته اهي انٽرفيس پاڻ کي حصيداري ڪن ٿا ۽ عمل درآمد ڪن ٿا، اهي انهن جي استعمال جا ڪيترائي فائدا مهيا ڪن ٿا:
  1. گھڻن وراثت .
  2. لوز جوڙڻ . آپريشن جو ھڪڙو خلاصو آھي، جھڙوڪ ليئرنگ، ۽ ڪنڪريٽ عمل درآمد ڪجھ به ٿي سگھي ٿو: JDBC، JPA، JTA، وغيره.
  3. انٽرفيس پروگرام لاڳو نه ڪيو ويو آهي .
  4. Dynamic binding polymorphism : ڪنهن شئي جو پروگرامنگ انٽرفيس ان جي حقيقي عمل کي ظاهر ڪرڻ کان سواءِ ظاهر ڪيو ويندو آهي.
  5. خلاصو سطح ، ڪارڪردگي جي جدائي.
انٽرفيس ۽ خلاصي طبقي جي وچ ۾ فرق.
  • هڪ انٽرفيس طبقن سان هڪ معاهدو تعلق آهي جيڪو هن انٽرفيس کي لاڳو ڪري ٿو، اهو ٻڌائي ٿو ته انٽرفيس طرفان مقرر ڪيل طريقي سان عمل درآمد ٿئي ٿو. هي اعلان ڪيل طريقن سان هڪ خالي شيل آهي.
  • هڪ خلاصو طبقو ڪجهه عام رويي جي وضاحت ڪري ٿو ۽ ان جي ذيلي طبقن کان پڇي ٿو ته انهن جي طبقي لاء غير معمولي يا مخصوص رويي جي وضاحت ڪن.
  • طريقن ۽ تجريدي طبقي جا ميمبر ڪنهن به رسائي موڊيفائر سان نامزد ڪري سگھجن ٿا؛ موڙ ۾، سڀ انٽرفيس طريقا عوامي هجڻ گهرجن.
  • جڏهن هڪ تجريدي طبقي کي وراثت ۾ ملندو آهي، نسلي طبقي کي لازمي طور تي تجريدي طريقن جي وضاحت ڪرڻ گهرجي، جڏهن ته هڪ انٽرفيس ٻئي انٽرفيس کي وارث ڪري سگهي ٿو بغير ضروري طور تي ان جي طريقن جي وضاحت ڪرڻ جي.
  • هڪ نسلي طبقو صرف هڪ خلاصي طبقي کي وڌائي سگهي ٿو، پر هڪ انٽرفيس وڌائي سگهي ٿو يا هڪ طبقو ڪيترن ئي ٻين انٽرفيس کي لاڳو ڪري سگهي ٿو.
  • هڪ نسلي طبقو ساڳيو يا گهٽ پابندي واري رسائي موڊيفائر سان تجريدي طريقن جي وضاحت ڪري سگهي ٿو، پر انٽرفيس کي لاڳو ڪندڙ طبقن کي لازمي طور طريقن جي وضاحت ڪرڻ گهرجي ته ساڳي سطح جي نمائش سان.
  • هڪ انٽرفيس تعمير ڪندڙ تي مشتمل ناهي، جڏهن ته هڪ خلاصو طبقو آهي.
  • جاوا انٽرفيس ۾ بيان ڪيل متغير ڊفالٽ طور حتمي آهن. هڪ خلاصو طبقو متغير تي مشتمل ٿي سگھي ٿو جيڪي حتمي نه آهن.
  • جاوا انٽرفيس جا سڀ ميمبر آهن public. هڪ تجريدي طبقي جا ميمبر ٿي سگھن ٿا public، protectedوغيره.

ساخت

ڪوڊ ٻيهر استعمال حاصل ڪري سگھجي ٿو وراثت ۽ ترتيب ٻنهي کي استعمال ڪندي. پر ڪمپوزيشن استعمال ڪندي وراثت جي ڀيٽ ۾ انڪپسوليشن جي اعليٰ سطح مهيا ڪري ٿي، ڇاڪاڻ ته پٺتي پيل ڪلاس ۾ تبديليون لازمي طور تي ان ڪوڊ کي متاثر نه ڪنديون جيڪي فرنٽ-اينڊ ڪلاس سان تعلق رکن ٿيون. ڪمپوزيشن هڪ ڊزائين ٽيڪنڪ آهي جيڪا استعمال ڪري ٿي "هيس-اي" (آهي، شامل آهي) ڪلاس ۾ رشتا. ٻئي جاوا وراثت ۽ اعتراض جي جوڙجڪ ڪوڊ ٻيهر استعمال ڪرڻ لاء استعمال ڪري سگھجن ٿيون. ساخت جو جوهر اهو آهي ته شين جي وچ ۾ "هڪ آهي" تعلق کي ظاهر ڪرڻ. ڪرسي جي باري ۾ سوچيو. ڪرسيءَ تي هڪ سيٽ آهي. ڪرسي کي پٺي آهي. ڪرسيءَ ۾ پيرن جو هڪ خاص تعداد هوندو آهي. جملي "هڪ آهي" هڪ تعلق ڏيکاري ٿو جنهن ۾ ڪرسي آهي، يا گهٽ ۾ گهٽ استعمال ڪري ٿو، ٻيو اعتراض. اهو ئي آهي "هڪ-هڪ" تعلق، جيڪو ٺهڻ جو بنياد آهي. فائدا:
  • نمائش ڪنٽرول
  • رن-ٽيم تي عملدرآمد کي تبديل ڪري سگھجي ٿو
  • لوز ڪپلنگ، ڇو ته انٽرفيس ڪلاس لاڳو ڪرڻ تي منحصر نه آهي.
ساخت ۽ وراثت جي وچ ۾ فرق
نه. ساخت (هڪ آهي / آهي) وراثت (هڪ / آهي)
1 پوليمورفيزم ۽ ڪوڊ ٻيهر استعمال جي حمايت ڪري ٿو. پوليمورفيزم ۽ ڪوڊ ٻيهر استعمال جي حمايت ڪري ٿو.
2 رن-ٽائم اعتراض اڳ ۾ ئي ٺهيل آهي. اعتراض متحرڪ وقت تي ٺهيل آهي.
3 رن-ٽيم تي عملدرآمد کي تبديل ڪري سگھجي ٿو. ترتيب ڏيڻ واري وقت تي عمل کي تبديل ڪري سگھجي ٿو.
4 ھڪڙو ذيلي ڪلاس پنھنجي والدين طبقي کان آزاد آھي، جيڪو لوز ڪپلنگ جي حق ۾ آھي (خاص طور تي انٽرفيس ڪنٽرول ھيٺ). ذيلي ڪلاس والدين طبقي جي عمل تي منحصر آهي، تنهنڪري پابند مضبوط سمجهيو ويندو آهي.
5 استعمال ڪريو: گھر ۾ باٿ روم آھي. اهو چوڻ غلط آهي ته هائوس باٿ روم آهي. وراثت اڻ سڌي آهي: هڪ گهر هڪ عمارت آهي. پر عمارت هڪ گهر نه آهي.
نوٽ: وراثت استعمال نه ڪريو صرف ڪوڊ جي ٻيهر استعمال کي يقيني بڻائڻ لاءِ. جيڪڏهن ڪو به تعلق نه آهي "هڪ آهي" (آهي)، انهن مقصدن لاء ٺهيل استعمال ڪيو ويندو آهي. ساخت ۽ مجموعي جي وچ ۾ فرق اعتراض رشتي ۾ آهي. Aggregation هڪ تعلق آهي جنهن ۾ هڪ طبقو هڪ مجموعي ۾ فٽ ٿئي ٿو. اهو هڪ مڪمل تعلق جو هڪ حصو آهي، جتي هڪ حصو مڪمل طور تي بغير ٿي سگهي ٿو. اهڙا رشتا ڏاڍا ڪمزور هوندا آهن. ڪو به cyclic انحصار نه آهي. مثال طور: آرڊر ۽ پيداوار. ڪمپوزيشن هڪ اهڙو تعلق آهي جنهن ۾ هڪ طبقو گڏ ڪري ٿو. اهو هڪ مڪمل رشتي جو هڪ حصو آهي جنهن ۾ حصو مڪمل طور تي موجود ناهي. جيڪڏهن سڄو ناس ٿي وڃي ته ان جا سمورا اجزا به ناس ٿي ويندا. اهو هڪ مضبوط تعلق آهي. مثال طور: هڪ ڪثرت ۽ ان جي چوٽي، هڪ ترتيب ۽ ان جو جزو.
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION