مزايا البرمجة الشيئية
بدأت البرمجة الشيئية (OOP) في الثمانينيات، وعلى الرغم من مرور العديد من السنوات، لا يزال هذا النمط البرمجي قويا، وأصبحت البرمجة الشيئية جزءا أساسيا من تطوير البرمجيات. بفضل انتشار لغات مثل جافا و C++، فإنه لا يمكنك تطوير تطبيقات الهواتف المحمولة إلا إذا فهمت المفهوم الموجه نحو الكائنات. وينطبق الأمر نفسه على تطوير الويب أيضا، نظرا لشعبية لغات البرمجة الشيئية مثل بايثون وبي إتش بي وروبي.
قد يواجه بعض محترفي تكنولوجيا المعلومات صعوبة في فهم فكرة البرمجة الشيئية، حيث يمكن أن يتساءلوا عن سبب الحاجة إلى الكائنات، حتى ولو كانوا قادرين على استخدام النهج من أعلىلأسفل في البرمجة المنظمة التقليدية باستخدام لغات مثل Visual Basic.
وإذا كنت قد كتبت هذا النوع من البرامج ، فمن المحتمل أنك معتاد على تقسيم المشكلات الكبيرة ، إلى مشكلات فرعية ، وحلها في وحدات منفصلة من التعليمات البرمجية ، أو قد تكون لديك خبرة في البرمجة الوظيفية ، التي تعامل عناصر التعليمات البرمجية ، كوظائف رياضية دقيقة ، وتمنعها من التأثير على عناصر أخرى ، أي لا آثار جانبية.
ومع ذلك ، عليك أن تتعامل مع البرمجة الشيئية OOP ، وسترى أنها طريقة جديدة تمامًا لحل المشكلات ، فالمفهوم الأساسي هو أنه بدلاً من كتابة برنامج ، تقوم بإنشاء فئة ، وهو نوع من القالب يحتوي على متغيرات ووظائف ، والكائنات عبارة عن أمثلة مستقلة عن تلك الفئة ، ويمكنك جعلها تتفاعل بطرق ممتعة ومثيرة.
مزايا البرمجة الشيئية
توجد العديد من المزايا في البرمجة الشيئية وتشمل هذه المزايا التغليف، وهناك نظرة مفصلة على بعض أهم مزايا البرمجة الشيئية OOP كما يلي:
نمطية لتسهيل استكشاف الأخطاء وإصلاحها
إذا حدث خطأ ما وليس لديك أي فكرة عن مكان البحث، فينبغي التحقق مما إذا كانت المشكلة في ملف الويدجت أم في WhaleFlumper، وهل سيتعين عليك الاطلاع على ملف (sewage.c)؟ أتمنى أن تكون قد علقت على التعليمات البرمجية الخاصة بك.
عند استخدام لغات البرمجة الموجهة للكائنات، تعرف بالضبط أين تبحث، فإذا حدث عطل في جسم السيارة، يجب أن يكون الخلل في فئة السيارات، ولا حاجة للتخلص من أي شيء آخر، وهذا هو أفضل ما يميز التغليف، حيث تكون الكائنات مستقلة ذاتيا، وكل جزء يؤدي وظيفته الخاصة، ويترك الأجزاء الأخرى بمفردها، وتسمح هذه الطريقة أيضا لفريق تكنولوجيا المعلومات بالعمل على عدة كائنات في نفس الوقت، مما يقلل من احتمالية تكرار الأعمال الفردية.
إعادة استخدام الكود من خلال الميراث
فرضًا أن أحد الزملاء يحتاج إلى كائن Racecar وآخر يحتاج إلى كائن ليموزين بالإضافة إلى السيارة الأساسية. يقوم الجميع ببناء أشيائهم بشكل منفصل، ولكن يكتشفون القواسم المشتركة بينهم، وفي الواقع، فكل شيء هو مجرد نوع مختلف من السيارات.
وهذا هو المكان الذي توفر فيه تقنية الوراثة الوقت : يمكنك إنشاء فئة عامة واحدة (سيارة)، ثم تحديد الفئات الفرعية (Racecar وLimousine) التي ترث خصائص الفئة العامة. وبالطبع، لا تزال سيارات الليموزين وRacecar تحتفظ بخصائصها ووظائفها الفريدة.
إذا كان للكائن Racecar حاجة لاستخدام (fireAfterBurners) وللكائن Limousine حاجة لسائق، يمكن لكل فئة تنفيذ وظائفها الخاصة فقط. ومع ذلك، نظرا لأن كلا الفئتين ترثان الجوانب الأساسية من فئة السيارة، مثل وظائف (محرك الأقراص) أو (fillUpGas)، يمكن للفئات المشتقة ببساطة إعادة استخدام التعليمات البرمجية الموجودة بدلا من إعادة كتابة هذه الوظائف.
تعتبر إحدى مزايا نهج البرمجة الشيئية OOP هي القدرة على إجراء تغيير على جميع كائنات السيارة دون الحاجة إلى تغييرها بشكل فردي، حيث يمكن إجراء التغيير على فئة السيارة وتوريثها لجميع كائنات السيارة الأخرى بشكل تلقائي.
المرونة من خلال تعدد الأشكال
استنادًا إلى هذا المثال ، تحتاج الآن إلى عدد قليل من برامج التشغيل ، أو الوظائف ، مثل (driveCar) ، و (driveRaceCar) ، و (DriveLimousine) ، تشترك RaceCarDrivers بعض السمات مع (LimousineDrivers) ، ولكن أشياء أخرى ، مثل RaceHelmets و BeverageSponsorships ، هي فريدة من نوعها.
هذا هو الموضع الذي تأتي فيه تعدد الأشكال الحلو للبرمجة الموجهة للكائنات، وبسبب وجود وظيفة واحدة يمكن تشكيل التغيير للتكيف مع أي فئة موجودة، لذلك يمكن إنشاء وظيفة واحدة في الفئة الأصلية للسيارة وتسمى “drive” دون “driveCar” أو “driveRaceCar”، فقط “drive.
هذه الوظيفة ستعمل مع سائقي سيارات السباق والليموزين وما إلى ذلك، وبالفعل يمكن استخدامها باستدعاء (raceCar.drive(myRaceCarDriver أو (limo.drive(myChauffeur.
حل المشكلات بشكل فعال
تتمتع لغة C بتاريخ برمجي مثير للإعجاب ، ولكن كتابة البرامج بترتيب محدد يشبه لعبة جينغا أثناء ارتداء القفازات. كلما زاد تعقيد البرنامج ، زادت فرصة تعرضه للانهيار. بالمقارنة، يمكن أن تكون كتابة برنامج بترتيب وظيفي في لغات مثل Haskell أو ML أكثر سهولة وكفاءة.
غالبا ما تكون البرمجة الموجهة للكائنات هي الأكثر طبيعية وواقعية، فعندما تحصل على تعليمات لهذا النوع من البرمجة، يمكنك تقسيم برنامجك إلى مشاكل صغيرة يمكن حلها مرة واحدة بكائن واحد.
وهذا لا يعني أن البرمجة الشيئية OOP هو الطريق الصحيح الوحيد، ومع ذلك، فإن مزايا البرمجة الشيئية عديدة، خاصة عندما يتعلق الأمر بحل تحديات البرمجة المعقدة وإضافة أدوات التعليمات البرمجية إلى مجموعة مهاراتك، فإن البرمجة الشيئية OOP هي صديقك، ولديها عمر أطول وفائدة أكبر بكثير من Pac-Man أو البناطيل البارشوت
عيوب البرمجة الشيئية
على الرغم من أن الجودة تعتمد على تجربة الفرق، فإن البرمجة الشيئية تميل إلى إنتاج برامج عالية الجودة، وتتضمن بعض عيوب البرمجة الشيئية التالية:
منحنى التعلم الحاد
قد لا تكون عملية التفكير المتعلقة بالبرمجة الشيء الطبيعي بالنسبة لبعض الأشخاص، وقد يستغرق التعود عليها، فإن إنشاء البرامج بناءً على تفاعل الأشياء أمر معقد، وقد تكون بعض التقنيات الرئيسية في البرمجة، مثل الميراث وتعدد الأشكال، صعبة الفهم في البداية.
حجم برنامج أكبر
يكون حجم برنامج الكائنات أكبر من البرامج الإجرائية، حيث تحتوي عادة على أكثر أسطر التعليمات البرمجية.
البرامج البطيئة
تتميز البرامج الموجهة للكائنات بالبطء عادة مقارنة بالبرامج القائمة على الإجراءات، حيث تتطلب تنفيذ المزيد من الإرشادات.
غير مناسب لجميع أنواع المشاكل
هناك مشاكل تتوافق مع أسلوب البرمجة الوظيفية أو أسلوب البرمجة المنطقية أو أسلوب البرمجة المستند إلى الإجراءات، ولن تنتج برامج فعالة في حالة تطبيق البرمجة الشيئية في هذه الحالات.