هل شعرت يوماََ أنك تائِه من كثرة الأكواد المستخدمة في برنامجك ؛ انا مثلك ي صديقي كنت أعاني من هذه النقطة ، أكود كثيرة بطريقة غير منظمة تحتمل الكثير من الأخطاء والكثير من الصعوبة في الوصول إليها، دعني أخبرك عن الأسلوب الأمثل لبناء برمجيات قوية بأسلوب منظم ومرتب يسهل التعامل معها ويسهل الرجوع إليها فيما بعد .
ما هي البرمجة الكائنية التوجه (Object Oriented Programming (OOP
البرمجة كائنية التوّجه ( OOP) هي إحدى نماذج البرمجة الحتمية Imperative Programming التي تتيح للمبرمج إنجاز الوظيفة المطلوبة عبر تحديد مجموعةٍ من الإجرائيات والخطوات المنطقية. فهي تعتمد بالأساس على إنشاء علاقة ارتباط عضوي بين البيانات والمتحولات من جهة، وبين التوابع والإجرائيات من جهةٍ أخرى، وذلك بخلاف البرمجة الإجرائية التي تعتمد على تنفيذ المهمة المطلوبة عبر إجرائياتٍ لا تتضمن أي علاقة أو ارتباط عضوي بين المتحولات، التوابع وبنى التحكم.
الأعمدة الأساسية للبرمجة كائنية التوجه Pillars of OOP
تعتمد البرمجة كائنية التوجه، علي 4 مفاهيم أساسية تمثل الخصائص الفريدة لهذا النموذج البرمجيّ والأعمدة الأساسية لبنائه ، وهذه المفاهيم هي:
- التغليف Encapsulation: هو القدرة على جمع البيانات، المتحولات، التوابع والبنى المختلفة ضمن بنيةٍ واحدة هي الكائن (الغرض)، وهذا يعني أنه يمكننا النظر للكائن على أنه “الغلاف” الذي يجمع بداخله العديد من الأعضاء المختلفة والتي تمتلك علاقاتٍ مع بعضها البعض.
- التجريد Abstraction: هو تحديد مدى ظهور البيانات التي تنتمي للكائن، بحيث يمكن جعل بعضها “عام Public” والآخر “خاص Private“، وهذا يعني أنه يمكن التعامل مع الأعضاء العامة عبر توابع وإجرائيات خارجية لا تنتمي للكائن نفسه، بينما لا يمكن التعامل مع الأعضاء “الخاصة” إلا من قبل التوابع والإجرائيات المعرّفة داخل الكائن نفسه.
- الوراثة Inheritance: هي المفهوم الذي يتيح إنشاء كائناتٍ “ترث” صفات كائناتٍ أخرى . كمثالٍ بسيط، يمكننا تعريف صف عام يمثل الأشكال الهندسية Geometrical Shapes والذي يمتلك أعضاءً هي الطول، العرض، المحيط والمساحة. من هذا الصف نستطيع أن “نرث” صفًا آخر هو الدائرة، والذي يمثل أيضًا شكلًا هندسيًا وبالتالي فإنه “سيرث” كافة الصفات الخاصة به، إلا أنه شكل هندسي فريد إذ يمتلك خاصية أخرى هي نصف القطر. عندما نقوم بإنشاء صف الدائرة اعتمادًا عبر اشتقاقه من صف الأشكال الهندسية، فإننا بعالم البرمجة نقوم بـ “توريث” صفات من صفٍ إلى آخر.
- تعدد الأشكال Polymorphism: هو إعادة استخدام نفس التابع أو العملية ولكن لغاياتٍ وأهدافٍ مختلفة، وبالتالي فإن التابع قد أصبح له أشكال (وجوه) متعددة. لو أردنا أن نأخذ مثالًا من الحياة الواقعية، فإنه يمكن لأي رجل أن يكون أب، زوج، موظف وهاوي قراءة بنفس الوقت، وبالتالي فإن هذا الرجل يمتلك “أشكالًا” متعددة تختلف بحسب السياق والظروف التي يتواجد بها. تعدد الأشكال في البرمجة كائنية التوّجه يمكن أن يتم عبر مفهوم التحميل الزائد Overloading، والذي بدوره ينقسم للتحميل الزائد للعمليات Operators-Overloading والتحميل الزائد للتوابع Functions Overloading. التحميل الزائد للعمليات أو التابع هو الإجرائية التي تتيح إعادة استخدام عملية رياضية ما (مثل الجمع) لتنفذ أهدافًا مختلفة بحسب السياق الذي تأتي ضمنه، وكذلك الأمر تمامًا بالنسبة للتوابع. يأخذ مفهوم تعدد الأشكال نمطًا آخر يرتبط بالصفوف والكائنات المشتقة عبر الوراثة، والتي تتيح استخدام الصف المشتق Derived Class وكأنه الصف الأساسيّ Base Class الذي ورث بعض صفاته منه.
ما هي تجاربكم مع البرمجة كائنية التوجية وكيف استفدتم منها؟ وما هو إنطباعكم عنها ؟
التعليقات