الإشارات والفتحات

الإشارات والفتحات هي بنية لغوية تم تقديمها في Qt [ 1 ] للتواصل بين الكائنات، مما يُسهّل تطبيق نمط المراقب مع تجنب كتابة التعليمات البرمجية المتكررة . الفكرة هي أن عناصر واجهة المستخدم الرسومية ، وغيرها من الكائنات، يمكنها إرسال إشارات تحتوي على معلومات الأحداث، والتي يمكن للكائنات الأخرى استقبالها باستخدام دوال أعضاء خاصة تُعرف بالفتحات. يشبه هذا مؤشرات الدوال في لغتي C/C++، ولكن نظام الإشارات/الفتحات يضمن صحة أنواع وسائط الاستدعاء.

يتوافق نظام الإشارات/الفتحات بشكل ممتاز مع تصميم واجهات المستخدم الرسومية . وبالمثل، يمكن استخدام هذا النظام لأغراض أخرى غير متعلقة بواجهات المستخدم الرسومية، مثل إشعارات أحداث الإدخال/الإخراج غير المتزامن (بما في ذلك المقابس، والأنابيب، والأجهزة التسلسلية، وما إلى ذلك)، أو لربط أحداث انتهاء المهلة بمثيلات الكائنات والأساليب أو الدوال المناسبة. يتميز النظام بسهولة استخدامه، ولا يتطلب كتابة أي كود للتسجيل/إلغاء التسجيل/الاستدعاء، لأن مُجمِّع الكائنات الوصفية (MOC) في Qt يُنشئ البنية التحتية اللازمة تلقائيًا.

يمكن تنفيذ نظام تحديث برامج جداول البيانات باستخدام الإشارات والفتحات بحيث يتم إخطار/تحديث الخلايا التابعة لها عند تغيير خلية ما.

تطبيقات بديلة

توجد بعض تطبيقات أنظمة الإشارات/الفتحات المبنية على قوالب C++ ، والتي لا تتطلب مُصرّف الكائنات الوصفية الإضافي المستخدم في Qt، مثل libsigc++ و sigslot و vdk-signals و nano-signal-slot و neosigslot و Signals و boost.signals2 و Synapse و Cpp::Events و Platinum و JBroadcaster و KDBindings . تدعم لغات البنية التحتية للغة المشتركة (CLI)، مثل C#، بنيةً مشابهةً، وإن كانت بمصطلحات وبنية مختلفة: حيث تؤدي الأحداث دور الإشارات، بينما تؤدي المندوبات دور الفتحات. يوجد تطبيق آخر للإشارات في ActionScript 3.0 ، مستوحى من أحداث C# والإشارات/الفتحات في Qt. بالإضافة إلى ذلك، يمكن أن يكون المندوب متغيرًا محليًا، تمامًا مثل مؤشر الدالة ، بينما يجب أن تكون الفتحة في Qt عضوًا في فئة مُعلنة على هذا النحو. يوفر نظام GObject المبني على C وظائف مماثلة عبر GSignal. في لغة D، يتم تنفيذ ذلك بواسطة std.signals.

انظر أيضاً

المكتبات

  • جافا: sig4j - متعدد الخيوط، آمن من حيث النوع، يعتمد على التعليق التوضيحي FunctionalInterface الذي تم تقديمه في جافا 8 .
  • C++: vdk-signals - آمن للاستخدام في بيئة متعددة الخيوط، وآمن من حيث النوع، ومكتوب بلغة C++11 مع متغيرات ذرية.

مراجع

  1. "الإشارات والفتحات - QtCore 5.1" . مشروع Qt. 2013-07-04. مؤرشف من الأصل في 10 أكتوبر 2013. تم الاطلاع عليه في 2013-07-04 .