![]() |
|
التحميل الزائد للمعاملات Operators Overloading - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182) +--- قسم : قسم مقالات VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=184) +--- الموضوع : التحميل الزائد للمعاملات Operators Overloading (/showthread.php?tid=4823) |
التحميل الزائد للمعاملات Operators Overloading - RaggiTech - 02-10-12 كاتب الموضوع : samerselo
يعرف فيجول بايزيك معاملات للتعابير التي تستخدم الأنواع القياسية للبيانات مثل المنطقية أو الحقيقية. وهي تحدد بعض المعاملات الخاصة بالأغراض Objects مثل Is أو IsNot ولكن بعض المعاملات مثل * و Mod لا تعني شيئا بالنسبة لتلك الأغراض بشكل عام. ومع ذلك يمكنك تعريف معاملات Operators بالنسبة للتراكيب Structures والفئات Classes بحيث تكون الصيغة العامة للمعامل Operator كما يلي كود : [ <attributes> ] Public [ Overloads ] Shared [ Shadows ] _• Attributes خصائص المعامل • Public و Shared جميع المعاملات يجب تعريفها باستخدام محدد الوصول Public أو Shared • Overloads نستخدمه عندما يكون لدينا معامل يأخذ بارامترين من فئة أساسية وفئة مشتقة وفي هذه الحالة يعني أنك تتجاوز المعامل الموجود في الفئة الأساسية • Shadows المعامل يستبدل معامل مماثل موجود في الفئة الأساسية • Widening يبين أن المعامل يحدد تحويل تعريض ينجح دوما في زمن التشغيل وبالتالي فهذا المعامل يجب عليه التقاط مؤشر لجميع الأخطاء الممكن حدوثها. والمعامل CType يجب أن يحتوي على أحد الكلمتين الأساسيتين Widening أو Narrowing • Narrowing يبين أن المعامل يحدد تحويل تضييق ربما يفشل في زمن التشغيل. والمعامل CType يجب أن يحتوي على أحد الكلمتين الأساسيتين Widening أو Narrowing • Symbol رمز المعامل ويجب أن يكون أحد القيم التالية: +, -, *, /, \, ^, &, <<, >>, =, <>, <, >, <=, >=, Mod, Not, And, Or, Xor, Like, IsTrue, IsFalse, CType • Operands تعريف الأغراض التي تتم معالجتها من قبل المعامل بحيث تأخذ المعاملات +, -, Not, IsTrue, and IsFalse بارامتر واحد والمعاملات +, -, *, /, \, ^, &, <<, >>, =, <>, <, >, <=, >=, Mod, And, Or, Xor, Like, CType تأخذ بارامترين • Type جميع المعاملات يجب أن يكون لها نوع بيانات معاد والتحميل الزائد للمعاملات يكون محددا بعدة ضوابط • بعض المعاملات تأتي على شكل أزواج وإن قمت بتعريف واحد منها يجب عليك تعريف الآخر وهي: o = و <> o < و > o >= و <= o IsTrue و IsFalse • في المعاملات العادية والمنطقية يجب أن تظهر الفئة المعرفة للمعامل في المعامل. ومن أجل معاملات تحويل النوع يجب على الفئة أو التركيب الظهور في المعامل أو القيمة المعادة • المعاملان IsTrue و IsFalse يجب أن يعيدا قيمة منطقية • المعامل الثاني لـ << و >> يجب أن يكون عدد صحيح إذا عرفت معاملا يستطيع فيجول بايزيك معالجة ذلك المعامل متبوعا بإشارة = بشكل تلقائي فإن عرفت المعامل + فإن فيجول بايزيك يفهم المعامل =+ تلقائيا طالما أنه لا يمكنك استخدام المعاملين IsTrue و IsFalse بشكل مباشر فيمكنك استخدامهما بشكل غير مباشر فإن قمت بتعريف المعامل IsTrue لفئة ما يستخدمها فيجول بايزيك لتحديد فيما إذا كان استخدام ذلك الغرض كقيمة True في التعبير المنطقي. فعلى سبيل المثال تستخدم العبارة التالية لتحديد فيما إذا كان الغرض c1 يمكن اعتباره True كود : If c1 Then …كود : C3 = C1 AndAlso C2طالما أنك بشكل عام لا يمكنك عمل إجراءين في فيجول بايزيك يختلفان فقط بالقيمة المعادة ولكن يمكن عمل ذلك فقط بالنسبة لمعاملات CType الخاصة بالتحويل بين الأنواع فعندما يحاول البرنامج التحويل بين الأنواع يمكنه تحديد أي معامل يجب عليه استخدامه بمعرفته لنوع القيمة المعادة وفي الكود التالي نرى الفئة Complex التي تمثل ر قم معقد وتحدد المعاملات + و – و * لتعريف عمليات الجمع والطرح والضرب للأرقام المعقدة ويحدد أيضا المعاملات = و <> ومعاملات التحويل التي تحول الرقم المعقد لقيمة معادة من النوع Double لإعطائها أهميتها كود : Public Class Complex |