رسم بياني للمقارنة
أساس للمقارنة | بناء | صف دراسي |
---|---|---|
الأساسية | إذا لم يتم التصريح عن محدد الوصول ، فكل الأعضاء هم "عام". | إذا لم يتم التصريح عن محدد الوصول ، فكل الأعضاء هم "خاصون" بشكل افتراضي. |
إعلان | struct structure_name { type struct_element 1؛ type struct_element 2؛ type struct_element 3؛ . . . }؛ | class class_name { عضو البيانات ؛ وظيفة العضو ؛ }؛ |
حتة | يسمى "البنية" باسم "متغير البنية". | يسمى "الطبقة" باسم "الكائن". |
تعريف الهيكل
البنية هي مجموعة من المتغيرات لأنواع البيانات غير المتشابهة ، جميعها مشار إليها باسم واحد. يقوم بيان الهيكل بتشكيل قالب يتم استخدامه لإنشاء نسخة من البنية. أعلن الهيكل على النحو التالي.
الشق التركيبي {type struct_element1؛ type struct_element2؛ اكتب struct_element3؛ . . . } variable1 ، variable2 ،. . ؛
تُعرّف الكلمة الأساسية 'struct' إلى المحول البرمجي بأنه يتم الإعلان عن بنية. يمثل "sname" الاسم المعطى للهيكل. يتم إنهاء تصريح الهيكل دائمًا بفاصلة منقوطة ، حيث يتم اعتباره بيانًا. يمكنك الإعلان عن مثيلات البنية قبل انتهائها كما هو في الكود أعلاه (variable1، variable2) أو يمكنك إعلان مثال البنية في main () ، عن طريق كتابة اسم المثيل مسبوقًا باسم الهيكل.
// سبيل المثال. main () {sname S1، S2؛ }
هنا S1 و S2 هي حالات الهيكل. تسمى مثيلات البنية "متغير البنية". يمكن الوصول إلى العنصر المعلن داخل هيكل البنية من خلال المتغيرات الهيكلية من خلال استخدام عامل نقطة (.).
// example S1. struct_element1.
- يمكن أيضًا إنشاء مصفوفة البنية ، لهذا ، تحتاج أولاً إلى إعلان بنية ثم إعلان صفيف من هذا النوع.
// sample struct sname sarray [10]؛
تقوم العبارة أعلاه بإنشاء مصفوفة باسم "sarray" تحتوي على عشرة متغيرات ، ويتم تنظيم كل متغير كما هو محدد في "sname".
- يمكنك تمرير عضو بنية إلى دالة ، ويمكنك تمرير بنية بالكامل إلى دالة.
- مثل ، مؤشر صحيح ، مؤشر الصفيف ، مؤشر البنية يمكن أيضا أن يعلن عن طريق وضع "*" في مقدمة اسم متغيرات البنية.
// sample struct sname * S1؛
ملحوظة:
يتم تخزين عناصر "البنية" في موقع مجاور للذاكرة.
تعريف الطبقة
يحدد Class في OOP نوعًا جديدًا يحتوي على أعضاء البيانات ووظائف الأعضاء ، والتي تستخدم للوصول إلى أعضاء البيانات في الفصل الدراسي. تُسمى حالات الفئات "كائنات" لكل منها نفس التنظيم كفصل. الطبقة هي تجريد منطقي ، في حين أن الكائن له وجود مادي. يشبه الفصل بنياً الهيكل. يمكن الإعلان عن الفئة على النحو التالي.
class class_name {أعضاء البيانات الخاصة ووظائف الأعضاء. access_specifier type data_member؛ اكتب mem_funct (قائمة المعلمات) {. . }} قائمة الكائنات؛
هنا ، الطبقة هي الكلمة الأساسية التي تعلن المحول البرمجي أنه تم إعلان فئة. تتمثل الميزة الرئيسية لـ OOP في إخفاء البيانات والتي يتم إنجازها من خلال توفير ثلاثة محددات وصول تكون "عامة" و "خاصة" و "محمية". إذا لم تقم بتحديد أي محدد وصول في الفصل أثناء التصريح بأعضاء البيانات أو وظائف الأعضاء ، فكلها تعتبر خاصة بشكل افتراضي. يسمح محدد الوصول العام بالوصول إلى الوظائف أو البيانات من قِبل أجزاء أخرى من البرنامج. لا يمكن الوصول إلى أعضاء القطاع الخاص إلا من قِبل عضو من هذه الفئة فقط. يتم تطبيق محدد الوصول المحمي أثناء التوريث. بمجرد أن تقوم بتعريف محدد الوصول ، لا يمكن تغييره في البرنامج بأكمله.
الأشياء ليست سوى مثيل الطبقات. يتم الوصول إلى أعضاء الفئة بواسطة كائن من نفس الفئة باستخدام عامل نقطة (.).
//object.mem_funct (الحجج) ؛
- يمكن أيضًا تمرير الكائن كوسيطة للدالة.
- يمكن أيضاً إنشاء المؤشر إلى كائن.
الاختلافات الرئيسية بين الهيكل والفئة
- والفرق الرئيسي بين الهياكل والفئات هو افتراضيا أن جميع أعضاء الهيكل علني في حين أن جميع أعضاء الصف يكونون بشكل خاص.
التشابه:
- في C ++ كل من البنية والفئة متساوية syntactically.
- يمكن لكل من الهيكل والفئة الإعلان عن بعض أعضاءهم الخاصة.
- يمكن استخدام اسم البنية أو الفئة كنوع مستقل.
- كل من الهيكل والطبقة تدعم آلية الميراث.
استنتاج:
كان للهيكل في C بعض القيود حيث أن البنية لا تسمح بإخفاء البيانات ، ولا يمكن التعامل مع نوع "البنية" مثل الأنواع المضمنة ، والبنى لا تدعم الميراث. هيكل في C ++ تغلب على هذه القيود. في C ++ ، تكون الفئات هي النسخة الموسعة من البنية. يجد المبرمج أنه من السهل استخدام الفئة للاحتفاظ بالبيانات وتشغيلها والهيكل فقط للاحتفاظ بالبيانات.