مرکزی مواد پر جائیں
ماڈیول 2 · سبق 1 از 2کورس میں 3/14~12 min
ماڈیول اسباق (1/2)

کلاسز اور آبجیکٹ

جاوا ایک زبان ہے جو آبجیکٹ اورینٹڈ پروگرامنگ (OOP) پر مرکوز ہے۔ OOP میں، ہم اشیاء کا استعمال کرتے ہوئے حقیقی دنیا کو ماڈل بناتے ہیں۔ کسی شے کی حالت (ڈیٹا) اور طرز عمل (اعمال) ہوتے ہیں۔

کلاسز اور آبجیکٹ

  • کلاس: یہ ایک بلیو پرنٹ (یا ٹیمپلیٹ) ہے جو کسی شے کی قسم کی خصوصیات اور رویے کی وضاحت کرتا ہے۔
  • آبجیکٹ: یہ کلاس سے تخلیق کردہ ایک ٹھوس مثال ہے۔

مثال کے طور پر، اگر Car کلاس ہے تو گیراج میں موجود آپ کی کار اصل چیز ہے۔

مثال کے میدان اور تعمیر کنندگان

کلاس کے اندر موجود ڈیٹا کو انسٹینس فیلڈز (یا اوصاف) کہا جاتا ہے۔ کسی چیز کی تخلیق کے وقت اس کی حالت شروع کرنے کے لیے، ہم ایک خاص طریقہ استعمال کرتے ہیں جسے کنسٹرکٹر کہتے ہیں۔

کنسٹرکٹر کا کلاس جیسا ہی نام ہوتا ہے اور اس کی واپسی کی کوئی قسم نہیں ہوتی ہے (یہاں تک کہ void بھی نہیں)۔

Java
class Dog {
    // Instance fields
    String name;
    int age;

    // Constructor
    public Dog(String name, int age) {
        this.name = name; // 'this' refers to the current object's field
        this.age = age;
    }
}

new کے ساتھ ایک آبجیکٹ بنانا

میموری میں ایک آبجیکٹ بنانے کے لیے، ہم کلاس کنسٹرکٹر کے بعد new کلیدی لفظ استعمال کرتے ہیں:

Java
public class Main {
    public static void main(String[] args) {
        // Creating a Dog object
        Dog myDog = new Dog("Fido", 3);

        // Accessing fields
        System.out.println(myDog.name + " is " + myDog.age + " years old.");
    }
}

this حوالہ

جاوا میں this کلیدی لفظ موجودہ آبجیکٹ کی طرف اشارہ کرتا ہے جس پر کنسٹرکٹر یا طریقہ کار کو انجام دیا جا رہا ہے۔ یہ بنیادی طور پر ابہام سے بچنے کے لیے استعمال ہوتا ہے جب کنسٹرکٹر پیرامیٹرز کا نام آبجیکٹ کے مثالی فیلڈز (متغیر شیڈونگ) جیسا ہوتا ہے:

Java
class User {
    String username;

    public User(String username) {
        this.username = username; // this.username is the instance field, username is the parameter
    }
}

میموری ایلوکیشن: اسٹیک بمقابلہ ہیپ

یہ سمجھنا کہ جاوا میموری کو کس طرح مختص کرتا ہے ضروری ہے:

  1. اسٹیک: یہ ایک تیز اور منظم میموری ایریا ہے جہاں پرائمیٹو متغیرات اور آبجیکٹ ریفرینسز (میموری ایڈریس) لوکل ٹو طریقوں کو محفوظ کیا جاتا ہے۔
  2. ہیپ: یہ ایک بڑا اور متحرک میموری کا علاقہ ہے جہاں اصل اشیاء کو مختص کیا جاتا ہے (new کلیدی لفظ کا استعمال کرتے ہوئے)۔

جب ہم اعلان کرتے ہیں Dog myDog = new Dog("Fido", 3);:

  • حوالہ myDog اسٹیک پر بنایا گیا ہے۔
  • اصل Dog آبجیکٹ اپنے ڈیٹا کے ساتھ ہیپ پر بنایا گیا ہے۔
  • myDog متغیر ہیپ پر آبجیکٹ کے مقام کی طرف اشارہ کرتا ہے۔

خود ہی آزمائیں۔

ورزش#java.m2.l1.e1
کوششیں: 0لوڈ ہو رہا ہے…

فیلڈ کا نام اور ایک مناسب کنسٹرکٹر شامل کرکے پرسن کلاس کو مکمل کریں۔ پھر، مرکزی طریقہ میں، ایلس نام کے ساتھ p کے نام سے ایک Person آبجیکٹ بنائیں۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

کلاس کے اندر `اسٹرنگ کا نام` لکھیں، کنسٹرکٹر کا اعلان کریں `پبلک پرسن (اسٹرنگ کا نام) { this.name = name; }` اور اسے `نئے شخص ('ایلس')'' کے ساتھ انسٹیٹیوٹ کریں۔

3 کوششوں کے بعد حل دستیاب ہے۔

ورزش#java.m2.l1.e2
کوششیں: 0لوڈ ہو رہا ہے…

فیلڈز ٹائٹل (اسٹرنگ) اور پیجز (انٹ) کے ساتھ ایک کتاب کی کلاس بنائیں، ایک مکمل کنسٹرکٹر، اور مرکزی طریقہ میں موبی ڈک اور 600 صفحات کے عنوان کے ساتھ b نام کی کتاب کو فوری بنائیں۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

کتاب میں دونوں فیلڈز کی وضاحت کرنا یاد رکھیں، انہیں کنسٹرکٹر میں نقشہ بنائیں `this.title = title؛` اور `this.pages = pages;`، اور `new Book('Moby Dick', 600)` استعمال کریں۔

3 کوششوں کے بعد حل دستیاب ہے۔

ورزش#java.m2.l1.e3
کوششیں: 0لوڈ ہو رہا ہے…

فیلڈز کے نام (سٹرنگ) اور قیمت (ڈبل) کے ساتھ ایک پروڈکٹ کلاس بنائیں، اور ایک کنسٹرکٹر جو دونوں فیلڈز کو شروع کرے۔ مرکزی طریقہ میں، پی کے نام سے ایک پروڈکٹ آبجیکٹ بنائیں جس کا نام لیپ ٹاپ اور قیمت 999.99 ہے۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

پروڈکٹ میں `اسٹرنگ کا نام؛` اور `ڈبل پرائس` فیلڈز کا اعلان کریں، انہیں کنسٹرکٹر میں `this.name = name;` اور `this.price = price;` کے ساتھ تفویض کریں، اور آخر میں مین طریقہ میں آبجیکٹ بنائیں۔

3 کوششوں کے بعد حل دستیاب ہے۔