مزايا البرمجة الشيئية
بدأت OOP (البرمجة الكينونية) أو البرمجة الشيئية في الثمانينيات ، ولكنها على عكس الموضات العصرية ، وشخصيات ألعاب الفيديو ، لا يزال نموذج البرمجة هذا قويًا ، بعد هذه السنوات العديدة ، وقد أصبحت البرمجة الشيئية OOP، جزءًا أساسيًا من تطوير البرمجيات ، وبفضل انتشار لغات مثل Java ، و C ++ ، لا يمكنك تطوير برامج للجوال ، إلا إذا كنت تفهم النهج الموجه نحو الكائنات ، وينطبق الشيء نفسه على تطوير الويب الجاد ، نظرًا لشعبية لغات OOP مثل Python و PHP و Ruby.
ويمكن أن يكون التعرف على فكرة البرمجة الشيئية ، أمرًا صعبًا بالنسبة لبعض محترفي تكنولوجيا المعلومات ، فقد تتساءل عن سبب احتياجك للكائنات ، حتى عندما يمكنك استخدام النهج من أعلى لأسفل ، للبرمجة المنظمة التقليدية بلغات مثل Visual Basic.
وإذا كنت قد كتبت هذا النوع من البرامج ، فمن المحتمل أنك معتاد على تقسيم المشكلات الكبيرة ، إلى مشكلات فرعية ، وحلها في وحدات منفصلة من التعليمات البرمجية ، أو قد تكون لديك خبرة في البرمجة الوظيفية ، التي تعامل عناصر التعليمات البرمجية ، كوظائف رياضية دقيقة ، وتمنعها من التأثير على عناصر أخرى ، أي لا آثار جانبية.
ومع ذلك ، عليك أن تتعامل مع البرمجة الشيئية OOP ، وسترى أنها طريقة جديدة تمامًا لحل المشكلات ، فالمفهوم الأساسي هو أنه بدلاً من كتابة برنامج ، تقوم بإنشاء فئة ، وهو نوع من القالب يحتوي على متغيرات ووظائف ، والكائنات عبارة عن أمثلة مستقلة عن تلك الفئة ، ويمكنك جعلها تتفاعل بطرق ممتعة ومثيرة. [1]
مزايا البرمجة الشيئية
تكمن مزايا البرمجة الشيئية ، في هذا النوع من التغليف ، وإليك نظرة تفصيلية على بعض أهم مزايا البرمجة الشيئية OOP كالتالي :
نمطية لتسهيل استكشاف الأخطاء وإصلاحها
حدث خطأ ما ، وليس لديك أي فكرة عن مكان البحث ، فهل المشكلة في ملف Widget ، أم في WhaleFlumper ، وهل سيكون عليك المرور عبر ملف (sewage.c) ، آمل أن تكون علقت على التعليمات البرمجية الخاصة بك.
فعند العمل بلغات برمجة موجهة للكائنات ، فأنت تعرف بالضبط أين تبحث ، فلو تعطل جسم السيارة ، يجب أن تكون المشكلة في فئة السيارات ، ولست مضطرًا للتخلص من أي شيء آخر ، وهذا هو أفضل ما يميز التغليف ، فالكائنات قائمة بذاتها ، وكل جزء من الوظائف يقوم بعمله الخاص ، بينما يترك البتات الأخرى وحدها ، وأيضًا تسمح هذه الطريقة لفريق تكنولوجيا المعلومات ، بالعمل على كائنات متعددة في نفس الوقت ، مع تقليل فرصة أن يكرر شخص واحد ، وظائف شخص آخر. [2]
إعادة استخدام الكود من خلال الميراث
بافتراض أنه بالإضافة إلى كائن السيارة ، يحتاج أحد الزملاء إلى كائن Racecar ، ويحتاج آخر إلى كائن ليموزين ، حيث يبني الجميع أشياءهم بشكل منفصل ، ولكن يكتشفون القواسم المشتركة بينهم ، وفي الواقع ، كل شيء هو في الحقيقة مجرد نوع مختلف من السيارات.
وهذا هو المكان الذي توفر فيه تقنية الوراثة الوقت : قم بإنشاء فئة عامة واحدة (سيارة) ، ثم حدد الفئات الفرعية (Racecar و Limousine) التي ترث سمات الصف العام ، وبالطبع ، لا تزال سيارات الليموزين و Racecar تتمتع بخصائصها ووظائفها الفريدة.
فإذا كان كائن Racecar يحتاج إلى طريقة لـ ( fireAfterBurners) وكان كائن Limousine يتطلب سائقًا ، يمكن لكل فئة تنفيذ وظائف منفصلة لنفسها فقط ، ومع ذلك ، لأن كلا الفئتين ترثان الجوانب الأساسية من فئة السيارة ، على سبيل المثال طرق (محرك الأقراص) أو (fillUpGas) ، يمكن للفئات الموروثة ببساطة ، إعادة استخدام التعليمات البرمجية الموجودة ، بدلاً من كتابة هذه الوظائف مرة أخرى.
ماذا لو كنت تريد إجراء تغيير على جميع كائنات السيارة ، بغض النظر عن النوع ، هذه ميزة أخرى لنهج البرمجة الشيئية OOp ، ما عليك سوى إجراء تغيير على فئة سيارتك ، وسوف ترث جميع كائنات السيارة ببساطة الرمز الجديد.
المرونة من خلال تعدد الأشكال
استنادًا إلى هذا المثال ، تحتاج الآن إلى عدد قليل من برامج التشغيل ، أو الوظائف ، مثل (driveCar) ، و (driveRaceCar) ، و (DriveLimousine) ، تشترك RaceCarDrivers بعض السمات مع (LimousineDrivers) ، ولكن أشياء أخرى ، مثل RaceHelmets و BeverageSponsorships ، هي فريدة من نوعها.[3]
هذا هو المكان الذي يأتي فيه تعدد الأشكال الحلو للبرمجة الموجهة للكائنات ، ونظرًا لأن وظيفة واحدة ، يمكنها تشكيل التغيير للتكيف مع أي فئة تكون فيها ، فيمكنك إنشاء وظيفة واحدة في فئة السيارة الأصلية ، وتسمى (drive) ، وليس (driveCar) أو (driveRaceCar) ، ولكن فقط (drive).
وستعمل هذه الوظيفة مع RaceCarDriver و LimousineDriver وما إلى ذلك ، وفي الواقع ، يمكن أن يكون لديك (raceCar.drive (myRaceCarDriver ، أو (limo.drive (myChauffeur.
حل المشكلات بشكل فعال
تتمتع لغة مثل C بإرث مذهل في تاريخ البرمجة ، ولكن كتابة البرامج بلغة من أعلى إلى أسفل ، تشبه لعب Jenga أثناء ارتداء القفازات ، كلما ازداد تعقيدها ، زادت فرصة انهيارها ، وفي الوقت نفسه ، يمكن أن تكون كتابة برنامج على غرار وظيفي بلغة مثل هاسكل ، أو ML عمل روتيني.
وغالبًا ما تكون البرمجة الموجهة للكائنات ، هي أكثر الطرق الطبيعية والواقعية ، فبمجرد الحصول على تعليق لها ، تسمح لك لغات البرمجة الشيئية OOP بتقسيم برنامجك إلى مشكلات صغيرة ، يمكنك حلها ، كائن واحد في كل مرة.
و
هذا لا يعني أن البرمجة الشيئية OOP هو الطريق الحقيقي الوحيد ، ومع ذلك فإن مزايا البرمجة الشيئية عديدة ، خاصة عندما تحتاج إلى حل تحديات البرمجة المعقدة ، وتريد إضافة أدوات التعليمات البرمجية إلى مجموعة المهارات الخاصة بك ، فإن البرمجة الشيئية OOP هو صديقك ، ولديه عمر أطول ، وفائدة أكبر بكثير من Pac-Man أو parachute pants
.
عيوب البرمجة الشيئية
على الرغم من أن الجودة تعتمد على تجربة الفرق ، فإن البرمجة الشيئية تميل إلى أن تنتج برامج عالية الجودة ، وتتضمن بعض عيوب البرمجة الشيئية التالي :
منحنى التعلم الحاد
قد لا تكون عملية التفكير المتضمنة في البرمجة الشيئية ، أمرًا طبيعيًا بالنسبة لبعض الأشخاص ، وقد يستغرق التعود عليها ، فإن إنشاء البرامج على أساس تفاعل الأشياء أمر معقد ، وقد تكون بعض تقنيات البرمجة الرئيسية ، مثل الميراث وتعدد الأشكال ، صعبة الفهم في البداية.[4]
حجم برنامج أكبر
حجم برنامج أكبر ، حيث تتضمن البرامج الموجهة للكائنات ، عادة أسطرًا من التعليمات البرمجية أكثر من البرامج الإجرائية.
البرامج البطيئة
تكون البرامج الموجهة للكائنات عادة ، أبطأ من البرامج القائمة على الإجراءات ، حيث تتطلب عادةً تنفيذ المزيد من الإرشادات.
غير مناسب لجميع أنواع المشاكل
هناك مشاكل تلائم أسلوب البرمجة الوظيفية ، أو أسلوب البرمجة المنطقية ، أو أسلوب البرمجة المستند إلى الإجراء ، ولن ينتج عن تطبيق البرمجة الشيئية ، في هذه المواقف برامج فعالة.