JavaRush /جاوا بلاگ /Random-SD /طبقن جي وچ ۾ لاڳاپا. وراثت، ساخت ۽ مجموعي

طبقن جي وچ ۾ لاڳاپا. وراثت، ساخت ۽ مجموعي

گروپ ۾ شايع ٿيل
سلام! اڄ اسان هڪ ٻئي اصول تي ويجهڙائي سان نظر ڪنداسين آبجیکٹ-اورينٽيڊ پروگرامنگ (OOP) - وراثت. ساڳئي وقت، اسان طبقن جي وچ ۾ لاڳاپن جي ٻين قسمن جو مطالعو ڪنداسين - ساخت ۽ مجموعي. هي موضوع ڏکيو نه ٿيندو: توهان اڳ ۾ ئي وراثت ۽ ان جا مثال ڪيترائي ڀيرا اڳئين ليڪچرن ۾ ڏنا آهن. اڄ بنيادي شيء توهان جي علم کي مضبوط ڪرڻ، وراثت جي ميکانيزم تي هڪ ويجهي نظر وٺو ۽ هڪ ڀيرو ٻيهر مثالن جي ذريعي وڃو :) پوء، اچو ته وڃو!
طبقن جي وچ ۾ لاڳاپا.  وراثت، ساخت ۽ مجموعي - 1

جاوا ۾ وراثت ۽ ان جا فائدا

جئين توهان کي ياد آهي، وراثت هڪ ميکانيزم آهي جيڪا توهان کي موجوده (والدين) جي بنياد تي هڪ نئين طبقي کي بيان ڪرڻ جي اجازت ڏئي ٿي. انهي صورت ۾، والدين طبقي جي ملڪيت ۽ ڪارڪردگي نئين طبقي طرفان قرضدار آهن. اچو ته اڳئين ليڪچرن مان ورثي جو مثال ياد رکون:
public class Car {

   private String model;
   private int maxSpeed;
   private int yearOfManufacture;

   public Car(String model, int maxSpeed, int yearOfManufacture) {
       this.model = model;
       this.maxSpeed = maxSpeed;
       this.yearOfManufacture = yearOfManufacture;
   }


public void gas() {
       //...gas
   }

public void brake() {
       //...brake
   }
}


public class Truck extends Car {

   public Truck(String model, int maxSpeed, int yearOfManufacture) {
       super(model, maxSpeed, yearOfManufacture);
   }
}



public class Sedan extends Car {
   public Sedan(String model, int maxSpeed, int yearOfManufacture) {
       super(model, maxSpeed, yearOfManufacture);
   }
}
اتي ھڪڙو خاص پروگرام آھي جنھن ۾ اسين مختلف قسمن جي ڪارن سان ڪم ڪندا آھيون. جيتوڻيڪ توهان ڪار جي شوقين نه آهيو، توهان شايد ڄاڻو ٿا ته دنيا ۾ انهن ڪارن جا تمام گهڻا قسم آهن :) تنهن ڪري، اسان ڪارن جي عام ملڪيت کي هڪ عام والدين طبقي ۾ الڳ ڪريون ٿا - Car. سڀني ڪارن ۾ ڇا عام آهي، قطع نظر قسم جي؟ ڪنهن به ڪار جي پيداوار جو هڪ سال آهي، ماڊل جو نالو ۽ وڌ ۾ وڌ رفتار. اسان انهن ملڪيتن کي فيلڊ ۾ رکون ٿا model، maxSpeed. yearOfManufactureجيئن ته رويي لاء، ڪا به ڪار تيز ۽ بريڪ ڪري سگهي ٿي :) اسان هن رويي جي وضاحت ڪريون ٿا طريقن gas()۽ brake(). هي اسان کي ڪهڙو فائدو ڏئي ٿو؟ سڀ کان پهريان، ڪوڊ جي مقدار کي گھٽائڻ. يقينا، اسان والدين طبقي کان سواء ڪري سگهون ٿا. پر جيئن ته هر ڪار کي تيز ڪرڻ ۽ بريڪ ڪرڻ جي قابل هجڻ گهرجي، اسان کي ڪلاس gas()۾ ، ڪلاس ۾ ، ڪلاس ۾ ، ڪلاس ۾، ۽ ڪارن جي ٻين سڀني طبقن ۾ طريقا ٺاهڻا پوندا . تصور ڪريو ته اسان هن صورت ۾ ڪيترو اضافي ڪوڊ لکنداسين. ماڊل، maxSpeed ​​۽ YearOfManufacture شعبن جي باري ۾ نه وساريو: جيڪڏهن اسان والدين طبقي کي ڇڏي ڏيون ٿا، اسان انهن کي هر مشين ڪلاس ۾ ٺاهينداسين! جڏهن اسان وٽ ٻه درجن مشين ڪلاس آهن، بار بار ڪوڊ جي رقم واقعي سنجيده ٿي ويندي. عام شعبن ۽ طريقن کي (جنهن کي "رياست" ۽ "رويي" پڻ سڏيو ويندو آهي) کي والدين طبقي ۾ منتقل ڪرڻ اسان کي گهڻو وقت ۽ جڳهه بچائڻ جي اجازت ڏيندو. جيڪڏهن هڪ خاص قسم جا خاصيتون يا طريقا آهن جيڪي صرف ان لاءِ منفرد آهن ۽ ٻين قسمن جي مشينن کان غير حاضر آهن، اهو مسئلو ناهي. اهي هميشه هڪ نسلي طبقي ۾ پيدا ٿي سگهن ٿا، ٻين سڀني کان الڳ. brake()TruckSedanF1CarSportcarطبقن جي وچ ۾ لاڳاپا.  وراثت، ساخت ۽ مجموعي - 2
public class F1Car extends Car {

   public void pitStop() {

       //...only racing cars make pit stops
   }

   public static void main(String[] args) {

       F1Car formula1Car = new F1Car();
       formula1Car.gas();
       formula1Car.pitStop();
       formula1Car.brake();
   }
}
فارمولا 1 ريسنگ ڪارن جو ڪيس وٺو. اهي، انهن جي "رشتيدارن" جي برعڪس، هڪ منفرد رويي آهي - وقت وقت تي اهي هڪ کڏ اسٽاپ لاء روڪي رهيا آهن. اهو اسان کي تنگ نٿو ڪري. اسان اڳ ۾ ئي والدين طبقي ۾ عام رويي کي بيان ڪري چڪا آهيون Car، ۽ اسان ڪلاس اندر نسلي طبقن جي مخصوص رويي کي شامل ڪري سگهون ٿا. طبقن جي وچ ۾ لاڳاپا.  وراثت، ساخت ۽ مجموعي - 3 اهو شعبن تي پڻ لاڳو ٿئي ٿو: جيڪڏهن ٻار جي طبقي ۾ منفرد خاصيتون آهن، اسان آرام سان انهن شعبن کي ان جي اندر بيان ڪري سگهون ٿا ۽ پريشان نه ڪريو :) ڪوڊ ٻيهر استعمال ڪرڻ جي صلاحيت وراثت جو بنيادي فائدو آهي. اهو هڪ پروگرامر لاءِ تمام ضروري آهي ته ڪوڊ جي غير ضروري مقدار نه لکي. توهان پنهنجي ڪم ۾ هڪ کان وڌيڪ ڀيرا هن سان منهن ڪنداسين. مھرباني ڪري ھڪڙي وڌيڪ اھم ڳالھ ياد رکو: جاوا ۾ ڪو به گھڻا وراثت نه آھي. هر طبقي کي صرف هڪ طبقي مان ورثي ۾ ملي ٿو. اسان مستقبل جي ليڪچرن ۾ ان جي سببن بابت وڌيڪ تفصيل سان ڳالهائينداسين، پر هاڻي صرف ياد رکو. اهو، طريقي سان، جاوا کي ڪجهه ٻين OOP ٻولين کان ڌار ڪري ٿو. مثال طور، C++ گھڻن وراثت آھي. وراثت سان سڀ ڪجهه وڌيڪ يا گهٽ واضح آهي - اچو ته اڳتي وڌو.

ٺاھڻ ۽ گڏ ڪرڻ

ڪلاس ۽ شيون هڪ ٻئي سان لاڳاپيل ٿي سگهن ٿيون. وراثت بيان ڪري ٿو تعلق "آهي" (يا انگريزي ۾ "IS A"). ليو هڪ جانور آهي. هي تعلق وراثت استعمال ڪندي آساني سان ظاهر ڪري سگهجي ٿو، جتي Animalڪلاس والدين هوندو ۽ Lionطبقو ٻار هوندو. بهرحال، دنيا ۾ سڀ رشتا هن طرح بيان نه ڪيا ويا آهن. مثال طور، ڪي بورڊ ضرور ڪنهن نه ڪنهن طريقي سان ڪمپيوٽر سان ڳنڍيل آهي، پر اهو ڪمپيوٽر ناهي . هٿ ڪنهن نه ڪنهن طرح ماڻهوءَ سان ڳنڍيل هوندا آهن، پر اهي ماڻهو نه هوندا آهن. انهن حالتن ۾، اهو هڪ مختلف قسم جي رشتي تي ٻڌل آهي: نه "آهي"، پر "حصو آهي" ("HAS A"). هٿ ڪنهن ماڻهوءَ جو نه آهي، پر اهو هڪ ماڻهوءَ جو حصو آهي. ڪي بورڊ ڪمپيوٽر ناهي، پر ڪمپيوٽر جو حصو آهي. HAS A رشتن کي ڪوڊ ۾ بيان ڪري سگھجي ٿو مرکب ۽ مجموعي ميڪانيزم استعمال ڪندي . انهن جي وچ ۾ فرق انهن رابطن جي "سختي" ۾ آهي. اچو ته هڪ سادي مثال ڏيو: اسان وٽ اسان جي آهي Car- هڪ ڪار. هر ڪار هڪ انجڻ آهي. ان کان سواء، هر ڪار اندر اندر مسافر آهن. Engine engineفيلڊ ۽ وچ ۾ بنيادي فرق ڇا آهي Passenger [] passengers؟ جيڪڏهن هڪ ڪار اندر مسافر آهي А، ان جو مطلب اهو ناهي ته Bان ۾ مسافر نه هوندا C. هڪ ڪار ڪيترن ئي مسافرن کي گڏ ڪري سگهي ٿو. ان کان علاوه، جيڪڏهن سڀني مسافرن کي ڪار مان هٽايو وڃي، اهو خاموشيء سان ڪم ڪندو. Carڪلاس ۽ مسافر ڪاميٽي جي وچ ۾ تعلق Passenger [] passengersگهٽ سخت آهي. ان کي جمع سڏيو ويندو آهي . ھن موضوع تي ھڪڙو سٺو مضمون آھي: طبقن جي وچ ۾ لاڳاپا (شيون) . اهو گڏ ڪرڻ جو هڪ ٻيو سٺو مثال مهيا ڪري ٿو. اچو ته چئون ته اسان وٽ هڪ ڪلاس آهي Studentجيڪو هڪ شاگرد کي ظاهر ڪري ٿو، ۽ هڪ طبقو StudentsGroup(شاگردن جو هڪ گروپ). هڪ شاگرد هڪ فزڪس ڪلب جو ميمبر ٿي سگهي ٿو، هڪ اسٽار وار شاگرد فين ڪلب يا هڪ KVN ٽيم. ڪمپوزيشن هڪ وڌيڪ سخت قسم جو ڪميونيڪيشن آهي. جڏهن ٺهڪندڙ استعمال ڪندي، هڪ اعتراض نه رڳو ڪجهه اعتراض جو حصو آهي، پر ساڳئي قسم جي ڪنهن ٻئي شئي سان تعلق رکي ٿو. آسان مثال هڪ ڪار انجڻ آهي. هڪ انجڻ هڪ ڪار جو حصو آهي، پر ٻي ڪار جو حصو نه ٿي سگهي. جئين توهان ڏسي سگهو ٿا، انهن جو ڪنيڪشن ان کان وڌيڪ سخت آهي Car۽ Passengers. طبقن جي وچ ۾ لاڳاپا.  وراثت، ساخت ۽ مجموعي - 4
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION