Composite data type
کمپیوٹر سائنس میں، ایک جامع ڈیٹا ٹائپ یا مرکب ڈیٹا ٹائپ کوئی بھی ڈیٹا ٹائپ ہے جسے پروگرامنگ زبان کے ابتدائی ڈیٹا ٹائپ اور دیگر جامع اقسام کا استعمال کرتے ہوئے کسی پروگرام میں بنایا جا سکتا ہے۔ اسے بعض اوقات ڈھانچہ یا مجموعی قسم کہا جاتا ہے، حالانکہ مؤخر الذکر اصطلاح صفوں، فہرستوں وغیرہ کا بھی حوالہ دے سکتی ہے۔ مرکب قسم کی تعمیر کے عمل کو کمپوزیشن کہا جاتا ہے۔ جامع ڈیٹا کی اقسام اکثر اسکیلر متغیرات سے متصادم ہوتی ہیں۔ سی/سی + + ڈھانچے اور کلاسیں اے ڈھانچہ سی اور سی + + کا ایک جامع قسم کا تصور ہے، ایک ڈیٹا ٹائپ جو لیبل والے فیلڈز یا ممبروں کے ایک مقررہ سیٹ کو تشکیل دیتا ہے۔ یہ اس وجہ سے کہا جاتا ہے کہ ان کا اعلان کرنے میں استعمال ہونے والے اسٹرک کلیدی لفظ کی وجہ سے، جو کہ ساخت کے لیے مختصر ہے یا، زیادہ واضح طور پر، صارف کی طرف سے متعین ڈیٹا ڈھانچہ ہے۔ سی + + میں، اسٹرک اور کلاس کے درمیان واحد فرق ڈیفالٹ رسائی کی سطح ہے، جو کلاسوں کے لیے نجی اور اسٹرک کے لیے عوامی ہے۔ نوٹ کریں کہ اگرچہ کلاسز اور کلاس کا کلیدی لفظ C + + میں مکمل طور پر نیا تھا، لیکن C پروگرامنگ زبان میں پہلے سے ہی خام قسم کے ڈھانچے تھے۔ تمام ارادوں اور مقاصد کے لیے، سی + + ڈھانچے سی ڈھانچے کا ایک سپر سیٹ بناتے ہیں: عملی طور پر تمام درست سی ڈھانچے ایک ہی سیمنٹکس کے ساتھ درست سی + + ڈھانچے ہوتے ہیں۔ اعلامیہ ساخت کا اعلامیہ شعبوں کی ایک فہرست پر مشتمل ہوتا ہے، جن میں سے ہر ایک کی کوئی بھی قسم ہو سکتی ہے۔ کسی سٹرک آبجیکٹ کے لیے درکار کل اسٹوریج تمام فیلڈز کی اسٹوریج کی ضروریات کے علاوہ کسی بھی اندرونی پیڈنگ کا مجموعہ ہے۔ مثال کے طور پر: اسٹرک اکاؤنٹ {int اکاؤنٹ _ نمبر ؛ چار * فرسٹ _ نام ؛ چار * لاسٹ _ نام ؛ فلوٹ بیلنس ؛} ؛ ایک قسم کی وضاحت کرتا ہے، جسے اسٹرک اکاؤنٹ کہا جاتا ہے۔ اس قسم کا نیا متغیر بنانے کے لیے، ہم سٹرک اکاؤنٹ مائی اکاؤنٹ لکھ سکتے ہیں ؛ جس میں ایک انٹیجر جزو ہوتا ہے، جس تک رسائی myAccount.account_number کے ذریعے ہوتی ہے، اور ایک فلوٹنگ پوائنٹ جزو ہوتا ہے، جس تک رسائی myAccount.balance کے ذریعے ہوتی ہے، ساتھ ہی ساتھ فرسٹ _ نیم اور لاسٹ _ نیم اجزاء بھی ہوتے ہیں۔ ڈھانچہ مائی اکاؤنٹ چاروں اقدار پر مشتمل ہے، اور چاروں فیلڈز کو آزادانہ طور پر تبدیل کیا جا سکتا ہے۔ چونکہ کوڈ میں بار بار اسٹرک اکاؤنٹ لکھنا مشکل ہو جاتا ہے، اس لیے اسٹرک کے لیے زیادہ آسان مترادف فراہم کرنے کے لیے سی کوڈ میں ٹائپ ڈیف بیان دیکھنا کوئی غیر معمولی بات نہیں ہے۔ تاہم، کچھ پروگرامنگ سٹائل گائیڈز اس کے خلاف مشورہ دیتے ہیں، یہ دعوی کرتے ہوئے کہ یہ قسم کو مبہم بنا سکتا ہے۔ مثال کے طور پر: ٹائپ ڈیف اسٹرک اکاؤنٹ _ {int اکاؤنٹ _ نمبر ؛ چار * فرسٹ _ نام ؛ چار * لاسٹ _ نام ؛ فلوٹ بیلنس ؛} اکاؤنٹ ؛ سی + + کوڈ میں، ٹائپ ڈیف کی ضرورت نہیں ہے کیونکہ اسٹرک کا استعمال کرتے ہوئے بیان کردہ اقسام پہلے سے ہی باقاعدہ نیم اسپیس کا حصہ ہیں، لہذا اس قسم کو یا تو اسٹرک اکاؤنٹ یا صرف اکاؤنٹ کہا جا سکتا ہے۔ ایک اور مثال کے طور پر، ایک سہ جہتی ویکٹر جامع قسم جو فلوٹنگ پوائنٹ ڈیٹا ٹائپ کا استعمال کرتی ہے اس کے ساتھ بنائی جا سکتی ہے: اسٹرک ویکٹر {فلوٹ x ؛ فلوٹ y ؛ فلوٹ z ؛} ؛ ویکٹر جامع قسم کے ساتھ ایک متغیر نامی رفتار کو ویکٹر رفتار قرار دیا جائے گا ؛ رفتار کے ممبروں تک ڈاٹ نوٹیشن کا استعمال کرتے ہوئے رسائی حاصل کی جائے گی۔ مثال کے طور پر، velocity.x = 5 ؛ رفتار کے x جزو کو 5 کے برابر مقرر کرے گا۔ اسی طرح، ایک رنگین ڈھانچہ اس کا استعمال کرتے ہوئے بنایا جا سکتا ہے: ساخت رنگ {غیر دستخط شدہ انٹ ریڈ ؛ غیر دستخط شدہ انٹ گرین ؛ غیر دستخط شدہ انٹ بلیو ؛} ؛ تھری ڈی گرافکس میں، آپ کو عام طور پر ہر سرے کی پوزیشن اور رنگ دونوں پر نظر رکھنی چاہیے۔ ایسا کرنے کا ایک طریقہ یہ ہوگا کہ پہلے بنائے گئے ویکٹر اور کلر کمپوزٹ اقسام کا استعمال کرتے ہوئے ورٹیکس کمپوزٹ ٹائپ بنایا جائے: اسٹرکچر ورٹیکس (ویکٹر پوزیشن ؛ رنگین رنگ) ؛ انسٹینٹیشن پہلے کی طرح اسی فارمیٹ کا استعمال کرتے ہوئے قسم کے اسٹرکچر ورٹیکس کا متغیر بنائیں: ورٹیکس v ؛ ممبر تک رسائی v کے اجزاء کو ویلیوز اس طرح تفویض کریں: v.position.x = 0.0 ؛ v.position.y = 1.5 ؛ v.position.z = 0.0 ؛ v.color.red = 128 ؛ v.color.green = 0 ؛ v.color.blue = 255 ؛ ابتدائی ذیلی قسم ساخت کا بنیادی استعمال پیچیدہ ڈیٹا ٹائپ کی تعمیر کے لیے ہوتا ہے، لیکن بعض اوقات اس کا استعمال قدیم ساختی ذیلی ٹائپنگ بنانے کے لیے کیا جاتا ہے۔ مثال کے طور پر، چونکہ سٹینڈرڈ سی کے لیے ضروری ہے کہ اگر دو ڈھانچوں میں ایک ہی ابتدائی فیلڈز ہوں، تو ان فیلڈز کو ایک ہی طرح سے پیش کیا جائے گا، کوڈ اسٹرکچر ifooo _ old _ stub {long x, y;} ؛ اسٹرکچر ifooo _ ورژن _ 42 {long x, y, z; چار * نام ؛ long a, b, c;} ؛ کالعدم آپریٹ _ آن _ ifoo (कट्टमै ifooo _ old _ stub *) ؛ اسٹرکچر ifooo _ ورژن _ 42s ؛۔ ۔ ۔ آپریٹ _ آن _ آئی ایف او (& s) ؛ صحیح طریقے سے کام کرے گا۔ ٹائپ سگنیچر ٹائپ سگنیچرز (یا فنکشن ٹائپز) قدیم اور جامع اقسام سے بنائے جاتے ہیں، اور جامع اقسام کی تعمیر کرتے وقت خود ہی اقسام کے طور پر کام کر سکتے ہیں: ٹائپ ڈیف اسٹرک (int x ؛ int y ؛) پوائنٹ ؛ ٹائپ ڈیف ڈبل (* میٹرک) (پوائنٹ p1، پوائنٹ p2) ؛ ٹائپ ڈیف اسٹرک (پوائنٹ سینٹر ؛ ڈبل ریڈیئس ؛ میٹرک میٹرک ؛) سرکل ؛ آبجیکٹ کمپوزیشن اسٹرک (C پروگرامنگ زبان) اسکیلر (ریاضی) حوالہ جات ڈیٹا ٹائپ تھیوری ٹائپ تھیوری آرٹیکلز مثال کے طور پر C کوڈ آرٹیکلز مثال کے طور پر C + + کوڈ کے ساتھ