الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Mixins In Javafx 1.2 Technology

بدأه طارق إبراهيم في 20 سبتمبر 2009 · 5 رد · 606 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع
اقتباس
With the release of version 1.2 of JavaFX technology, developers have a new style of class inheritance: a mixin. A mixin is a type of class that can be inherited by a subclass, but it is not meant for instantiation. In this manner, mixins are similar to interfaces in the Java programming language. However, the difference is that mixins may actually define method bodies and class variables in addition to constants and method signatures.

لمتابعة الموضوع على موقع Sun

Mixins In JavaFX 1.2 Technology

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#2

لا أدري هل أنا فهمت غلط أم لا، لكن يبدو لي أنها مثل الabstract class.

وبالنسبة للوراثة المتعددة فالجافا مستغنية عنها منذ سنين، والناس تأقلموا مع ذلك، فما فائدة إعادتها؟؟

وبالنسبة لتقنية JavaFX بصفة عامة فلست متحمسا لتعلمها. كنت قرأت بعض الدروس لكني تفاجأت عند خروج نسخة جديدة من الSDK بأن الكثير من الكلاسات إما تم حذفها أو تم تغيير إسمها أو تم نقلها لحزمة أخرى، فما الجدوى من أن أتعلم شيئا ربما لن يكون موجودا في نسخة جديدة

#3

السلام عليكم ...

اقتباس
وبالنسبة للوراثة المتعددة فالجافا مستغنية عنها منذ سنين، والناس تأقلموا مع ذلك، فما فائدة إعادتها؟؟

الوراثة المتعددة لم يتم الاستغناء عنها لأنها مضرة, لاتصدق الكلام الذي يقال في المدونات :)

الوراثة المتعددة أزيلت لسبب واحد, الأول أن إضافتها إلى اللغة سيصعب من بناء المترجمات بشكل كبير. إضافة إلى تعقيد اللغة, و وجوب إضافة أدوات لمنع حصول الـ Diamond. عدا عن ذلك فالوراثة المتعددة أداة كغيرها.

Mixins: Something Else You Can't Do With Java Generics?

بالطبع, Mixins كما يقول Bruce Eckel أحد أكثر استخدامات الوراثة المتعددة مع الـ Templates في ++C. عموماً إذا أردت إلقاء نظرة, أنا تكلمت بشكل خفيف حول الموضوع:

Professional Data Structure Libraries In Cpp

لاحظ أن الموضوع حول الـ policy-based design, و لكن الـ Mixins أحد الأدوات المستخدمة كثيراً في طريقة التصميم المذكورة, و ستجد بعض الأمثلة البسيطة الموضوع و خصوصاً من STL.

تحياتي...

#4
Khaled.Alshaya كتب:

الوراثة المتعددة لم يتم الاستغناء عنها لأنها مضرة, لاتصدق الكلام الذي يقال في المدونات :)

الوراثة المتعددة أزيلت لسبب واحد, الأول أن إضافتها إلى اللغة سيصعب من بناء المترجمات بشكل كبير. إضافة إلى تعقيد اللغة, و وجوب إضافة أدوات لمنع حصول الـ Diamond. عدا عن ذلك فالوراثة المتعددة أداة كغيرها.

سبق أن سمعت هذا الكلام، وممكن يكون صحيح. ولكن لا يمكن الإنكار أن الوراثة المتعددة تجلب معها بعض المشاكل

بالنسبة لمقال bruce eckel فلم أفهم المثال جيدا، ما فهمته أن الهدف هو إدماج فئتين عند الruntime، إذا كان ما فهته صحيح فما الفائدة؟؟

وجاري قراءة موضوعك

تم تعديل هذه المشاركة بواسطة herch في 21 سبتمبر 2009 في 01:34

#5

أهلاً herch,

أولاً كل عام و انتم بخير :)

اقتباس
بالنسبة لمقال bruce eckel فلم أفهم المثال جيدا، ما فهمته أن الهدف هو إدماج فئتين عند الruntime، إذا كان ما فهته صحيح فما الفائدة

ليس دمج فئتين وقت الـ runtime و إنما وقت الـ compile-time :)

تكلمت عن الموضوع أيضاً بشكل مبسط في سؤال للأخ ASDen, ستجد مثال مبسط في نهاية الموضوع, و لكن الفرق أن مثالي يستخدم عدد صغير من الفئات:

استفسار عن ال Partail Template Specialization

إذا لم تجد كلامي منطقياً, فخذ المثال التالي, تصور أننا نقوم ببناء stream للإدخال و آخر للإخراج, و سميناهم InputStream و OutputStream. الآن كيف نصنع Stream عام, بمعنى أن للإدخال و الإخراج ؟

ببساطة لو أن Java تدعم الوراثة المتعددة, لكان الأمر أبسط من البساطة:

class Stream extends OutputStream, InputStream
{
}

هذا مطبق في مكتبة ++C القياسية للإدخال و الإخراج, فمثلاً هناك istream و ostream كـ Abstract Classes, و هناك ifstream للتعامل مع ملف للإدخال و هناك ofstream للتعامل مع ملف للإخراج, و هناك fstream للإدخال و الإخراج و الذي هو عبارة عن Mixin من النوعين لا أكثر :)

تحياتي...

#6
اقتباس
الوراثة المتعددة لم يتم الاستغناء عنها لأنها مضرة, لاتصدق الكلام الذي يقال في المدونات regular_smile.gif

الوراثة المتعددة أزيلت لسبب واحد, الأول أن إضافتها إلى اللغة سيصعب من بناء المترجمات بشكل كبير. إضافة إلى تعقيد اللغة, و وجوب إضافة أدوات لمنع حصول الـ Diamond. عدا عن ذلك فالوراثة المتعددة أداة كغيرها

كلامك منطقي وجدا ودليل اكثر على كلامك ان الجافا يوجد فيها وراثة متعددة وهي حالة شاذة خلقت ولكن بعد تعقيد ترجمي يعني مترجمات خاصة

public interface Hello extends HelloOperations, org.omg.CORBA.Object, org.omg.CORBA.portable.IDLEntity 
{
} // interface Hello

المصدر

بالتوفيق

الله معكم

مواضيع مشابهة