انتقل إلى المحتوى الرئيسي

الأصناف

أبجد هي لغةٌ كائنية، أي بإمكانك انشاء أنواع بيانات خاصة!

الأصناف تجسد هذه الأنواع، بحيث يُعرف المُبرمج نوعًا (صنفًا) ذات خصائص معينة، بحيث يكون لكل قيمة من هذا النوع هذه الخصائص. كما يمكن تعريف دالات خاصة بكل نوع.

الصياغة

تعريف الصنف

صياغة تعريف صنف تكون كالتالي:

  1. الكلمة المفتاح صنف
  2. اسم الصنف
  3. فتح حاوية {
  4. تعريفات لمتغيرات، ثوابت، دالات ومنشئات
  5. إغلاق الحاوية }

مثال

المثال التالي يعرف صنفًا اسمه انسان والذي يضم:

  • متغيرين اثنين: المقطع اسم والرقم عمر
  • مُعدلتين: دالّتين هدفهما تعديل قيمة كل من المتغيرين المذكورين
صنف إنسان {

متغير مقطع اسم؛
متغير رقم عمر؛

دالة تعديل_الاسم(مقطع اسم_): لاشيء {
اسم = اسم_؛
}

دالة تعديل_العمر(رقم عمر_): لاشيء {
عمر = عمر_؛
}

}

لتعريف متغير من نوع انسان، يمكن القيام بالتالي:

متغير انسان محمد = انشئ انسان()؛
محمد.تعديل_الاسم("محمد")؛
محمد.تعديل_العمر(22)؛
أكتب("الاسم: " + محمد.اسم + "، العمر: " + محمد.عمر)؛

كما يمكنكم أن تروا، لدينا الآن نوعٌ خاص اسمه انسان، وكما في المثال أعلاه، قمنا بتعريف متغير جديد من هذا النوع.

بعدما نقوم بذلك، يمننا الوصول إلى جميع القيم والمؤشرات المُعرّفة داخل الصنف عن طريق المتغير الذي انشأناه، وذلك باستعمال النقطة .

تعريف مُنشئ

لانشاء قيمة من الصنف، نحتاج إلى تعريف منشئ عند تعريف الصنف. المنشئ هو دالة خاصة بالأصناف، والهدف منها تحديد القيم الأولية للمؤشرات داخل الصنف عند انشاء متغير منه. إذا لم يوجد تعريف لمنشئ لا يأخذ أي معطيات، يمكن انشاء متغير من الصنف عن طريق استعمال منشئ غيابي والذي ا يقوم بتحديد أي قيمة (كالمثال في الأعلى).

لتعريف منشئ تكون الصياغة كالتالي:

  1. الكلمة المفتاح منشئ
  2. فتح قوس (
  3. عدد من المعطيات (كما في تعريف الدالّات)
  4. غلق قوس )
  5. فتح حاوية {
  6. كود
  7. إغلاق حاوية }

مثال

مثال على منشئ للصنف المُعرف أعلاه:

صنف إنسان {

متغير مقطع اسم؛
متغير رقم عمر؛

منشئ(مقطع اسم_، رقم عمر_) {
اسم = اسم_؛
عمر = عمر_؛
}

}

كما ترون، يمكننا تعريف قيم المتغيرات مباشرة عند انشائ متغير من الصنف وذلك عن طريق المنشئ.

الآن، لتعريف متغير من نوع انسان:

متغير انسان محمد = انشئ انسان("محمد"، 22)؛
أكتب("الاسم: " + محمد.اسم + "، العمر: " + محمد.عمر)؛

تعريف عدة منشئات

يمكنك تعريف أكثر من منشئ واحد للصنف شرط أن لا يتضاربوا من ناحية ترتيب وعدد المعطيات:

مثال

صنف إنسان {

متغير مقطع اسم؛
متغير رقم عمر؛

منشئ(مقطع اسم_، رقم عمر_) {
اسم = اسم_؛
عمر = عمر_؛
}

منشئ(رقم عمر_) {
اسم = "بلا اسم"؛
عمر = عمر_؛
}

}

متغير انسان محمد = انشئ انسان("محمد"، 22)؛
أكتب("الاسم: " + محمد.اسم + "، العمر: " + محمد.عمر)؛

متغير انسان أحمد = انشئ انسان(31)؛
أكتب("الاسم: " + أحمد.اسم + "، العمر: " + أحمد.عمر)؛

انشاء قيمة من الصنف

صياغة إنشاء قيمة من نوع صنف تكون كالتالي:

  1. الكلمة المفتاح انشئ
  2. اسم الصنف
  3. فتح قوس (
  4. المُعطيات التي يأخذها المنشئ، منفصلة بفاصلة
  5. إغلاق القوس )
  6. فاصلة منقوطة ؛

الوصول إلى دالات الصنف

للوصول إلى دالات متغير من نوع صنف معين، كل ما عليك فعله هو كتابة اسم المتغير، متبوعًا بنقطة، ومن ثم اسم الدالة المرغوبة، مُعطيًا إياها القيم التي تحتاجها.

الحواصل والمُعدّلات

للحصول على قيمة الخصائص في صنف معين، يُحبذ استعمال دالات داخلية لذلك، بدلًا من الوصول إلى الخاصية مباشرة.

هناك دالّتان مُتعارفٌ استعمالهُما في هذا السياق:

  • الحواصل: وهي دالّات تُرجع قيمة الخاصية.
  • المُعدّلات: وهي دالّات تُعدّل قيم الخاصية.