Logo Jit-learn Start free
Jit-learn - Job-ready skills in your language
مقدمة / موارد / حول

تعلم كيف يتم تنظيم البرامج الكبيرة.

تساعد البرمجة الكائنية في الحفاظ على المعلومات والإجراءات ذات الصلة معًا.

تمهيدي

حول هذه الدورة

لماذا تم إنشاء البرمجة الموجهة للكائنات؟

البرمجة الموجهة للكائنات لم تُنشأ لأن المبرمجين أرادوا كوداً أكثر تعقيداً. بل تم إنشاؤها لأن مشاريع البرامج أصبحت كبيرة جداً بحيث لا يمكن للأساليب التقليدية إدارتها بسهولة.

أصبحت أجهزة الكمبيوتر أكبر حجماً

في الأيام الأولى لحوسبة، كانت العديد من البرامج صغيرة نسبياً. كان بإمكان مبرمج واحد أن يفهم النظام بأكمله في كثير من الأحيان.

A program typically followed a simple path: عادة ما يتبع البرنامج مسارًا بسيطًا:

Input
↓
العملية
↓
Output

مع ازدياد قوة أجهزة الكمبيوتر، أرادت الشركات أنظمة أكبر وميزات أكثر وعدد مستخدمين أكبر وتقارير أكثر وأتمتة أكثر.

البرمجة الإجرائية نجحت

البرمجة الإجرائية كانت نجاحاً كبيراً.

قام المطورون بتنظيم البرامج إلى دوال ووحدات ومكتبات وأكواد قابلة لإعادة الاستخدام.

البرنامج الرئيسي
↓
الدوال
↓
دوال إضافية
↓
النتيجة

هذا النهج دعّم أنظمة التشغيل والبرامج التجارية وقواعد البيانات والألعاب والتطبيقات المبكرة للإنترنت.

ثم نما البرنامج

في النهاية، أصبحت المشاريع كبيرة جداً حتى ظهرت أسئلة جديدة.

من يمتلك هذه البيانات؟

من غيّر هذه القيمة؟

أي دالة مسؤولة؟

كيف يمكن لـ 100 مبرمج
العمل على نفس النظام؟

التحدي لم يكن بعد الآن كتابة الأكواد.

التحدي كان تنظيم الكود.

الفكرة وراء الكائنات

بدلاً من تنظيم البرامج حول الوظائف بشكل أساسي، ينظم البرمجة الموجهة للكائنات البرامج حول الأشياء.

عميل
فاتورة
منتج
موظف
مركبة
طلب

كل كائن يحتوي على معلومات والقواعد التي تدير تلك المعلومات.

العميل
├─ الاسم
├─ البريد الإلكتروني
├─ الهاتف
└─ الإجراءات

ملكية والمسؤولية

أحد أكبر الأفكار وراء البرمجة الموجهة للكائنات هو الملكية.

بدلاً من السماح لكل جزء من النظام بتغيير كل جزء من البيانات، يتم تعيين المسؤولية إلى كائنات محددة.

كائن العميل
↓
يمتلك بيانات العميل

كائن الفاتورة
↓
يمتلك بيانات الفاتورة

كائن الطلب
↓
يمتلك بيانات الطلب

هذا يجعل الأنظمة الكبيرة أسهل في الفهم والصيانة.

فكّر فيها مثل عمل تجاري

في الشركة، لا يقوم كل شخص بأداء كل وظيفة.

المبيعات تتعامل مع المبيعات.

المحاسبة تتعامل مع الحسابات.

الشحن يتعامل مع الشحن.

البرمجة الموجهة للكائنات تطبق فكرة مشابهة على البرمجيات.

إسناد المسؤولية
↓
تحديد الالتباس
↓
تحسين التنظيم

ما ستتعلمه

يركز هذا المقرر على الأسس العملية للبرمجة الموجهة للكائنات.

ستتعلم كيف تنظم الأشياء المعلومات، وكيف يتم تعيين المسؤولية، ولماذا أصبح البرمجة الموجهة للكائنات أحد أهم أساليب تطوير البرامج في التاريخ.

الإدخال
↓
يستقبل الكائن البيانات
↓
يؤدي الكائن العمل
↓
النتيجة

بحلول نهاية هذه الدورة، يجب أن تفهم ليس فقط كيفية عمل البرمجة الموجهة للكائنات، بل لماذا أصبحت ضرورية.

الموارد
حول

البرمجة الموجهة للكائنات (OO) تطورت مع تطور أنظمة البرمجيات التي أصبحت أكبر وأكثر تعقيداً. البرامج لم تعد مجرد مئات قليلة من أسطر الأكواد التي يكتبها مبرمج واحد. فرق من الأشخاص كانوا يبنون أنظمة تحتاج إلى الاستمرارية لسنوات.

لقد أعطى البرمجة الإجرائية المبرمجين حرية هائلة:

Input
↓
متغير
↓
عمل
↓
إجابة

لكن الحرية جاءت مع مخاطرة.

أي جزء من برنامج كبير قد يغير قيمة ما، أو يستبدل المعلومات، أو يخصص ذاكرة كبيرة جداً، أو يدخل آثاراً جانبية غير متوقعة.

مع نمو الأنظمة، بدأ المديرون يتساءلون:

من يملك هذه البيانات؟
من يُسمح له بتغييرها؟
من يتحقق منها؟
من يحميها؟

البرمجة الكائنية التوجه كانت أحد الحلول.

بدلاً من تخزين المعلومات في متغيرات منفصلة موزعة في جميع أنحاء البرنامج، تقوم البرمجة الموجهة للكائنات بتجميع البيانات ذات الصلة والإجراءات ذات الصلة معاً داخل كائن واحد.

العميل
├─ الاسم
├─ البريد الإلكتروني
├─ الهاتف
└─ الطرق

عندما تدخل المعلومات النظام، غالباً ما يتم وضعها في كائن بدلاً من وضعها في متغير مستقل.

الإدخال
↓
يستقبل الكائن البيانات
↓
يؤدي الكائن العمل
↓
النتيجة

على سبيل المثال:

أدخل اسم العميل:
ريك

بدلاً من:

customer_name = "ريك"

قد يقوم OO بتخزين المعلومات على النحو التالي:

customer.name = "ريك"

يصبح الكائن الآن مسؤولاً عن إدارة تلك المعلومات.

هذا يقدم حواجز الحماية.

بدلاً من السماح لكل جزء من البرنامج بمعالجة البيانات مباشرة، يمكن للكائن أن يقرر ما هو مسموح وما هو غير مسموح.

الإدخال
↓
التحقق
↓
تخزين الكائنات
↓
المعالجة
↓
النتيجة

OO لا تلغي الأخطاء.

كائن مصمم بشكل سيء قد لا يزال يفشل، أو يستهلك موارد مفرطة، أو ينتج عن نتائج غير صحيحة.

ومع ذلك، فإن البرمجة الكائنية التوجه تحاول وضع المسؤولية أقرب إلى البيانات نفسها.

يمكنك التفكير في التطور بهذه الطريقة:

إجرائي:
الحصول على البيانات
↓
تخزين البيانات
↓
تنفيذ العمل
↓
الإجابة

كائني التوجه:
الحصول على البيانات
↓
الكائن يمتلك البيانات
↓
الكائن ينفذ العمل
↓
الإجابة

البرمجة الإجرائية تسأل:

ماذا يحدث بعد ذلك؟

البرمجة الموجهة للكائنات تسأل:

من المسؤول عن هذا؟

اليوم، تدعم العديد من لغات البرمجة أسلوبًا إجرائيًا وموجهًا للكائنات. يساعد فهم البرمجة الموجهة للكائنات المطورين على بناء أنظمة أكبر يسهل تنظيمها والحفاظ عليها واختبارها وتوسيعها بمرور الوقت.

محاضرة + ورقة عمل

بطاقات ممارسة البرمجة الكائنية الجاهزة للعمل

كل بطاقة تحتوي على محاضرة واحدة. فتح البطاقة بالكامل يفتح المحاضرة.

✓ الدرس 1 مجاني • لا يتطلب تسجيل دخول

لماذا توجد البرمجة الكائنية

تم إنشاء البرمجة الكائنية لأن البرامج الإجرائية الكبيرة أصبحت صعبة الفهم والصيانة والحماية.

تُرى في برامج الأعمال، أنظمة التشغيل، المواقع الإلكترونية، التطبيقات، واجهات برمجة التطبيقات، وأنظمة المؤسسات.
التوجيه الكائني: تنظيم المسؤولية
نسخة النسخ فقط: بناء فوضى إجرائية ضخمة
يشمل:
  • التعقيد
  • صيانة
  • المسؤولية
  • النمو
  • المشكلة الحقيقية

حدود الكائن

يخلق الكائن حدودًا بحيث لا يمكن للكود الخارجي كسر كل شيء داخله بشكل عشوائي.

تُرى في أنظمة المحاسبة، برامج البنوك، أنظمة إدارة علاقات العملاء، أنظمة تخطيط موارد المؤسسات، وتطبيقات الإنتاج.
التوجيه الكائني: احتواء الضرر
نسخة النسخ فقط: دع كل ملف يلمس كل شيء
يشمل:
  • الكائنات
  • الحدود
  • الملكية
  • حماية
  • التغليف

الفئات والمخططات

الفئة هي مخطط. الكائنات هي النسخ العاملة التي تم إنشاؤها من هذا المخطط.

تُرى في المستخدمين، المنتجات، الطلبات، الفواتير، التذاكر، العملاء، وسجلات الأعمال.
التوجيه الكائني: البناء من خطة
نسخة النسخ فقط: تكرار الكود في كل مكان
يشمل:
  • الفئة
  • الكائن
  • مخطط
  • مثيل
  • مثال

درع البيانات

تحمي الكائنات البيانات المهمة من الفساد العرضي والتغييرات غير المتوقعة.

تُرى في الرواتب، المالية، المخزون، الرعاية الصحية، العضويات، وأنظمة العملاء.
التوجيه الكائني: حماية البيانات
نسخة النسخ فقط: الثقة في كل مبرمج إلى الأبد
يشمل:
  • البيانات الخاصة
  • التحقق
  • حماية
  • قواعد
  • السلامة

المشكلة البشرية

تحدث معظم فشل البرمجيات بسبب افتراضات يقوم بها الناس. تحاول البرمجة الكائنية تقليل تلك الافتراضات.

تُرى في كل مشروع فريق، شركة ناشئة، نظام مؤسساتي، وتطبيق طويل الأمد.
التوجيه الكائني: تقليل الأخطاء
نسخة النسخ فقط: الاعتماد على البشر المثاليين
يشمل:
  • الافتراضات
  • فرق
  • أخطاء
  • صيانة
  • الواقع

فوائد ومخاطر الوراثة

يمكن للوراثة تقليل التكرار، لكن الوراثة السيئة يمكن أن تنشر الأخطاء عبر الأنظمة بأكملها.

تُرى في الأطر، برامج المؤسسات، أنظمة إدارة المحتوى، ومنصات التطبيقات.
التوجيه الكائني: إعادة الاستخدام بحذر
نسخة النسخ فقط: وراثة كارثة
يشمل:
  • الوراثة
  • إعادة استخدام
  • التسلسلات الهرمية
  • الاقتران
  • المخاطر

التكوين بدلاً من الهشاشة

تفضل العديد من الأنظمة الحديثة ربط الكائنات معًا بدلاً من بناء سلاسل وراثة ضخمة.

تُرى في PHP الحديثة، Java، C#، Python، JavaScript، وبرمجيات السحابة.
التوجيه الكائني: التجميع بأمان
نسخة النسخ فقط: إنشاء أبراج اعتماد هشة
يشمل:
  • التكوين
  • الكائنات
  • التبعيات
  • إعادة استخدام
  • التصميم الحديث

الخطأ بمليار دولار

حتى الأنظمة الكائنية تفشل عندما يفترض المطورون وجود بيانات عندما لا تكون موجودة.

تُرى في قواعد البيانات، واجهات برمجة التطبيقات، النماذج، الواردات، التكاملات، وانقطاعات الإنتاج.
التوجيه المباشر: افترض الفشل
نسخة النسخ فقط: افترض النجاح
يشمل:
  • النول
  • بيانات مفقودة
  • كود دفاعي
  • التحقق
  • إخفاقات

البرمجة الكائنية في الأنظمة الكبيرة

تصبح البرمجة الكائنية ذات قيمة عندما يعمل مئات الملفات وآلاف الوظائف والعديد من المطورين معًا.

تُرى في البنوك والحكومات ومنصات SaaS وCRMs وERPs وبرامج المؤسسات.
التوجيه المباشر: توسيع الفرق
نسخة النسخ فقط: توسيع الارتباك
يشمل:
  • فرق
  • التوسيع
  • صيانة
  • الهندسة
  • النمو

بناء برامج تصمد أمام الناس

البرمجة الكائنية في النهاية تتعلق بإنشاء برامج تصمد أمام الأخطاء والنمو وتغير الموظفين والوقت.

تُرى في كل منتج برمجي ناجح طويل الأمد.
التوجيه المباشر: البقاء في الواقع
نسخة النسخ فقط: البقاء فقط في العرض التوضيحي
يشمل:
  • صيانة
  • طول العمر
  • تصميم دفاعي
  • الملكية
  • البقاء

استخدم الكائنات عندما تجعل البرنامج أسهل في الامتلاك.

الهدف ليس إجبار كل فكرة على أن تكون في فئة. الهدف هو التعرف على متى تنتمي البيانات والسلوكيات المرتبطة معًا، ومتى يكون الشفرة البسيطة خطوة بخطوة أفضل.


moc.rt-tij [ta] troppus
(التخصيص متاح)

moc.rt-tij [ta] troppus
(customization available)