View Categories

9.1. نبذة عن الأسماء والكائنات

2 دقيقة

مقدمة عن الفئات Classes #

تُتيح الفئات Classes وسيلةً لتجميع البيانات والوظائف معًا. إنشاء فئة جديدة يُنشئ نوعًا جديدًا من الكائنات، مما يسمح بإنشاء مثيلات جديدة من هذا النوع. يمكن ربط كل مثيل فئة بسمات للحفاظ على حالته. كما يمكن أن تحتوي مثيلات الفئة على دوال (مُعرّفة من قِبل فئتها) لتعديل حالتها.

مقارنةً بلغات البرمجة الأخرى، تُضيف آلية الفئات في بايثون فئاتٍ بحد أدنى من بناء الجملة والدلالات الجديدة. وهي مزيج من آليات الفئات الموجودة في ++C وModula-3. تُوفر فئات بايثون جميع الميزات القياسية للبرمجة كائنية التوجه: تسمح آلية وراثة الفئات بفئات أساسية متعددة، ويمكن للفئة المُشتقة تجاوز أي دوال من فئتها الأساسية أو فئاتها، ويمكن للطريقة استدعاء طريقة فئة أساسية تحمل الاسم نفسه. يمكن أن تحتوي الكائنات على كميات وأنواع عشوائية من البيانات. وكما هو الحال مع الوحدات النمطية، تتمتع الفئات بالطبيعة الديناميكية لبايثون: يتم إنشاؤها وقت التشغيل، ويمكن تعديلها بعد إنشائها.

في مصطلحات C++، عادةً ما تكون عناصر الفئة (بما في ذلك عناصر البيانات) عامة (باستثناء المتغيرات الخاصة، انظر أدناه)، وجميع دوال الأعضاء افتراضية. وكما هو الحال في Modula-3، لا توجد اختصارات للإشارة إلى عناصر الكائن من دوالّه: تُعلن دالة الطريقة بمُعامل أول صريح يُمثل الكائن، والذي يُوفره الاستدعاء ضمنيًا. وكما هو الحال في Smalltalk، تُعتبر الفئات نفسها كائنات. وهذا يُوفر دلالات للاستيراد وإعادة التسمية. بخلاف C++ وModula-3، يُمكن استخدام الأنواع المُضمنة كفئات أساسية للتوسيع من قِبل المستخدم. كما هو الحال في C++، يُمكن إعادة تعريف مُعظم المُعاملات المُضمنة ذات الصياغة الخاصة (المُعاملات الحسابية، والتحويل إلى مُشارطات، إلخ) لمثيلات الفئة.

(نظرًا لعدم وجود مصطلحات متعارف عليها عالميًا للحديث عن الفئات، سأستخدم أحيانًا مصطلحات Smalltalk وC++. سأستخدم مصطلحات Modula-3، نظرًا لأن دلالاتها الكائنية التوجه أقرب إلى دلالات Python منها إلى C++، لكنني أتوقع أن قلة من القراء قد سمعوا بها.)

9.1. نبذة عن الأسماء والكائنات #

للكائنات خصوصيتها، ويمكن ربط أسماء متعددة (في نطاقات متعددة) بالكائن نفسه. يُعرف هذا في لغات أخرى باسم “الاستعارة”. عادةً ما لا يُفهم هذا عند النظرة الأولى إلى Python، ويمكن تجاهله بأمان عند التعامل مع الأنواع الأساسية الثابتة (الأرقام، والسلاسل، والمجموعات). ومع ذلك، فإن للاستعارة تأثيرًا مفاجئًا على دلالات شيفرة Python التي تتضمن كائنات قابلة للتغيير مثل القوائم والقواميس ومعظم الأنواع الأخرى. يُستخدم هذا عادةً لصالح البرنامج، لأن الأسماء المستعارة تتصرف كمؤشرات في بعض النواحي. على سبيل المثال، يُعد تمرير كائن أمرًا اقتصاديًا نظرًا لأن التنفيذ لا يمرر سوى مؤشر واحد؛ وإذا عدّلت دالة كائنًا مُمرّرًا كمُعامل، فسيلاحظ المُستدعي التغيير – وهذا يُلغي الحاجة إلى آليتين مختلفتين لتمرير المُعاملات كما هو الحال في باسكال.

error: Content is protected !!
Scroll to Top