هذه المقالة لمن يعرف صيغ كتابة التصنيفات Syntax ولا يعرف متى يحتاج البرمجة الكائنية أو كيف يطبقها.

لماذا نحتاج البرمجة الكائنية (object-oriented) ؟

أهم الاسباب، لكي نقرّب المنطق البرمجي من المنطق البشري، ولتسريع عملية الانتاج.

كيف إذاً يتم ذلك؟

حتى غير المبرمج، يستطيع ان يعرف كيف يتم ذلك!

من هو غير المبرمج الذي يستطيع تصميم الأصناف ؟

لاتتوقع ان تكون الاجابة مهندس البرمجيات بل أي شخص يستطيع أن يفعلها. عادتاً في انتاج البرمجيات للشركات المتقدمة يكون هناك مستنداً كاملاً للمتطلبات، والمتطلبات تكون متطلبات اوليّة من قبل الشركة الزبون اولاً قبل تعديل المتطلبات من قبل الشركة المنتجة للبرمجية. في مستند المتطلبات تكون الشركة الزبون قد اعدت تصميم اولي للاصناف ولا يشترط ان يفعل هذا مهندس برمجيات او هاوي.

هل مفهوم البرمجة الكائنية سهلاً ؟

البرمجة الكائنية جُعلت لتسهّل العمل والتطوير. فكيف يكون مفهومها صعباً ؟

ايهما افضل العمل بالبرمجة الكائنية، أم الاجرائية ؟

الكائنية في كل الحالات الا اذا كانت البرمجية صغيرة جداً ولن تكبر مستقبلاً، أو البرمجيات الاساسية كالتي تكتب بلغة C ولغات المراحل المتدنية low level programming languages

ألى اي درجة هي سهلة ؟

الى درجة اني سوف اشرحها لك في جملة واحدة واعدك ان تفهمها. حتى لا أبالغ! سوف اضع مثال يدعم تلك الجملة.

في المثال أنت المبرمج وأنا الزبون:

المطلوب نظام تدوين فردي.

وصف النظام:

نظام يحتوي على مواضيع، والمواضيع لها عناوين ومحتوياتها والتعليقات التي تليها. وكل تعليق يحتوي على محتوى وأسم الكاتب/ة وبريده/ا الاكتروني.

الجملة: كل (أسم) له افعال في وصف المشكلة (قد) يكون كائناً، وكل فعل ينتمي الى أي اسم قد يكون وظيفة Function في ذات الكائن.

في مثالنا السابق، أنا كزبون سوف اقدم لك هذا التصميم.

http://i.imgur.com/yjFsqmW.png

ثم عليك انت اعادة هندسة التصميم وتحسينة. لكل خطوة يجب ان يكون سبباً. للتسهيل قد يكون هكذا.

http://i.imgur.com/sRv8Vhz.png

ولو اردنا تمثيل احدى التصنيفات في هذا الرسم البياني باحد لغات البرمجة كـ C++ أو PHP يكون كا التالي:

c++

http://www.codeshare.io/GRklk

php

http://www.codeshare.io/NCIHw

ولكن للأمانة العلمية التصميم الاخير غير وافٍ بالمرة، لهذا أتى مفهوم الوراثة! فلو تلاحظ ان Commenter و Auther بينهما تشابه في الخاصيتين Name و Id ويفترقات في الوظيفة writeNewPost - كتابة موضوع جديد بالنسبة للكاتب - و writeNewComment - كتابة تعليق جديد بالنسبة للمعلق -. لذلك لئلا تعيد كتابة الاكواد قد تستخدم الوراثة ولأسباب أخرى ايضاً، سوف اتطرق اليها في موضوع آخر.

أرني انت تصميمك عزيزي. ولتساعدني في تحسين اسلوبي في الشرح أجب على هذا الاستبيان.

https://docs.google.com/forms/d/1uZ6csc-NRdJkZSlushOGaahktp4P7Tq3B27_9j5ydsw/viewform?usp=send_form