OOP اصول

گروپ ۾ شايع ٿيل
جاوا هڪ اعتراض تي مبني ٻولي آهي. ان جو مطلب اهو آهي ته توهان کي جاوا پروگرام لکڻ جي ضرورت آهي هڪ اعتراض تي مبني انداز استعمال ڪندي. ۽ هي انداز پروگرام ۾ شيون ۽ طبقن جي استعمال تي ٻڌل آهي.

OOP جا بنيادي اصول:

OOP جا اصول - 1اچو ته ڪوشش ڪريون، مثالن جي مدد سان، سمجھڻ لاءِ ته ڪھڙا طبقا ۽ شيون آھن، ان سان گڏوگڏ OOP جي بنيادي اصولن کي عملي طور تي ڪيئن لاڳو ڪجي: تجريد، وراثت، پوليمورفيزم ۽ انڪپسوليشن.

هڪ اعتراض ڇا آهي؟

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

OOP خلاصو

اچو ته هاڻي ان ڳالهه تي غور ڪريون ته ڪيئن اسان حقيقي دنيا ۾ ڪنهن شئي کان هڪ پروگرام ۾ ڪنهن شئي ڏانهن منتقل ڪري سگهون ٿا، مثال طور فون استعمال ڪندي. رابطي جي هن وسيلا جي تاريخ 100 سالن کان وڌيڪ آهي ۽ جديد ٽيليفون، 19 صدي عيسويء کان ان جي اڳوڻن جي برعڪس، هڪ وڌيڪ پيچيده ڊوائيس آهي. جڏهن اسان هڪ فون استعمال ڪندا آهيون، اسان ان جي جوڙجڪ ۽ ان جي اندر ٿيندڙ عملن بابت نه سوچيو. اسان صرف فون جي ڊولپرز پاران مهيا ڪيل فنڪشن استعمال ڪندا آهيون - نمبر چونڊڻ ۽ ڪال ڪرڻ لاءِ بٽڻ يا ٽچ اسڪرين. پهرين ٽيليفون انٽرفيس مان هڪ هڪ نوب هو جنهن کي توهان ڪال ڪرڻ لاءِ ڦيرايو. يقينا، اهو تمام آسان نه هو. تنهن هوندي به، هينڊل پنهنجي ڪم کي صحيح طريقي سان انجام ڏنو. جيڪڏهن توهان سڀ کان جديد ۽ بلڪل پهريون ٽيليفون ڏسو ٿا، توهان فوري طور تي تمام اهم تفصيلن جي سڃاڻپ ڪري سگهو ٿا جيڪي 19 صدي جي آخر کان هڪ ڊوائيس لاء اهم آهن ۽ هڪ انتهائي جديد اسمارٽ فون لاء. هي هڪ ڪال ڪري رهيو آهي (هڪ نمبر ڊائل ڪري رهيو آهي) ۽ ڪال وصول ڪري رهيو آهي. لازمي طور تي، اهو آهي جيڪو هڪ فون کي فون ڪري ٿو ۽ ٻيو ڪجهه نه. ھاڻي اسان OOP ۾ اصول لاڳو ڪيو آھي - ھڪڙي اعتراض بابت سڀ کان وڌيڪ اھم خصوصيتن ۽ معلومات کي اجاگر ڪرڻ. OOP جي هن اصول کي خلاصو سڏيو ويندو آهي. او او پي ۾ تجريد پڻ بيان ڪري سگهجي ٿو هڪ طريقي جي نمائندگي ڪرڻ جي هڪ طريقي سان حقيقي دنيا جي مسئلي جي عناصر کي هڪ پروگرام ۾ شيون. Abstraction هميشه شين يا شين جي ملڪيت جي باري ۾ ڪجهه معلومات جي عام ڪرڻ سان لاڳاپيل آهي، تنهنڪري بنيادي شيء اهو آهي ته مسئلي جي حل جي حوالي سان اهم معلومات کي غير معمولي معلومات کان الڳ ڪرڻ. انهي حالت ۾، تجريد جا ڪيترائي سطح ٿي سگهن ٿا. اچو ته اسان جي فون تي تجريد جي اصول کي لاڳو ڪرڻ جي ڪوشش ڪريو. پهرين، اچو ته نمايان ڪريون سڀ کان وڌيڪ عام قسم جي فونن جي بلڪل پهرين کان اڄ تائين. مثال طور، انهن کي شڪل 1 ۾ ڏيکاريل هڪ آريگرام جي صورت ۾ پيش ڪري سگهجي ٿو. OOP جا اصول - 2هاڻي، تجريد جي مدد سان، اسان شين جي هن درجي بندي ۾ عام معلومات کي اجاگر ڪري سگهون ٿا: شين جو هڪ عام خلاصو قسم - ٽيليفون، هڪ عام خصوصيت. فون - ان جي پيدائش جو سال، ۽ هڪ عام انٽرفيس - سڀئي فون وصول ڪرڻ ۽ ڪال موڪلڻ جي قابل آهن. هتي اهو آهي ته اهو جاوا ۾ ڇا ڏسڻ ۾ اچي ٿو:
public abstract class AbstractPhone {
    private int year;

    public AbstractPhone(int year) {
        this.year = year;
    }
    public abstract void call(int outputNumber);
    public abstract void ring (int inputNumber);
}
هن خلاصي طبقي جي بنياد تي، اسان پروگرام ۾ نوان قسم جا فون ٺاهي سگهنداسين ٻين بنيادي جاوا او او پي اصولن کي استعمال ڪندي، جن تي اسان هيٺ غور ڪنداسين.

انڪپسوليشن

تجريد جي مدد سان، اسان نمايان ڪريون ٿا جيڪو سڀني شين ۾ عام آهي. بهرحال، هر فون ماڊل انفرادي آهي ۽ ڪجهه ٻين کان مختلف آهي. اسان پروگرام ۾ حدون ڪيئن ٺاهي سگهون ٿا ۽ هن انفراديت کي نامزد ڪري سگهون ٿا؟ اسان ڪيئن پڪ ڪري سگهون ٿا ته صارفن مان ڪو به غلطي يا ارادي طور تي اسان جي فون کي ٽوڙي نٿو سگهي، يا هڪ ماڊل کي ٻئي ۾ تبديل ڪرڻ جي ڪوشش ڪري سگهي ٿو؟ حقيقي شين جي دنيا لاء، جواب واضح آهي: توهان سڀني حصن کي فون جي جسم ۾ رکڻ جي ضرورت آهي. سڀ کان پوء، جيڪڏهن اسان اهو نه ڪندا آهيون ۽ فون جي اندرين ۽ تارن کي انهن کي ٻاهر سان ڳنڍي ڇڏيندا آهيون، اتي ضرور هڪ تحقيق ڪندڙ تجربو هوندو جيڪو اسان جي فون جي آپريشن کي "بهتر" ڪرڻ چاهيندو. ڪنهن شئي جي ڊيزائن ۽ آپريشن ۾ اهڙي مداخلت کان بچڻ لاءِ، OOP انڪپسوليشن جو اصول استعمال ڪري ٿو - OOP جو ٻيو بنيادي اصول، جنهن ۾ ڪنهن شئي جي خاصيتن ۽ رويي کي هڪ طبقي ۾ گڏ ڪيو ويو آهي، اعتراض جي اندروني عمل کي لڪايو ويندو آهي. استعمال ڪندڙ، ۽ هڪ کليل انٽرفيس مهيا ڪيل آهي اعتراض سان ڪم ڪرڻ لاء. پروگرامر جو ڪم اهو طئي ڪرڻ آهي ته ڪهڙن خاصيتون ۽ طريقا عوامي طور تي پهچندا ۽ جيڪي اعتراض جا اندروني عمل آهن ۽ انهن کي تبديل نه ڪيو وڃي.

Encapsulation ۽ رسائي ڪنٽرول

اچو ته چئو ته پيداوار دوران، ان جي باري ۾ معلومات فون جي پٺي تي پکڙيل آهي: ان جي پيداوار جو سال يا ٺاهيندڙ ڪمپني جو لوگو. هي معلومات خاص طور تي هن نموني کي خاص ڪري ٿو - ان جي حالت. اسان اهو چئي سگهون ٿا ته فون ڊولپر هن معلومات جي غير موثريت جو خيال رکيو - اهو ممڪن ناهي ته ڪو به نقاشي کي هٽائڻ بابت سوچيندو. جاوا دنيا ۾، مستقبل جي شين جي حالت بيان ڪئي وئي آهي هڪ طبقي ۾ فيلڊ استعمال ڪندي، ۽ انهن جي رويي کي طريقن سان بيان ڪيو ويو آهي. حالت ۽ رويي کي تبديل ڪرڻ جي صلاحيت فيلڊ ۽ طريقن تائين رسائي جي تبديلين کي استعمال ڪندي ڪيو ويندو آهي - private, protected, public, and default(default access). مثال طور، اسان فيصلو ڪيو ته ٺاھڻ جو سال، فون ٺاهيندڙ جو نالو، ۽ طريقن مان ھڪڙو ڪلاس جي اندروني عمل سان تعلق رکي ٿو ۽ پروگرام ۾ ٻين شين سان تبديل نٿو ڪري سگھجي. ڪوڊ استعمال ڪندي، ڪلاس کي ھيٺ ڏنل بيان ڪري سگھجي ٿو:
public class SomePhone {

    private int year;
    private String company;
    public SomePhone(int year, String company) {
        this.year = year;
        this.company = company;
    }
private void openConnection(){
    //findComutator
    //openNewConnection...
}
public void call() {
    openConnection();
    System.out.println("I'm calling a number");
}

public void ring() {
    System.out.println("Дзынь-дзынь");
}

 }
هڪ ترميم ڪندڙ privateهڪ طبقي جي فيلڊ ۽ طريقن کي صرف انهي طبقي ۾ دستياب ڪري ٿو. هن جو مطلب اهو آهي ته privateفيلڊ کي ٻاهران پهچائي نه ٿو سگهجي، ۽ نه ئي privateطريقن کي سڏي سگهجي ٿو. ھڪڙي طريقي تائين رسائي کي لڪائڻ openConnectionپڻ اسان کي آزاديء سان ھن طريقي جي اندروني عمل کي تبديل ڪرڻ جو موقعو ڏئي ٿو، ڇو ته اھو طريقو ٻين شين جي استعمال جي ضمانت نه آھي ۽ انھن جي عمل ۾ خلل نه ڪندو. اسان جي اعتراض سان ڪم ڪرڻ لاء، اسان موڊيفائر callاستعمال ڪندي طريقن کي کليل ڇڏيندا آهيون . ڪنهن شئي سان ڪم ڪرڻ لاءِ عوامي طريقا مهيا ڪرڻ پڻ encapsulation ميڪانيزم جو حصو آهي، ڇاڪاڻ ته جيڪڏهن ڪنهن شئي تائين رسائي مڪمل طور رد ڪئي وڃي ٿي، ته اها بيڪار ٿي ويندي.ringpublic

وراثت

اچو ته فون چارٽ تي ٻيهر ڏسو. توھان ڏسي سگھو ٿا ته اھو ھڪڙي درجي بندي کي ظاھر ڪري ٿو جنھن ۾ ھيٺ ڏنل ماڊل شاخ تي مٿاھين تي واقع ماڊل جون سڀئي خاصيتون آھن، گڏوگڏ ان جي پنھنجي. مثال طور، هڪ اسمارٽ فون ڪميونيڪيشن لاءِ سيلولر نيٽ ورڪ استعمال ڪندو آهي (سيلولر فون جي ملڪيت آهي)، وائرليس ۽ پورٽيبل آهي (جنهن ۾ ڪوڊ بيس فون جا خاصيتون آهن)، ۽ ڪال وصول ڪري سگهي ٿو ۽ ڪري سگهي ٿو (ٽيليفون جون خاصيتون آهن). هن معاملي ۾، اسان اعتراض جي ملڪيت جي وراثت جي باري ۾ ڳالهائي سگهو ٿا. پروگرامنگ ۾، وراثت موجوده طبقن جو استعمال آهي نوان بيان ڪرڻ لاء. اچو ته وراثت استعمال ڪندي اسمارٽ فون ڪلاس ٺاهڻ جو هڪ مثال ڏسو. سڀ ڪارڊ لیس فونز ريچارجبل بيٽرين سان هلن ٿيون، جن کي ڪلاڪن ۾ هڪ خاص آپريٽنگ لائف آهي. سو اچو ته هن ملڪيت کي وائرليس فون ڪلاس ۾ شامل ڪريون:
public abstract class WirelessPhone extends AbstractPhone {

    private int hour;

    public WirelessPhone(int year, int hour) {
        super(year);
        this.hour = hour;
    }
    }
callسيل فونز هڪ وائرليس فون جي ملڪيتن کي ورثي ۾ ملن ٿا، اسان پڻ شامل ڪيو هڪ عمل درآمد ۽ طريقن کي هن طبقي ۾ ring:
public class CellPhone extends WirelessPhone {
    public CellPhone(int year, int hour) {
        super(year, hour);
    }

    @Override
    public void call(int outputNumber) {
        System.out.println("Calling a number" + outputNumber);
    }

    @Override
    public void ring(int inputNumber) {
        System.out.println("A subscriber is calling you" + inputNumber);
    }
}
۽ آخرڪار، اسمارٽ فون ڪلاس، جيڪو، کلاسک سيل فونن جي برعڪس، هڪ مڪمل آپريٽنگ سسٽم آهي. توھان پنھنجي اسمارٽ فون تي ھن آپريٽنگ سسٽم جي مدد سان نوان پروگرام شامل ڪري سگھو ٿا، اھڙي طرح ان جي ڪارڪردگيءَ کي وڌايو. ڪوڊ استعمال ڪندي، ڪلاس کي ھيٺ ڏنل بيان ڪري سگھجي ٿو:
public class Smartphone extends CellPhone {

    private String operationSystem;

    public Smartphone(int year, int hour, String operationSystem) {
        super(year, hour);
        this.operationSystem = operationSystem;
    }
public void install(String program){
    System.out.println("Installing" + program + "For" + operationSystem);
}

}
جئين توهان ڏسي سگهو ٿا، Smartphoneاسان ڪلاس کي بيان ڪرڻ لاء تمام ننڍڙو نئون ڪوڊ ٺاهيو، پر اسان کي نئين ڪارڪردگي سان نئين ڪلاس ملي. OOP وراثت واري اصول کي استعمال ڪندي خاص طور تي ڪوڊ جي مقدار کي گھٽائي سگھي ٿو، ۽ ان ڪري پروگرامر جي ڪم کي آسان بڻائي ٿو.

پوليمورفيزم

جيڪڏهن اسان سڀني فون ماڊلز تي نظر رکون ٿا، پوء، ماڊل جي ظاهري ۽ ڊزائن ۾ اختلافن جي باوجود، اسان انهن ۾ ڪجهه عام رويي جي نشاندهي ڪري سگهون ٿا - اهي سڀئي وصول ڪري سگهن ٿا ۽ ڪال ڪري سگهن ٿا ۽ ڪنٽرول بٽڻ جو هڪ صاف ۽ سادي سيٽ آهي. OOP جي بنيادي اصولن مان هڪ کي لاڳو ڪرڻ، جيڪو اسان کي اڳ ۾ ئي معلوم آهي، پروگرامنگ جي اصطلاحن ۾ تجريد، اسان اهو چئي سگهون ٿا ته فون اعتراض هڪ عام انٽرفيس آهي. تنهن ڪري، فون استعمال ڪندڙ بلڪل آرام سان مختلف ماڊل استعمال ڪري سگھن ٿا ساڳي ڪنٽرول بٽڻ (مڪينيڪل يا ٽچ) استعمال ڪندي، بغير ڊوائيس جي ٽيڪنيڪل تفصيلن ۾ وڃڻ کان سواء. تنهن ڪري، توهان مسلسل سيل فون استعمال ڪندا آهيو، ۽ توهان آساني سان ان جي لينڊ لائن هم منصب کان ڪال ڪري سگهو ٿا. او او پي ۾ اهو اصول جڏهن ڪو پروگرام هڪ ئي انٽرفيس سان شيون استعمال ڪري سگهي ٿو بغير ڪنهن شئي جي اندروني ڍانچي بابت ان کي پوليمورفيزم چئبو آهي . اچو ته تصور ڪريو ته اسان جي پروگرام ۾ اسان کي هڪ صارف جي وضاحت ڪرڻ جي ضرورت آهي جيڪو ڪنهن ٻئي صارف کي فون ڪرڻ لاء ڪنهن به فون ماڊل استعمال ڪري سگهي ٿو. هتي اهو ڪيئن ڪجي:
public class User {
    private String name;

    public User(String name) {
        this.name = name;
            }

    public void callAnotherUser(int number, AbstractPhone phone){
// here it is polymorphism - using the abstract type AbstractPhone phone in the code!
        phone.call(number);
    }
}
 }
هاڻي اچو ته مختلف فون ماڊلز جي وضاحت ڪريون. پهرين فون ماڊلز مان هڪ:
public class ThomasEdisonPhone extends AbstractPhone {

public ThomasEdisonPhone(int year) {
    super(year);
}
    @Override
    public void call(int outputNumber) {
        System.out.println("Turn the Handle");
        System.out.println("Give me the phone number, sir");
    }

    @Override
    public void ring(int inputNumber) {
        System.out.println("Phone calls");
    }
}
باقاعده لينڊ لائن فون:
public class Phone extends AbstractPhone {

    public Phone(int year) {
        super(year);
    }

    @Override
    public void call(int outputNumber) {
        System.out.println("I'm calling a number" + outputNumber);
    }

    @Override
    public void ring(int inputNumber) {
        System.out.println("Phone calls");
    }
}
۽ آخرڪار، هڪ بهترين وڊيو فون:
public class VideoPhone extends AbstractPhone {

    public VideoPhone(int year) {
        super(year);
    }
    @Override
    public void call(int outputNumber) {
        System.out.println("I connect a video channel for the subscriber" + outputNumber );
    }
    @Override
    public void ring(int inputNumber) {
        System.out.println("You have an incoming video call..." + inputNumber);
    }
  }
اچو ته طريقي ۾ شيون ٺاهيون main()۽ طريقي کي جانچيون callAnotherUser:
AbstractPhone firstPhone = new ThomasEdisonPhone(1879);
AbstractPhone phone = new Phone(1984);
AbstractPhone videoPhone=new VideoPhone(2018);
User user = new User("Andrey");
user.callAnotherUser(224466,firstPhone);
// Rotate the knob
// Tell me the number of the subscriber, sir
user.callAnotherUser(224466,phone);
//Call number 224466
user.callAnotherUser(224466,videoPhone);
//I connect the video channel for subscriber 224466
ساڳئي طريقي کي اعتراض تي سڏڻ سان user، اسان مختلف نتيجا حاصل ڪيا. callھڪڙي طريقي جي اندر ھڪڙي مخصوص طريقي جي عمل جي چونڊ کي callAnotherUserمتحرڪ طور تي پروگرام جي عمل دوران ڪالنگ اعتراض جي مخصوص قسم جي بنياد تي ٺاھيو ويو. هي پوليمورفيزم جو بنيادي فائدو آهي - پروگرام جي عمل دوران عمل درآمد جو انتخاب. مٿي ڏنل فون ڪلاس جي مثالن ۾، اسان استعمال ڪيو طريقو اوور رائيڊنگ، هڪ ٽيڪنڪ جيڪا بيس ڪلاس ۾ بيان ڪيل طريقي جي عمل کي تبديل ڪري ٿي بغير طريقي جي دستخط کي تبديل ڪرڻ جي. اهو بنيادي طور تي هڪ طريقو متبادل آهي، ۽ اهو نئون طريقو آهي جيڪو ذيلي ڪلاس ۾ بيان ڪيو ويو آهي جنهن کي سڏيو ويندو آهي جڏهن پروگرام هلندو آهي. عام طور تي، جڏهن ڪنهن طريقي کي اوور رائيڊ ڪيو ويندو آهي، تشريح استعمال ڪئي ويندي آهي @Override، جيڪا مرتب ڪندڙ کي ٻڌائي ٿي ته اوور رائڊ ٿيل ۽ اوور رائڊنگ طريقن جي نشانين کي چيڪ ڪري. نتيجي طور ، ان ڳالهه کي يقيني بڻائڻ لاءِ ته توهان جي پروگرام جو انداز OOP جي تصور ۽ OOP جاوا جي اصولن سان مطابقت رکي ٿو، انهن تجويزن تي عمل ڪريو:
  • اعتراض جي مکيه خاصيتن کي اجاگر؛
  • عام ملڪيتن ۽ رويي کي نمايان ڪريو ۽ شيون ٺاهڻ وقت وراثت استعمال ڪريو؛
  • شيون بيان ڪرڻ لاءِ تجريدي قسم استعمال ڪريو؛
  • ڪلاس جي اندروني عمل سان لاڳاپيل طريقن ۽ شعبن کي هميشه لڪائڻ جي ڪوشش ڪريو.
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION