✏️ تعديل: What is OOP and Why?
تعديل محتوى الموضوع
→ رجوع للموضوع
عنوان الموضوع
التصنيف
التاقات (مفصولة بفاصلة)
ملاحظة التعديل (اختياري)
المحتوى
Object-Oriented Programming (OOP) هي نمط برمجي ينظّم الكود حول **الكائنات (objects)** — وهي حزم تجمع بين البيانات (الخصائص) والسلوك (الدوال) — بدلاً من تنظيمه حول الدوال والمنطق فقط. **الأعمدة الأساسية (Core Pillars):** - **Encapsulation (التغليف)** — Bundle data and the methods that operate on it, hiding internal state behind a controlled interface. بالعربي: تجميع البيانات مع الدوال التي تعمل عليها، وإخفاء الحالة الداخلية خلف واجهة محكومة، بحيث لا يصل أحد للبيانات إلا من خلال طرق محددة. - **Abstraction (التجريد)** — Expose only what's necessary, hiding complex implementation details. بالعربي: إظهار ما هو ضروري فقط للمستخدم، وإخفاء تفاصيل التنفيذ المعقّدة. مثل قيادة السيارة دون الحاجة لمعرفة كيف يعمل المحرك داخلياً. - **Inheritance (الوراثة)** — Derive new classes from existing ones, reusing and extending behavior. بالعربي: اشتقاق أصناف (classes) جديدة من أصناف موجودة، فترث خصائصها وسلوكها مع إمكانية التوسعة، مما يوفّر إعادة كتابة الكود. - **Polymorphism (تعدد الأشكال)** — Let different types respond to the same interface in their own way. بالعربي: السماح لأنواع مختلفة بالاستجابة لنفس الاستدعاء كلٌّ بطريقته الخاصة، كما في المثال حيث `speak()` تعطي نتيجة مختلفة للكلب والقطة. **لماذا نستخدمها (Why):** - **Modularity (التجزئة)** — Self-contained objects are easier to develop, test, and debug in isolation. بالعربي: الكائنات المستقلة أسهل في التطوير والاختبار وإصلاح الأخطاء كلٌّ على حدة. - **Reusability (إعادة الاستخدام)** — Inheritance and composition let you reuse code instead of rewriting it. بالعربي: الوراثة والتركيب يتيحان إعادة استخدام الكود بدل إعادة كتابته من الصفر. - **Maintainability (سهولة الصيانة)** — Changes to one object's internals don't ripple outward if the interface stays stable. بالعربي: تعديل داخل كائن معيّن لا يؤثر على بقية النظام طالما بقيت الواجهة ثابتة. - **Models reality (محاكاة الواقع)** — Mapping problems to objects often mirrors how we naturally think about domains. بالعربي: تمثيل المشكلة على شكل كائنات (مثل `User` أو `BankAccount` أو `Car`) يشبه طريقة تفكيرنا الطبيعية، مما يجعل تصميم النظام أوضح. مثال سريع: ```python class Animal: def __init__(self, name): self.name = name def speak(self): raise NotImplementedError class Dog(Animal): def speak(self): return f"{self.name} says Woof" class Cat(Animal): def speak(self): return f"{self.name} says Meow" for a in [Dog("Rex"), Cat("Mia")]: print(a.speak()) # نفس الاستدعاء، سلوك مختلف ← polymorphism ``` ملاحظة: OOP ليست دائماً الخيار الأفضل — الأنماط الوظيفية (functional) أو الإجرائية (procedural) قد تكون أنظف في بعض المسائل — لكنها تتألق في الأنظمة الكبيرة التي تحتوي على حالة (state) وتحتاج لنمذجة الكيانات والعلاقات بينها.
👁️ معاينة فورية
💡 كل بلوك قابل للسحب والترتيب. يدعم
Markdown
:
## عنوان
·
**bold**
·
- قائمة
·
```dart code```
·
[[اسم الموضوع]]
💾 حفظ التعديلات