ماڈیول اسباق (1/2)
کلاسز اور آبجیکٹ
جاوا ایک زبان ہے جو آبجیکٹ اورینٹڈ پروگرامنگ (OOP) پر مرکوز ہے۔ OOP میں، ہم اشیاء کا استعمال کرتے ہوئے حقیقی دنیا کو ماڈل بناتے ہیں۔ کسی شے کی حالت (ڈیٹا) اور طرز عمل (اعمال) ہوتے ہیں۔
کلاسز اور آبجیکٹ
- کلاس: یہ ایک بلیو پرنٹ (یا ٹیمپلیٹ) ہے جو کسی شے کی قسم کی خصوصیات اور رویے کی وضاحت کرتا ہے۔
- آبجیکٹ: یہ کلاس سے تخلیق کردہ ایک ٹھوس مثال ہے۔
مثال کے طور پر، اگر Car کلاس ہے تو گیراج میں موجود آپ کی کار اصل چیز ہے۔
مثال کے میدان اور تعمیر کنندگان
کلاس کے اندر موجود ڈیٹا کو انسٹینس فیلڈز (یا اوصاف) کہا جاتا ہے۔ کسی چیز کی تخلیق کے وقت اس کی حالت شروع کرنے کے لیے، ہم ایک خاص طریقہ استعمال کرتے ہیں جسے کنسٹرکٹر کہتے ہیں۔
کنسٹرکٹر کا کلاس جیسا ہی نام ہوتا ہے اور اس کی واپسی کی کوئی قسم نہیں ہوتی ہے (یہاں تک کہ void بھی نہیں)۔
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 کلیدی لفظ استعمال کرتے ہیں:
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 کلیدی لفظ موجودہ آبجیکٹ کی طرف اشارہ کرتا ہے جس پر کنسٹرکٹر یا طریقہ کار کو انجام دیا جا رہا ہے۔ یہ بنیادی طور پر ابہام سے بچنے کے لیے استعمال ہوتا ہے جب کنسٹرکٹر پیرامیٹرز کا نام آبجیکٹ کے مثالی فیلڈز (متغیر شیڈونگ) جیسا ہوتا ہے:
class User {
String username;
public User(String username) {
this.username = username; // this.username is the instance field, username is the parameter
}
}میموری ایلوکیشن: اسٹیک بمقابلہ ہیپ
یہ سمجھنا کہ جاوا میموری کو کس طرح مختص کرتا ہے ضروری ہے:
- اسٹیک: یہ ایک تیز اور منظم میموری ایریا ہے جہاں پرائمیٹو متغیرات اور آبجیکٹ ریفرینسز (میموری ایڈریس) لوکل ٹو طریقوں کو محفوظ کیا جاتا ہے۔
- ہیپ: یہ ایک بڑا اور متحرک میموری کا علاقہ ہے جہاں اصل اشیاء کو مختص کیا جاتا ہے (
newکلیدی لفظ کا استعمال کرتے ہوئے)۔
جب ہم اعلان کرتے ہیں Dog myDog = new Dog("Fido", 3);:
- حوالہ
myDogاسٹیک پر بنایا گیا ہے۔ - اصل
Dogآبجیکٹ اپنے ڈیٹا کے ساتھ ہیپ پر بنایا گیا ہے۔ myDogمتغیر ہیپ پر آبجیکٹ کے مقام کی طرف اشارہ کرتا ہے۔
خود ہی آزمائیں۔
فیلڈ کا نام اور ایک مناسب کنسٹرکٹر شامل کرکے پرسن کلاس کو مکمل کریں۔ پھر، مرکزی طریقہ میں، ایلس نام کے ساتھ p کے نام سے ایک Person آبجیکٹ بنائیں۔
اشارہ دکھائیں۔
کلاس کے اندر `اسٹرنگ کا نام` لکھیں، کنسٹرکٹر کا اعلان کریں `پبلک پرسن (اسٹرنگ کا نام) { this.name = name; }` اور اسے `نئے شخص ('ایلس')'' کے ساتھ انسٹیٹیوٹ کریں۔
3 کوششوں کے بعد حل دستیاب ہے۔
فیلڈز ٹائٹل (اسٹرنگ) اور پیجز (انٹ) کے ساتھ ایک کتاب کی کلاس بنائیں، ایک مکمل کنسٹرکٹر، اور مرکزی طریقہ میں موبی ڈک اور 600 صفحات کے عنوان کے ساتھ b نام کی کتاب کو فوری بنائیں۔
اشارہ دکھائیں۔
کتاب میں دونوں فیلڈز کی وضاحت کرنا یاد رکھیں، انہیں کنسٹرکٹر میں نقشہ بنائیں `this.title = title؛` اور `this.pages = pages;`، اور `new Book('Moby Dick', 600)` استعمال کریں۔
3 کوششوں کے بعد حل دستیاب ہے۔
فیلڈز کے نام (سٹرنگ) اور قیمت (ڈبل) کے ساتھ ایک پروڈکٹ کلاس بنائیں، اور ایک کنسٹرکٹر جو دونوں فیلڈز کو شروع کرے۔ مرکزی طریقہ میں، پی کے نام سے ایک پروڈکٹ آبجیکٹ بنائیں جس کا نام لیپ ٹاپ اور قیمت 999.99 ہے۔
اشارہ دکھائیں۔
پروڈکٹ میں `اسٹرنگ کا نام؛` اور `ڈبل پرائس` فیلڈز کا اعلان کریں، انہیں کنسٹرکٹر میں `this.name = name;` اور `this.price = price;` کے ساتھ تفویض کریں، اور آخر میں مین طریقہ میں آبجیکٹ بنائیں۔
3 کوششوں کے بعد حل دستیاب ہے۔