- بواسطة x32x01 ||
تعالى يا صاحبي نبدأ القصة من الأول…
في عالم البرمجة، فيه نوعين من الناس:
– ناس شايفة إن الـ Object-Oriented Programming هو المفتاح اللي هيخلّيها محترفة فجأة
– وناس لسه مش فاهمة ليه الدنيا كلها بتتكلم عنه وكأنه "الجرافة المقدسة"
وعشان نفهم الموضوع بطريقة خفيفة، هنمشي مع قصتنا اللطيفة بين:
سيد: شاب لسه متخرج في زمن GPT… على الله حكايتُه
أبو السيّد: راجل مخضرم 20 سنة خبرة في السوفت وير… يعني من الآخر شاف حاجات إحنا ما شفناهاش
وهنا يبدأ الحوار
سيد:
يا عم أبو السيد… أنا ببرمج بقالى فترة وكل حاجة ماشية حلو، بس كل الناس بتقول OOP OOP…
هي يعني السحر اللي هيخلّيني محترف؟
أبو السيد:
بص يا سيد… الـ OOP مش سحر ولا تميمة
دي طريقة تفكير…
بتخليك تشوف الكود مش كأوامر متفرقة، لأ… كـ "حاجات" بتتفاعل مع بعض.
سيد:
حاجات؟ يعني إحنا بنكتب كارتون؟
أبو السيد:
لأ يا سيد… اسمع الكلام.
زمان كنا شغالين بـ Procedural Programming…
تقوله: اعمل دي → بعديها دي → بعديها دي.
الكود كان يبقى عامل زي هدومك لما ترجع من الجامعة وتحطها كلها فوق بعض
ومع المشاريع الكبيرة؟
الدنيا باظت.
هنا ظهر الفكر بتاع الـ OOP وقال:
ليه منخليش الكود شبه الواقع؟
يعني بدل ما تتعامل مع 200 فانكشن طايرة في الهوا…
لأ… تتعامل مع Objects ليها بيانات وسلوك.
الكائنات… يعني إيه؟ وليه مهمة جدًا؟
في الـ OOP، أنت بتعمل كائن (Object) يمثل حاجة في الواقع:
– طالب
– عربية
– مستخدم
– منتج
– حساب بنكي
– API Response
وهكذا…
كل كائن بيبقى جواه:
Attributes (الخواص/البيانات)
Methods (السلوك/الوظائف)
مثال بسيط:
لاحظ؟
الاسم والسن ورقم الجلوس جوا الكيان نفسه…
وكمان السلوك (يمتحن - يتخرج) موجود جوّا نفس الكلاس.
وده غير الـ Procedural اللي كان بيحط البيانات في مكان… والفانكشن في مكان تاني!
ليه الـ OOP بيخلّي الكود منظم وأذكى بكتير؟
أبو السيد يشرح:
مش بس منظم… ده قابل للتوسّع بشكل رهيب.
كل كائن ليه مكانه وملفاته وسلوكياته.
تكتب Class مرة… تستخدمه في 10 مشاريع.
عارف كل حاجة فين… فالتعديل سهل.
تقدر تعمل كائن جديد يرث خصائص كائن قديم.
مثال بسيط:
إخفاء التفاصيل الداخلية… زي فكرة “محدش يدخل مطبخك”.
نفس الفانكشن… سلوك مختلف حسب الكائن.
وده بيوفر حلول ذكية للبرامج الكبيرة.
تعال نشوف الفرق الحقيقي بين OOP وProcedural بمثال
مش منظم… مش scalable… وبيتعب جدًا في المشاريع الضخمة.
سهل - نظيف - قابل للتطوير - شبه الواقع.
طب تعال نفهم الموضوع بشكل شبه واقعي
تخيل إنك بتعمل مشروع عن:
– مدرسة
– مستشفى
– متجر أونلاين
– موقع تواصل
– لعبة
– نظام حجوزات
هل ينفع تحط كل الفانكشن والبيانات فوق بعض بدون ترتيب؟
هتغرق… حرفيًا.
الـ OOP بيخليك تبني سيستم على شكل “عالم كامل” جواه كائنات بتتفاعل زى الحقيقة.
سيد بعد الشرح… بدأ يفهم الصورة
سيد (مبتسم):
أهاااا… يعني OOP مش كود وخلاص… ده فعلاً "طريقة تفكير".
أبو السيّد:
بالظبط يا سيد…
لما تبدأ تشوف الكود ككيانات بتتكلم مع بعض…
أفكارك نفسها هتتغير…
وهتلاقي الكود بقى أنضف – أقوى – وأسهل في التطوير.
نصايح مهمة لأي حد عايز يبدأ OOP
– Inheritance
– Abstraction
– Polymorphism
خلاصة الكلام
الـ OOP مش لغة معينة…
ده أسلوب تفكير بيخليك تبني مشاريع قوية، نظيفة، وقابلة للتطوير.
والأسلوب ده هو اللي بيستخدمه أي مبرمج محترف في شركات كبيرة…
فتعلمه مش رفاهية، ده شيء أساسي لو عايز تبقى “مِعلم” بجد.

في عالم البرمجة، فيه نوعين من الناس:
– ناس شايفة إن الـ Object-Oriented Programming هو المفتاح اللي هيخلّيها محترفة فجأة
– وناس لسه مش فاهمة ليه الدنيا كلها بتتكلم عنه وكأنه "الجرافة المقدسة"
وعشان نفهم الموضوع بطريقة خفيفة، هنمشي مع قصتنا اللطيفة بين:
وهنا يبدأ الحوار
حوار سيد مع أبو السيّد… بداية الرحلة للـ OOP
يا عم أبو السيد… أنا ببرمج بقالى فترة وكل حاجة ماشية حلو، بس كل الناس بتقول OOP OOP…
هي يعني السحر اللي هيخلّيني محترف؟
بص يا سيد… الـ OOP مش سحر ولا تميمة
دي طريقة تفكير…
بتخليك تشوف الكود مش كأوامر متفرقة، لأ… كـ "حاجات" بتتفاعل مع بعض.
حاجات؟ يعني إحنا بنكتب كارتون؟
لأ يا سيد… اسمع الكلام.
زمان كنا شغالين بـ Procedural Programming…
تقوله: اعمل دي → بعديها دي → بعديها دي.
الكود كان يبقى عامل زي هدومك لما ترجع من الجامعة وتحطها كلها فوق بعض
ومع المشاريع الكبيرة؟
الدنيا باظت.
هنا ظهر الفكر بتاع الـ OOP وقال:
ليه منخليش الكود شبه الواقع؟
يعني بدل ما تتعامل مع 200 فانكشن طايرة في الهوا…
لأ… تتعامل مع Objects ليها بيانات وسلوك.
الكائنات… يعني إيه؟ وليه مهمة جدًا؟
في الـ OOP، أنت بتعمل كائن (Object) يمثل حاجة في الواقع:– طالب
– عربية
– مستخدم
– منتج
– حساب بنكي
– API Response
وهكذا…
كل كائن بيبقى جواه:
مثال بسيط:
مثال على “طالب” في OOP (كود بلغة Python):
Python:
class Student:
def __init__(self, name, age, seat_number):
self.name = name
self.age = age
self.seat_number = seat_number
def take_exam(self):
print(f"{self.name} is taking the exam...")
def graduate(self):
print(f"{self.name} has graduated! 🎓")
# إنشاء الطالب
ahmed = Student("Ahmed", 20, 15)
ahmed.take_exam() لاحظ؟
الاسم والسن ورقم الجلوس جوا الكيان نفسه…
وكمان السلوك (يمتحن - يتخرج) موجود جوّا نفس الكلاس.
وده غير الـ Procedural اللي كان بيحط البيانات في مكان… والفانكشن في مكان تاني!
ليه الـ OOP بيخلّي الكود منظم وأذكى بكتير؟
مش بس منظم… ده قابل للتوسّع بشكل رهيب.
أهم فوائد الـ OOP:
1. تنظيم الكود
كل كائن ليه مكانه وملفاته وسلوكياته.
2. إعادة الاستخدام (Reusability)
تكتب Class مرة… تستخدمه في 10 مشاريع.
3. سهولة التطوير والصيانة
عارف كل حاجة فين… فالتعديل سهل.
4. الـ Inheritance (إرث الكائنات)
تقدر تعمل كائن جديد يرث خصائص كائن قديم.مثال بسيط:
Python:
class Person:
def __init__(self, name):
self.name = name
class Student(Person):
def study(self):
print(f"{self.name} is studying...")
s = Student("Mostafa")
s.study()
5. الـ Encapsulation
إخفاء التفاصيل الداخلية… زي فكرة “محدش يدخل مطبخك”.
6. الـ Polymorphism
نفس الفانكشن… سلوك مختلف حسب الكائن.وده بيوفر حلول ذكية للبرامج الكبيرة.
تعال نشوف الفرق الحقيقي بين OOP وProcedural بمثال
الطريقة القديمة: Procedural
Python:
def add_student(name, age):
return {"name": name, "age": age}
def print_student(student):
print(student["name"], student["age"])
student = add_student("Ali", 21)
print_student(student)
الطريقة الحديثة: OOP
Python:
class Student:
def __init__(self, name, age):
self.name = name
self.age = age
def print_info(self):
print(self.name, self.age)
student = Student("Ali", 21)
student.print_info() طب تعال نفهم الموضوع بشكل شبه واقعي
تخيل إنك بتعمل مشروع عن:– مدرسة
– مستشفى
– متجر أونلاين
– موقع تواصل
– لعبة
– نظام حجوزات
هل ينفع تحط كل الفانكشن والبيانات فوق بعض بدون ترتيب؟
هتغرق… حرفيًا.
الـ OOP بيخليك تبني سيستم على شكل “عالم كامل” جواه كائنات بتتفاعل زى الحقيقة.
سيد بعد الشرح… بدأ يفهم الصورة 
أهاااا… يعني OOP مش كود وخلاص… ده فعلاً "طريقة تفكير".
بالظبط يا سيد…
لما تبدأ تشوف الكود ككيانات بتتكلم مع بعض…
أفكارك نفسها هتتغير…
وهتلاقي الكود بقى أنضف – أقوى – وأسهل في التطوير.
نصايح مهمة لأي حد عايز يبدأ OOP 
✔ ابدأ بسيط
فهم الـ Class والـ Object الأول.✔ اتعلم المفاهيم الأساسية:
– Encapsulation– Inheritance
– Abstraction
– Polymorphism
✔ اعمل مشاريع بسيطة
طالب - موظف - مدرسة - متجر - حساب بنكي…✔ متزودش الكلام النظري
الـ OOP أحلى لما تتعلمه بإيدك… مش بالكلام.✔ راجع أكواد ناس محترفة
بتديك mindset جديد.خلاصة الكلام
الـ OOP مش لغة معينة…ده أسلوب تفكير بيخليك تبني مشاريع قوية، نظيفة، وقابلة للتطوير.
والأسلوب ده هو اللي بيستخدمه أي مبرمج محترف في شركات كبيرة…
فتعلمه مش رفاهية، ده شيء أساسي لو عايز تبقى “مِعلم” بجد.