طَبِّقْهاتعلّم المبدأ، وطبّقه بيدكمقرر 111 · أساسيات برمجة الحاسب
الدرس 22 · الوحدة 5: البرمجة الشيئية

الكلاس والكائن

نصف الأشياء في برنامجنا كما هي في الواقع: قالب، ونسخ منه. ⏱ نحو 20 دقيقة.

class Car
بعد هذا الدرس ستستطيع أن:
  • تشرح معنى الكلاس والكائن بمثال من الحياة.
  • تعرّف كلاسًا وتصنع منه كائنات.
  • تضيف خصائص للكائن وتصل إليها بالنقطة.
  • تكتب دوال داخل الكلاس باستخدام self.

١القالب والنسخة

المصنع يرسم مخطط السيارة مرة واحدة، ثم يصنع منه سيارات كثيرة: لكل سيارة لونها ورقمها، لكنها كلها من المخطط نفسه.

في الحياةفي البرمجةالمعنى
مخطط السيارةالكلاس classالقالب الذي يصف الشيء
سيارة حقيقيةالكائن objectنسخة مصنوعة من القالب
اللون والرقمالخصائصبيانات كل كائن
تشغيل، توقفالدوال داخل الكلاسما يستطيع الكائن فعله

هذه الطريقة اسمها البرمجة الشيئية: نصف الأشياء في برنامجنا كما هي في الواقع.

٢أول كلاس

نكتب class ثم الاسم (نبدؤه بحرف كبير عادةً). ثم نصنع كائنًا بكتابة اسم الكلاس وبعده قوسان:

main.py
class Car:    pass my_car = Car()my_car.color = "أحمر"my_car.speed = 0print(my_car.color, my_car.speed)
Shell×
>>> %Run main.py
أحمر 0
>>>

pass تعني «لا شيء الآن». ونصل إلى خاصية الكائن بالنقطة: my_car.color.

٣دوال الكائن

الدالة داخل الكلاس تُكتب مثل أي دالة، لكن أول مُعطى فيها دائمًا self، ومعناه «هذا الكائن نفسه»:

main.py
class Car:    def drive(self):        self.speed = 60        print("انطلقت بسرعة", self.speed)     def stop(self):        self.speed = 0        print("توقفت") c = Car()c.drive()c.stop()
Shell×
>>> %Run main.py
انطلقت بسرعة 60
توقفت
>>>

عند الاستدعاء لا نكتب self، فبايثون يضعها بنفسه: c.drive().

٤كائنات كثيرة من كلاس واحد

كل كائن له خصائصه الخاصة، وتغيير أحدها لا يؤثر على الآخر:

main.py
class Car:    pass a = Car()b = Car()a.color = "أحمر"b.color = "أزرق"print(a.color)print(b.color)
Shell×
>>> %Run main.py
أحمر
أزرق
>>>
📎 للاستزادة (اختياري): أنت تستخدم الكائنات منذ البداية

النص والقائمة في بايثون كائنات أيضًا! لذلك نكتب names.append("علي"): دالة append خاصة بكائن القائمة، ونصل إليها بالنقطة.

توقّع وتحقّق

ما الكلاس؟

مثل مخطط السيارة.

كيف نصنع كائنًا من الكلاس Car؟

اسم الكلاس ثم القوسان.

ما أول مُعطى في دالة داخل الكلاس؟

self تعني هذا الكائن.

كيف نصل إلى خاصية name في الكائن s؟

بالنقطة.

الخلاصة

تحدٍّ برمجي: كلاس الهاتف

سهل

اكتب كلاسًا اسمه Phone فيه دالة call تطبع: جارٍ الاتصال. ثم اصنع كائنًا، وأعطه الخاصية brand بقيمة "نوكيا"، واطبعها، ثم استدعِ call.

المطلوب:
  • class Phone: ثم دالة call(self).
  • p = Phone()
  • p.brand = "نوكيا" ثم print(p.brand)
  • p.call()

ابدأ من هذا الكود، واضغط ▶ شغّل هنا لتكتب حلّك وتجرّبه مباشرة:

main.py
class Phone:
المطلوب×
نوكيا
جارٍ الاتصال
💡 تلميح 1
def call(self): بمسافة بادئة داخل الكلاس.
💡 تلميح 2
print("جارٍ الاتصال")

حاول بنفسك أولًا؛ للمسألة أكثر من حلّ صحيح.

main.py
class Phone:    def call(self):        print("جارٍ الاتصال") p = Phone()p.brand = "نوكيا"print(p.brand)p.call()
انتقل إلى تقييم الدرساختيار من متعدد، وصح وخطأ، وأكمل الفراغ، وتتبّع الناتج.ابدأ التقييم ←