بالنسبة للمبرمجين وعشاق البرمجة، تعد تقنية الفصول في VB نقطة صعبة في التعلم في عملية تطوير البرامج واسعة النطاق والوحدات النمطية (Moudle) وعناصر التحكم (Activeocx) ومكتبات الارتباط (Activedll) والفصول الدراسية (Classmoudle). تشكل هندسة برمجيات منهجية وفعالة، وتكنولوجيا الفصل هي أساس تكنولوجيا المكتبات والتحكم والربط، لذلك، من المفيد جدًا إتقان نظرية الفصول وطرق برمجتها.
(1) التعريف الأساسي ونظرة عامة على التطبيق للفئات ؛
الفئة عبارة عن وحدة تعليمات برمجية عالية المستوى تحتوي على أساليب وخصائص وأعضاء بيانات، ولا تقع ضمن نطاق الوحدة فحسب، بل يمكن أيضًا للمبرمجين استخدامها كعنصر تحكم، ولكن لا يمكنهم ذلك رؤيته ومن الجدير بالذكر أن الطبقات لا يمكن أن تكون موروثة.
تمكننا الفئات من إكمال العمليات المعقدة بكفاءة على واحد أو عدة كائنات محددة. إجراءات الكائن هي أساليب الفئة، وسمات الكائن هي عمليات السمات الخاصة بالفئة. نسبيًا، إذا كان هدف البرمجة عبارة عن مجموعة من الأشياء، فمن المناسب جدًا لنا استخدام الوحدات القياسية، وفي الحالتين التاليتين، يجب استخدام الفئات لمعالجة التعليمات البرمجية:
(1) إنشاء عدد كبير من الكائنات ذات الخصائص المتشابهة؛
(2) تحسين تغليف التعليمات البرمجية.
يعد إنشاء فصل دراسي أمرًا بسيطًا للغاية. عند كتابة التعليمات البرمجية، حدد العنصر "إضافة وحدة نمطية للفصل الدراسي" في قائمة "المشروع" لإضافة فصل دراسي فارغ.
عادةً ما يتم حفظ ملفات الفئة بامتداد .cls.
(2) تنفيذ الأساليب الطبقية ؛
تشبه طريقة الفصل وظيفة الواجهة لمكتبة الارتباط الديناميكي، حيث يمكنها قبول معلمات النوع المحددة من رموز النماذج الأخرى وتمريرها إلى الفصل. بشكل عام، يمكن لطرق الفصل تحديد ما إذا كانت هناك قيمة إرجاع. عادة ما يكون هذا إجراءً عامًا في الفصل. خذ بعين الاعتبار مثال التعليمات البرمجية التالي، الذي يتسبب في رفض مربع كلمة المرور الإدخال غير الحرفي:
(1) كود يشبه cls؛
فحص المتغير OptionExplicit
PRivateWithEventsmytxtAsTextBox
'الطرق الموجودة في هذا الفصل تقبل وتتحكم في مربع كلمة المرور النصية
DimisNUMAsBoolean
'المتغيرات على مستوى الوحدة للفئة
PublicSubAttach(itTEXTAsTextBox)
'اقبل المتغيرات الخارجية في mytxt
Setmytxt=itTEXT
EndSub
PrivateSubmytxt_KeyUp(KeyCodeAsInteger,ShiftAsInteger)
isNUM=(رمز المفتاح>=65)و(رمز المفتاح<=90)
'اختبر ما إذا كان إدخال لوحة المفاتيح في مربع كلمة المرور هو أحرف إنجليزية
IfisNUM=Falseثم
زمارة
mytxt.Text=
'إذا لم يكن الإدخال حرفًا إنجليزيًا، فسيرن الجرس وسيتم مسح محتويات صندوق كلمة المرور.
MsgBox إدخال حرف غير قانوني!
EndIf
Debug.Printmytxt.Text
'تصحيح محتوى مربع كلمة مرور الإخراج
EndSub
""رمز نهاية الفصل الدراسي""
(2) مرجع الفئة ؛
يمكن الرجوع إلى الفئات التي تمت كتابتها بتنسيقين. الطريقة الأولى: myCLS خاص (عام أو خافت) (اسم الفئة المحدد) AsNewcls (اسم الفئة المكتوبة) أكثر ملاءمة لأسلوب البرمجة. قم أولاً بإجراء إعلان على مستوى الوحدة النمطية - DimmyCLSAscls - في رمز النموذج، ثم قم بإجراء تعريف محدد - Setmycls=Newcls في عملية التعليمات البرمجية المحددة. قد تكون هناك اختلافات في كفاءة وبساطة الكود بين هاتين الطريقتين، لكن في ممارسة البرمجة للمؤلف، لا يوجد شعور خاص، ومع ذلك، أفضل الطريقة الأولى لأنها أكثر ملاءمة للكتابة. بالإضافة إلى ذلك، في نهاية الكود، من عادة البرمجة الجيدة جدًا استخدام SetmyCLS=Nothing لإلغاء شغل الموارد للفئة.
في النموذج form1 (يحتوي النموذج على نص التحكم في مربع كلمة المرور 1، passworldchar=*) أضف الكود التالي:
خيار صريح
PrivatemyCLSAsNewcls
'اقتباس cls
PrivateSubForm_Load()
myCLS.AttachText1
"فئة بدء التشغيل."
EndSub
'تذكر إصدار الموارد في نهاية الكود
PrivateSubForm_Unload(CancelAsInteger)
SetmyCLS=لا شيء
نهاية
EndSub
يوضح الكود الموجود في هذه المقالة عملية كتابة التعليمات البرمجية وطريقة استدعاء طريقة الفصل (على الرغم من أنها تشبه إلى حد كبير حدث الفصل). وتأثيره هو أنه إذا تم إدخال حرف غير حرف في مربع كلمة المرور، فسيقوم النظام بذلك سيتم حذف الحلقة ومربع كلمة المرور من البيانات الأصلية - مما يحمي كلمة المرور إلى حد ما.
لا تتطلب طريقة الفصل أي معلمات، وهي مشابهة للوظيفة أو الإجراء العام، كما أنها الأكثر استخدامًا في الفئات. سأناقش في المقالة التالية كيفية استخدام خصائص وأحداث وطرق الفئات للبرمجة الشاملة.
لقد ناقشنا نظرية الفئات، وإنشاء الفئات، وممارسة البرمجة لأساليب الفصول الدراسية. في الواقع، السبب الرئيسي لاستخدام الفئات على نطاق واسع في هندسة البرمجيات هو أنها يمكن أن تقوم بتغليف العديد من السمات اللازمة للبرمجة بسهولة لا يمكّن المبرمجين من التغلب على التعقيد في تصميم وتصحيح عناصر التحكم (ocx) ومكتبات الارتباط (dll) إلى حد معين فحسب، بل يعمل أيضًا على تحسين بساطة وكفاءة أكواد البرنامج - ستناقش هذه المقالة برمجة الفصل بالكامل، بما في ذلك الأساليب والصفات والأحداث الأساسية.
(1) خصائص وتعريفات سمات الطبقة؛
على غرار خصائص عناصر التحكم القياسية، تسمح خصائص الفئة للمستخدم بتعيين قيم ضمن نطاق بيانات محدد، وتتم مشاركة هذه القيم بواسطة أجزاء مختلفة من التعليمات البرمجية داخل الفئة. يتطلب الحصول على الخصائص ونقلها البرمجة من خلال عبارات PropertyLet وPropertyGet. بالطبع، نحتاج أولاً إلى تحديد المتغيرات المقابلة على المستوى العام أو مستوى الوحدة في الفصل.
(2) السمات والتعاريف الأساسية للأحداث؛
كما هو الحال مع أحداث النموذج، تحتوي الفئات أيضًا على حدثين أساسيين، Class_Initialize (يتم تشغيله عند تحميل الفصل) وClass_Terminate (يتم تشغيله عند إلغاء تحميل الفصل)، وكلاهما خاص. في الواقع، يمكننا تجاهل هذين الحدثين تمامًا - طالما أنك تتذكر إكمال أساليب وخصائص الفصل.
يمكن للفئات أيضًا تحديد الأحداث الخاصة بها، والتي تشبه تنسيق برمجة الأساليب، باستثناء أن الكلمة الأساسية WithEvents مطلوبة لإعلان المعلمة، ولا يمكن أن يحتوي الحدث على أي معلمات مسماة أو معلمات اختيارية، ولا يحتوي على قيمة إرجاع.
في الواقع، يمكن للأساليب والخصائص جيدة التنظيم أن تحل محل أحداث الفئات ذات البنية المعقدة تمامًا.
(3) أمثلة برمجة لأساليب الفصل والأحداث والخصائص؛
الغرض من هذا البرنامج هو التحكم في جميع الأحرف الكبيرة والصغيرة والفرز العكسي لمحتويات مربع النص في النموذج من خلال الفئات.
لتسهيل كتابة واستدعاء التعليمات البرمجية، قمت بمراجعة طريقة برمجة التعداد في الفصل.
الكود التالي موجود في الفئة Class1:
خيار صريح
PrivateWithEventsmyTXTAsTextBox
"واجهة معلمة الطريقة."
PublicEnumsTYLE
سمة Lcaseit الصغيرة
سمة الكتابة بالأحرف الكبيرة Lbigit
سمة الفرز العكسي لـ Nlogoit
EndEnum
'التعداد المخصص، يستخدم لتنفيذ التعيين التلقائي للسمات
PrivatemvarBiaozhiAssTYLE
'تنفيذ اتصال ثوابت التعداد
PublicFunctiondONE()AsString'
'يتم استخدام طريقة DONE لتعيين
'قم بإجراء عمليات تحويل الأحرف المقابلة في مربع نص النموذج
'وإرجاع السلسلة المحولة
IfmvarBiaozhi=NlogoitThen
dONE=StrReverse(myTXT)
'الفرز العكسي
ElseIfmvarBiaozhi=LcaseitThen
dONE=LCase(myTXT)
'فرض التحويل بالأحرف الصغيرة
آخر
dONE=UCase(myTXT)
'فرض التحويل بالأحرف الكبيرة
EndIf
وظيفة النهاية
'تنتهي طريقة DONE
PublicPropertyLetBiaozhi(ByValvDataAssTYLE)
'احصل على القيمة المخصصة للسمة
mvarBiaozhi=vData
EndProperty
PublicPropertyGetBiaozhi()AssTYLE
"نقل قيم السمات إلى الفصل."
SetBiaozhi=mvarBiaozhi
EndProperty
PublicSubAttach(itTEXTAsTextBox)
"طريقة فئة الاتصال
SetmyTXT=itTEXT
EndSub
PrivateSubClass_Initialize()
'يتم تنشيط هذا الحدث عند تحميل الفصل
MsgBox مرحبا! يوضح لك هذا البرنامج تقنيات البرمجة باستخدام أساليب الفصل والخصائص والأحداث!
EndSub
PrivateSubClass_Terminate()
'يتم تنشيط هذا الحدث عندما يتم إلغاء تحميل الفصل
MsgBox مرحبا! تذكر ملء الكود بعد إبطال الكائن في Class_Terminate!
EndSub
"لقد انتهى رمز الفصل في كل مكان."
(4) البرمجة المرجعية لرمز النموذج؛
أضف عنصر تحكم النص TEXT1، وعنصر تحكم القائمة المنسدلة COMBO1، وزر الأمر COMMAND1 (CAPTION=بدء التحويل) لتكوين النموذج FORM1، ثم اضبط عناصر التحكم الثلاثة على المواضع المناسبة.
DimmyTAsNewClass1
"مرجع الطبقة
PrivateSubForm_Load()
كومبو1.واضح
Combo1.AddItem سلسلة تحويل الأحرف الكبيرة
Combo1.AddItem تحويل سلسلة صغيرة
سلسلة Combo1.AddItem الفرز العكسي
Combo1.ListIndex=0
'أضف خيارات السمات إلى مربع القائمة
EndSub
PrivateSubCommand1_Click()
'قم بتنشيط الفصل عند الضغط على زر الأمر
myT.AttachText1
'طريقة اتصال المعلمة
SelectCaseCombo1.ListIndex
الحالة0
myT.Biaozhi=Lbigit
الحالة1
myT.Biaozhi=Lcaseit
الحالة2
myT.Biaozhi=Nlogoit
EndSelect
'وفقًا للاختيار الموجود في مربع القائمة، قم بتعيين قيمة لسمة Biaozhi للفئة
'لاحظ أنه في بيئة البرمجة، تتم إضافة قيم السمات المذكورة أعلاه تلقائيًا
Text1.Text=myT.dONE
'أعد السلسلة بعد الفرز
EndSub
PrivateSubForm_Unload(CancelAsInteger)
SetmyT=لا شيء
نهاية
"عادات البرمجة الجيدة."
EndSub
ماذا عن ذلك، يبدو الكود الخاص بنا موجزًا للغاية، ويبدو الأمر وكأنه يستخدم عنصر تحكم، والذي لا يمكن استدعاؤه حسب الرغبة فحسب، بل يمكن أيضًا استخدام وظيفة المطالبة التلقائية لـ VB بشكل ملائم.
(5) ملخص لتقنيات البرمجة الصفية؛
بالمعنى الدقيق للكلمة، تعد الفصول الدراسية تقنية مفيدة للغاية في برمجة VB، كما أنه من الصعب تعلمها وإتقانها. ومع ذلك، يتم استخدامها على نطاق واسع وفعال في مشاريع البرمجيات واسعة النطاق، من أجل تحسين البرمجيات لتحقيق الكفاءة ووضوح التعليمات البرمجية، يجب عليك تجنب استخدام المزيد من الوحدات النمطية للفصل وعناصر التحكم ومكتبات الاتصال واستبدالها بالوحدات النمطية القياسية.
مثال التعليمات البرمجية الموجود في هذه المقالة بسيط نسبيًا، ولكنه يغطي جميع جوانب تقنية برمجة الوحدات النمطية، وآمل أن يتعلم منه المبتدئون وأن يتمكن المبرمجون من مناقشته معًا. يجب أن نؤمن أنه بغض النظر عن مدى تعقيد المباني الشاهقة، فهي كلها مصنوعة من الطوب العادي. وبالمثل، بغض النظر عن مدى تعقيد المشاريع البرمجية، فهي تتكون من بيانات برمجية أساسية ومبرمجين المحلل هو أن البرامج التي تم إنشاؤها بنفس بيانات البرنامج مختلفة. ->