- بواسطة x32x01 ||
فاكر لما البرمجة كانت كلها Copy-Paste؟
قبل ما يظهر مفهوم الـ OOP، أي مشروع كبير كان أشبه بمصنع كله شغل متكرر.
كل ما تحاول تبني حاجة شبه اللي قبلها، تلاقي نفسك بتعيد كتابة نفس الدوال والمتغيرات من الصفر… وكأنك أول مرة تبرمج
تخيل عندك كلاس اسمه Car، وبعدين قررت تعمل كلاس اسمه ElectricCar.
زمان؟ كنت هتكتب كل حاجة من الأول: السرعة - المحرك - العجلات…
حتى لو 90% منهم متشابهين!
وطبعًا ده بيخلي المشروع أكبر، أبطأ، وصعب تعدّل عليه… لأن أي تعديل بسيط هتضطر تكرره في أكتر من مكان
لحد ما ظهر مفهوم الوراثة (Inheritance) وقال:
“ما تكررش نفسك… ورّث اللي عملته.”
ببساطة:
إنك تعمل كلاس جديد يبني على كلاس موجود، وياخد منه كل الخصائص (Attributes) والدوال (Methods) بدل ما تعيد كتابتهم.
وكمان يقدر يضيف حاجات جديدة أو يغيّر في اللي موجود.
بقي عندك كود أنضف 
وقابل لإعادة الاستخدام
وسهل تتعامل معاه
وكمان تقدر تستخدم Method Overriding
يعني الابن يغيّر تنفيذ دالة موروثة من الأب لو محتاج سلوك مختلف.
مش كل علاقة بين كائنين معناها Inheritance.
لازم تكون العلاقة فعلاً “أب → ابن” مش بس “شبه بعض”.
غير كده في علاقات أقوى زي Composition، وهتفهمها لما تدخل أكتر في تصميم الأنظمة.
قبل ما يظهر مفهوم الـ OOP، أي مشروع كبير كان أشبه بمصنع كله شغل متكرر.
كل ما تحاول تبني حاجة شبه اللي قبلها، تلاقي نفسك بتعيد كتابة نفس الدوال والمتغيرات من الصفر… وكأنك أول مرة تبرمج
تخيل عندك كلاس اسمه Car، وبعدين قررت تعمل كلاس اسمه ElectricCar.
زمان؟ كنت هتكتب كل حاجة من الأول: السرعة - المحرك - العجلات…
حتى لو 90% منهم متشابهين!
وطبعًا ده بيخلي المشروع أكبر، أبطأ، وصعب تعدّل عليه… لأن أي تعديل بسيط هتضطر تكرره في أكتر من مكان
لحد ما ظهر مفهوم الوراثة (Inheritance) وقال:
“ما تكررش نفسك… ورّث اللي عملته.”
إيه هو الـ Inheritance؟
ببساطة:إنك تعمل كلاس جديد يبني على كلاس موجود، وياخد منه كل الخصائص (Attributes) والدوال (Methods) بدل ما تعيد كتابتهم.
- الكلاس الأصلي → Parent / Base Class
- الكلاس الجديد → Child / Derived Class
وكمان يقدر يضيف حاجات جديدة أو يغيّر في اللي موجود.
مثال بسيط:
Code:
Car:
- speed
- color
- start()
- stop()
ElectricCar يرث من Car:
+ chargeBattery() وقابل لإعادة الاستخدام
وسهل تتعامل معاه
ليه الوراثة مهمة؟
- إعادة استخدام الكود → تكتب مرة، وتورث بعد كده براحتك.
- سهولة التعديل → عدلت في الأب؟ كل الأبناء يتحدثوا تلقائيًا.
- تنظيم المشاريع الكبيرة → كل كائن يبني على اللي قبله بدون فوضى.
وكمان تقدر تستخدم Method Overriding
يعني الابن يغيّر تنفيذ دالة موروثة من الأب لو محتاج سلوك مختلف.
ملحوظة مهمة:
مش كل علاقة بين كائنين معناها Inheritance.لازم تكون العلاقة فعلاً “أب → ابن” مش بس “شبه بعض”.
غير كده في علاقات أقوى زي Composition، وهتفهمها لما تدخل أكتر في تصميم الأنظمة.