هام V2 هنا. إنه تغيير كبير. آخر إصدار v1 كان v1.4.0
DynaMix ( Dynamic Mixins ) هو نهج بديل للبرمجة الموجهة للكائنات وتعدد الأشكال الديناميكي. فهو يتيح للمستخدمين إنشاء وتعديل كائنات متعددة الأشكال في وقت التشغيل. اللغة المستهدفة الرئيسية هي C++، ولكن لغة C مدعومة أيضًا.
المكتبة هي وسيلة لإنشاء بنية المشروع وليس تحقيق غرضه. فهو يساعد على التوسعة ، وقابلية القراءة ، وقابلية التوسع ، وقابلية التشغيل البيني . وهو يركز على الحد الأقصى من الأداء والحد الأدنى من الحمل على الذاكرة .
ينطبق DynaMix على هندسة البرمجيات للأنظمة ذات الكائنات المعقدة بما في ذلك، على سبيل المثال لا الحصر:
تستخدم المكتبة النوع dynamix::object
كعنصر نائب، والذي يمكن توسيع مثيلاته مع الفئات الموجودة (mixins)، وبالتالي توفير مثيل معين مع ميزات mixin لجميع تلك الأنواع. من المحتمل أن أهم أنواع ميزات mixin هي الرسائل: الكائنات الوظيفية التي يمكن اعتبارها في مصطلحات C++-OOP كطرق. ميزات Mixin قابلة للتجاوز وتستخدم الربط المتأخر والإرسال المفرد. البث الأحادي والبث المتعدد ممكنان.
فيما يلي مثال صغير لما قد يبدو عليه الكود باستخدام المكتبة:
// assuming my_objects.get_ally(0); is a way to get an ally to the
// main character in a game
dynamix::object& obj = my_objects.get_ally( 0 );
// now let's make the object think some positive thoughts about the
// main character
think (obj); // C++ doesn't allow us to have obj.think().
// DynaMix's messages are like standalone functions
// composition
mutate (obj, dynamix::add<flying_creature>());
// object can now respond to fly()
fly (obj); // ...instead of obj.fly()
// mutation
mutate (obj
, dynamix::remove<ally>()
, dynamix::add<enemy>()
);
think (obj); // the same object now thinks negative thoughts about the main
// character, since it's no longer an ally, but an enemy
فيما يلي بعض الميزات الرئيسية للمكتبة:
std::polymorphic_allocator
للسماح بضبط التخصيصات وتحقيق مكانة ذاكرة التخزين المؤقت في الأجزاء المهمة من التعليمات البرمجيةstd::function
من المعروف أن المشاريع التالية تستخدم DynaMix كجزء أساسي من بنية برامجها:
الوثائق جزء من الريبو في الدليل doc/.
نرحب بالمساهمات في شكل قضايا وطلبات سحب.
يتم توزيع هذا البرنامج بموجب ترخيص برمجيات MIT.
انظر ملف الترخيص المصاحب أو انسخه هنا.
حقوق الطبع والنشر © 2013-2024 بوريسلاف ستانيميروف، زهاري كاراديوف
.
تم ترخيص شعار DynaMix بموجب ترخيص Creative Commons Attribution 4.0 الدولي. حقوق الطبع والنشر © 2018 منطقة55جيت
DynaMix v2 هو إعادة كتابة كاملة وعلى الرغم من أنه يحتوي على نفس فكرة الإصدار 1، إلا أنه غير متوافق معه، وله واجهة مختلفة، وتنفيذ مختلف لمعظم الميزات، ومصطلحات مختلفة للبعض.
الإصدار الأخير من DynaMix v1 كان v1.4.0. الوثائق متاحة هنا
يمكن العثور على قائمة بأبرز الاختلافات بين الإصدارين v1 وv2 هنا.
تم تطوير DynaMix في البداية باسم Boost.Mixin ولكنها الآن مكتبة منفصلة لا تعتمد على مجموعة مكتبات Boost.