لماذا توجد البرمجة الكائنية
تم إنشاء البرمجة الكائنية لأن البرامج الإجرائية الكبيرة أصبحت صعبة الفهم والصيانة والحماية.
نسخة النسخ فقط: بناء فوضى إجرائية ضخمة
- التعقيد
- صيانة
- المسؤولية
- النمو
- المشكلة الحقيقية
تساعد البرمجة الكائنية في الحفاظ على المعلومات والإجراءات ذات الصلة معًا.
حول هذه الدورة
البرمجة الموجهة للكائنات لم تُنشأ لأن المبرمجين أرادوا كوداً أكثر تعقيداً. بل تم إنشاؤها لأن مشاريع البرامج أصبحت كبيرة جداً بحيث لا يمكن للأساليب التقليدية إدارتها بسهولة.
في الأيام الأولى لحوسبة، كانت العديد من البرامج صغيرة نسبياً. كان بإمكان مبرمج واحد أن يفهم النظام بأكمله في كثير من الأحيان.
A program typically followed a simple path: عادة ما يتبع البرنامج مسارًا بسيطًا:
Input ↓ العملية ↓ Output
مع ازدياد قوة أجهزة الكمبيوتر، أرادت الشركات أنظمة أكبر وميزات أكثر وعدد مستخدمين أكبر وتقارير أكثر وأتمتة أكثر.
البرمجة الإجرائية كانت نجاحاً كبيراً.
قام المطورون بتنظيم البرامج إلى دوال ووحدات ومكتبات وأكواد قابلة لإعادة الاستخدام.
البرنامج الرئيسي ↓ الدوال ↓ دوال إضافية ↓ النتيجة
هذا النهج دعّم أنظمة التشغيل والبرامج التجارية وقواعد البيانات والألعاب والتطبيقات المبكرة للإنترنت.
في النهاية، أصبحت المشاريع كبيرة جداً حتى ظهرت أسئلة جديدة.
من يمتلك هذه البيانات؟ من غيّر هذه القيمة؟ أي دالة مسؤولة؟ كيف يمكن لـ 100 مبرمج العمل على نفس النظام؟
التحدي لم يكن بعد الآن كتابة الأكواد.
التحدي كان تنظيم الكود.
بدلاً من تنظيم البرامج حول الوظائف بشكل أساسي، ينظم البرمجة الموجهة للكائنات البرامج حول الأشياء.
عميل فاتورة منتج موظف مركبة طلب
كل كائن يحتوي على معلومات والقواعد التي تدير تلك المعلومات.
العميل ├─ الاسم ├─ البريد الإلكتروني ├─ الهاتف └─ الإجراءات
أحد أكبر الأفكار وراء البرمجة الموجهة للكائنات هو الملكية.
بدلاً من السماح لكل جزء من النظام بتغيير كل جزء من البيانات، يتم تعيين المسؤولية إلى كائنات محددة.
كائن العميل ↓ يمتلك بيانات العميل كائن الفاتورة ↓ يمتلك بيانات الفاتورة كائن الطلب ↓ يمتلك بيانات الطلب
هذا يجعل الأنظمة الكبيرة أسهل في الفهم والصيانة.
في الشركة، لا يقوم كل شخص بأداء كل وظيفة.
المبيعات تتعامل مع المبيعات.
المحاسبة تتعامل مع الحسابات.
الشحن يتعامل مع الشحن.
البرمجة الموجهة للكائنات تطبق فكرة مشابهة على البرمجيات.
إسناد المسؤولية ↓ تحديد الالتباس ↓ تحسين التنظيم
يركز هذا المقرر على الأسس العملية للبرمجة الموجهة للكائنات.
ستتعلم كيف تنظم الأشياء المعلومات، وكيف يتم تعيين المسؤولية، ولماذا أصبح البرمجة الموجهة للكائنات أحد أهم أساليب تطوير البرامج في التاريخ.
الإدخال ↓ يستقبل الكائن البيانات ↓ يؤدي الكائن العمل ↓ النتيجة
بحلول نهاية هذه الدورة، يجب أن تفهم ليس فقط كيفية عمل البرمجة الموجهة للكائنات، بل لماذا أصبحت ضرورية.
البرمجة الموجهة للكائنات (OO) تطورت مع تطور أنظمة البرمجيات التي أصبحت أكبر وأكثر تعقيداً. البرامج لم تعد مجرد مئات قليلة من أسطر الأكواد التي يكتبها مبرمج واحد. فرق من الأشخاص كانوا يبنون أنظمة تحتاج إلى الاستمرارية لسنوات.
لقد أعطى البرمجة الإجرائية المبرمجين حرية هائلة:
Input ↓ متغير ↓ عمل ↓ إجابة
لكن الحرية جاءت مع مخاطرة.
أي جزء من برنامج كبير قد يغير قيمة ما، أو يستبدل المعلومات، أو يخصص ذاكرة كبيرة جداً، أو يدخل آثاراً جانبية غير متوقعة.
مع نمو الأنظمة، بدأ المديرون يتساءلون:
من يملك هذه البيانات؟ من يُسمح له بتغييرها؟ من يتحقق منها؟ من يحميها؟
البرمجة الكائنية التوجه كانت أحد الحلول.
بدلاً من تخزين المعلومات في متغيرات منفصلة موزعة في جميع أنحاء البرنامج، تقوم البرمجة الموجهة للكائنات بتجميع البيانات ذات الصلة والإجراءات ذات الصلة معاً داخل كائن واحد.
العميل ├─ الاسم ├─ البريد الإلكتروني ├─ الهاتف └─ الطرق
عندما تدخل المعلومات النظام، غالباً ما يتم وضعها في كائن بدلاً من وضعها في متغير مستقل.
الإدخال ↓ يستقبل الكائن البيانات ↓ يؤدي الكائن العمل ↓ النتيجة
على سبيل المثال:
أدخل اسم العميل: ريك
بدلاً من:
customer_name = "ريك"
قد يقوم OO بتخزين المعلومات على النحو التالي:
customer.name = "ريك"
يصبح الكائن الآن مسؤولاً عن إدارة تلك المعلومات.
هذا يقدم حواجز الحماية.
بدلاً من السماح لكل جزء من البرنامج بمعالجة البيانات مباشرة، يمكن للكائن أن يقرر ما هو مسموح وما هو غير مسموح.
الإدخال ↓ التحقق ↓ تخزين الكائنات ↓ المعالجة ↓ النتيجة
OO لا تلغي الأخطاء.
كائن مصمم بشكل سيء قد لا يزال يفشل، أو يستهلك موارد مفرطة، أو ينتج عن نتائج غير صحيحة.
ومع ذلك، فإن البرمجة الكائنية التوجه تحاول وضع المسؤولية أقرب إلى البيانات نفسها.
يمكنك التفكير في التطور بهذه الطريقة:
إجرائي: الحصول على البيانات ↓ تخزين البيانات ↓ تنفيذ العمل ↓ الإجابة كائني التوجه: الحصول على البيانات ↓ الكائن يمتلك البيانات ↓ الكائن ينفذ العمل ↓ الإجابة
البرمجة الإجرائية تسأل:
ماذا يحدث بعد ذلك؟
البرمجة الموجهة للكائنات تسأل:
من المسؤول عن هذا؟
اليوم، تدعم العديد من لغات البرمجة أسلوبًا إجرائيًا وموجهًا للكائنات. يساعد فهم البرمجة الموجهة للكائنات المطورين على بناء أنظمة أكبر يسهل تنظيمها والحفاظ عليها واختبارها وتوسيعها بمرور الوقت.
كل بطاقة تحتوي على محاضرة واحدة. فتح البطاقة بالكامل يفتح المحاضرة.
تم إنشاء البرمجة الكائنية لأن البرامج الإجرائية الكبيرة أصبحت صعبة الفهم والصيانة والحماية.
يخلق الكائن حدودًا بحيث لا يمكن للكود الخارجي كسر كل شيء داخله بشكل عشوائي.
الفئة هي مخطط. الكائنات هي النسخ العاملة التي تم إنشاؤها من هذا المخطط.
تحمي الكائنات البيانات المهمة من الفساد العرضي والتغييرات غير المتوقعة.
تحدث معظم فشل البرمجيات بسبب افتراضات يقوم بها الناس. تحاول البرمجة الكائنية تقليل تلك الافتراضات.
يمكن للوراثة تقليل التكرار، لكن الوراثة السيئة يمكن أن تنشر الأخطاء عبر الأنظمة بأكملها.
تفضل العديد من الأنظمة الحديثة ربط الكائنات معًا بدلاً من بناء سلاسل وراثة ضخمة.
حتى الأنظمة الكائنية تفشل عندما يفترض المطورون وجود بيانات عندما لا تكون موجودة.
تصبح البرمجة الكائنية ذات قيمة عندما يعمل مئات الملفات وآلاف الوظائف والعديد من المطورين معًا.
البرمجة الكائنية في النهاية تتعلق بإنشاء برامج تصمد أمام الأخطاء والنمو وتغير الموظفين والوقت.
الهدف ليس إجبار كل فكرة على أن تكون في فئة. الهدف هو التعرف على متى تنتمي البيانات والسلوكيات المرتبطة معًا، ومتى يكون الشفرة البسيطة خطوة بخطوة أفضل.