نبیل
تکنیکی معاون
اس مضمون پر تبصرہ جات کے لیے اس ربط پر جائیں
تعارف
زیر نظر مضمون میں آبجیکٹ اورینٹڈ پروگرامنگ سے متعلق بنیادی معلومات فراہم کی جائیں گی اور اس کے ساتھ ساتھ وضاحت کے لیے کچھ سورس کوڈ بھی فراہم کیا جائے گا۔ آبجیکٹ اوینٹڈ پروگرامنگ، پروگرامنگ کے اس طریقے کا نام ہے جس کی بنیاد آبجیکٹس کے تصور پر رکھی گئی ہے۔ وہ پروگرامنگ کی زبانیں جن میں آبجیکٹ اورینٹڈ پروگرامنگ کی سپورٹ موجود ہوتی ہے، انہیں آجبیکٹ اوینٹڈ پروگرامنگ لینگویجز کہا جاتا ہے۔ اس کی مثال جاوا، سی پلس پلس اور سی شارپ وغیرہ ہیں جو کہ کمپائل کی جاتی ہیں۔ دوسری جانب سکرپٹنگ کی کئی زبانیں بھی آبجیکٹ اورینٹڈ پروگرامنگ کو سپورٹ کرتی ہیں جیسے کہ پائتھون، جاوا سکرپٹ، روبی اور پرل وغیرہ۔ اس مضمون میں پیش کیا گیا کوڈ جاوا پروگرامنگ زبان میں لکھا گیا ہے۔ پروگرامنگ کی اصطلاح میں آبجیکٹ ایسی ڈیٹا ٹائپ ہے جس میں ڈیٹا اور اس ڈیٹا پر عملیات کرنے والا کوڈ اکٹھے (encapsulate) کیے جاتے ہیں۔ یوں آبجیکٹس کسی بھی حقیقی دنیا کے تصور کو ڈیٹا اور کوڈ میں ماڈل کر سکتے ہیں۔ مثال کے طور پر ایک شکل (Figure) کارتیسی نظام (Cartesian System) کے کسی ایک پوائنٹ پر موجود ہوتی ہے اور اسے ڈرا کرنے کا کوئی ایک خاص طریقہ ہوتا ہے۔ اسے کوڈ کی شکل میں ذیل کے طریقے سے پیش کیا جا سکتا ہے:
بنیادی تصورات
کلاس (class)
بالا میں ایک Figure آبجیکٹ ٹائپ ڈکلیر کی گئی ہے جس کے لیے class کلیدی لفظ (key-word) استعمال کیا گیا ہے۔ اس طرز کی ڈیٹا ٹائپ جس میں اصل آبجیکٹس کریٹ یا تخلیق (instantiate) کرنے کا سانچہ (templtate) موجود ہوتا ہے، انہیں کلاس (class) کہا جاتا ہے۔ اتفاق سے تقریباً تمام آبجیکٹ اورینٹڈ پروگرامنگ لینگویجز میں کلاس ڈکلیر کرنے کے لیے class کی ورڈ ہی استعمال کیا جاتا ہے۔ بالا کی مثال میں قابل غور بات اس میں موجود ڈیٹا اور کوڈ کو یکجا کرنا ہے۔ کسی کلاس یا آبجیکٹ کے ڈیٹا ایلیمنٹس (عناصر) کو اس کے ڈیٹا ممبر کہا جاتا ہے جبکہ اس کے فنکشنز کو اس کے کوڈ ممبر یا میتھڈ (method) کہا جاتا ہے۔
آبجیکٹ (object)
جیسا کہ اوپر وضاحت کی جا چکی ہے کہ کسی آبجیکٹ کو کریٹ (create) کرنے کے لیے اس کی کلاس ڈیفنیشن کا استعمال کیا جاتا ہے۔ مثال کے طور پر ذیل میں دو Figure ٹائپ کے آبجیکٹ ڈکلیر کیے گئے ہیں:
یہاں new کی ورڈ کا استعمال نوٹ کریں۔ جاوا اور دوسری کئی پروگرامنگ لینگویجز میں new کے استعمال کے بعد ہی کسی آبجیکٹ کے لیے میموری میں جگہ بنائی جاتی ہے جسے میموری ایلوکیشن (memory allocation) بھی کہا جاتا ہے۔ بالا کی مثال سے دیکھا جا سکتا ہے کہ کس طرح ایک کلاس ڈیفینیشن کو استعمال کرکے آبجیکٹس تخیلق کیے جا رہے ہیں۔ آبجیکٹس کریٹ کرنے کے بعد ان کے ڈیٹا اور کوڈ ممبرز کو استعمال کیا جا سکتا ہے۔ جاوا میں کسی آبجیکٹ کے کوڈ یا ڈیٹا ممبر تک رسائی حاصل کرنے کے لیے اس آبجیکٹ کے نام کے بعد ایک نقطہ یا ڈاٹ (dot) لکھا جاتا ہے اور اس کے بعد مطلوبہ کوڈ یا ڈیٹا ممبر کا نام لکھا جاتا ہے۔ آبجیکٹس کے ڈیٹا اور کوڈ ممبرز تک رسائی کے اس طریقے کو سکوپ ریزلیوشن (scope resolution) بھی کہا جاتا ہے۔ مثال کے طور پر ذیل کی مثال میں figure1 آبجیکٹ کے کوآرڈینیٹس سیٹ کیے جا رہے ہیں:
جبکہ ذیل کی مثال میں figure2 کے Draw میتھڈ کو کال کیا جا رہا ہے:
تعارف
زیر نظر مضمون میں آبجیکٹ اورینٹڈ پروگرامنگ سے متعلق بنیادی معلومات فراہم کی جائیں گی اور اس کے ساتھ ساتھ وضاحت کے لیے کچھ سورس کوڈ بھی فراہم کیا جائے گا۔ آبجیکٹ اوینٹڈ پروگرامنگ، پروگرامنگ کے اس طریقے کا نام ہے جس کی بنیاد آبجیکٹس کے تصور پر رکھی گئی ہے۔ وہ پروگرامنگ کی زبانیں جن میں آبجیکٹ اورینٹڈ پروگرامنگ کی سپورٹ موجود ہوتی ہے، انہیں آجبیکٹ اوینٹڈ پروگرامنگ لینگویجز کہا جاتا ہے۔ اس کی مثال جاوا، سی پلس پلس اور سی شارپ وغیرہ ہیں جو کہ کمپائل کی جاتی ہیں۔ دوسری جانب سکرپٹنگ کی کئی زبانیں بھی آبجیکٹ اورینٹڈ پروگرامنگ کو سپورٹ کرتی ہیں جیسے کہ پائتھون، جاوا سکرپٹ، روبی اور پرل وغیرہ۔ اس مضمون میں پیش کیا گیا کوڈ جاوا پروگرامنگ زبان میں لکھا گیا ہے۔ پروگرامنگ کی اصطلاح میں آبجیکٹ ایسی ڈیٹا ٹائپ ہے جس میں ڈیٹا اور اس ڈیٹا پر عملیات کرنے والا کوڈ اکٹھے (encapsulate) کیے جاتے ہیں۔ یوں آبجیکٹس کسی بھی حقیقی دنیا کے تصور کو ڈیٹا اور کوڈ میں ماڈل کر سکتے ہیں۔ مثال کے طور پر ایک شکل (Figure) کارتیسی نظام (Cartesian System) کے کسی ایک پوائنٹ پر موجود ہوتی ہے اور اسے ڈرا کرنے کا کوئی ایک خاص طریقہ ہوتا ہے۔ اسے کوڈ کی شکل میں ذیل کے طریقے سے پیش کیا جا سکتا ہے:
کوڈ:
class Figure
{
// data members
int x_coordinate;
int y_coordinate;
// function members or methods
function Figure()
{
x_coordinate= 0;
y_coordinate= 0;
}
function Draw(intx, int y)
{
// actual implementation
...
}
}
کلاس (class)
بالا میں ایک Figure آبجیکٹ ٹائپ ڈکلیر کی گئی ہے جس کے لیے class کلیدی لفظ (key-word) استعمال کیا گیا ہے۔ اس طرز کی ڈیٹا ٹائپ جس میں اصل آبجیکٹس کریٹ یا تخلیق (instantiate) کرنے کا سانچہ (templtate) موجود ہوتا ہے، انہیں کلاس (class) کہا جاتا ہے۔ اتفاق سے تقریباً تمام آبجیکٹ اورینٹڈ پروگرامنگ لینگویجز میں کلاس ڈکلیر کرنے کے لیے class کی ورڈ ہی استعمال کیا جاتا ہے۔ بالا کی مثال میں قابل غور بات اس میں موجود ڈیٹا اور کوڈ کو یکجا کرنا ہے۔ کسی کلاس یا آبجیکٹ کے ڈیٹا ایلیمنٹس (عناصر) کو اس کے ڈیٹا ممبر کہا جاتا ہے جبکہ اس کے فنکشنز کو اس کے کوڈ ممبر یا میتھڈ (method) کہا جاتا ہے۔
آبجیکٹ (object)
جیسا کہ اوپر وضاحت کی جا چکی ہے کہ کسی آبجیکٹ کو کریٹ (create) کرنے کے لیے اس کی کلاس ڈیفنیشن کا استعمال کیا جاتا ہے۔ مثال کے طور پر ذیل میں دو Figure ٹائپ کے آبجیکٹ ڈکلیر کیے گئے ہیں:
کوڈ:
Figure figure1= new Figure();
Figure figure2= new Figure();
یہاں new کی ورڈ کا استعمال نوٹ کریں۔ جاوا اور دوسری کئی پروگرامنگ لینگویجز میں new کے استعمال کے بعد ہی کسی آبجیکٹ کے لیے میموری میں جگہ بنائی جاتی ہے جسے میموری ایلوکیشن (memory allocation) بھی کہا جاتا ہے۔ بالا کی مثال سے دیکھا جا سکتا ہے کہ کس طرح ایک کلاس ڈیفینیشن کو استعمال کرکے آبجیکٹس تخیلق کیے جا رہے ہیں۔ آبجیکٹس کریٹ کرنے کے بعد ان کے ڈیٹا اور کوڈ ممبرز کو استعمال کیا جا سکتا ہے۔ جاوا میں کسی آبجیکٹ کے کوڈ یا ڈیٹا ممبر تک رسائی حاصل کرنے کے لیے اس آبجیکٹ کے نام کے بعد ایک نقطہ یا ڈاٹ (dot) لکھا جاتا ہے اور اس کے بعد مطلوبہ کوڈ یا ڈیٹا ممبر کا نام لکھا جاتا ہے۔ آبجیکٹس کے ڈیٹا اور کوڈ ممبرز تک رسائی کے اس طریقے کو سکوپ ریزلیوشن (scope resolution) بھی کہا جاتا ہے۔ مثال کے طور پر ذیل کی مثال میں figure1 آبجیکٹ کے کوآرڈینیٹس سیٹ کیے جا رہے ہیں:
کوڈ:
figure1.x_coordinate=10;
figure1.y_coordinate=20;
جبکہ ذیل کی مثال میں figure2 کے Draw میتھڈ کو کال کیا جا رہا ہے:
کوڈ:
figure2.Draw(40, 50);