JavaRush /جاوا بلاگ /Random-UR /طبقات کے درمیان تعلقات۔ وراثت، ساخت اور جمع

طبقات کے درمیان تعلقات۔ وراثت، ساخت اور جمع

گروپ میں شائع ہوا۔
ہیلو! آج ہم آبجیکٹ اورینٹڈ پروگرامنگ (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" (یا انگریزی میں "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