الوحدات والهياكل والفصول

هناك ثلاث طرق فقط لتنظيم VB.NET تطبيق.

  • الوحدات
  • الهياكل
  • الطبقات

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

  • "الوحدة النمطية هي ملف قابل للتنفيذ محمول ، مثل type.dll أو application.exe ، ويتكون من فئة وواجهات أو أكثر وواجهات."
  • "تحدد عبارة Class نوع بيانات جديد."
  • "تحدد عبارة الهيكل نوع القيمة المركبة التي يمكنك تخصيصها."

صحيح اذا. هل من أسئلة؟

لكي تكون أكثر عدالة تجاه Microsoft ، لديهم صفحات وصفحات (والمزيد من الصفحات) من المعلومات حول كل هذه التي يمكنك خوضها. ويجب أن يكونوا دقيقين قدر الإمكان لأنهم يضعون المعيار. وبعبارة أخرى ، فإن وثائق Microsoft تقرأ أحيانًا مثل كتاب القانون لأنه يكون كتاب قانون.

ولكن إذا كنت تتعلم .NET فقط ، فقد يكون الأمر مربكًا للغاية! عليك أن تبدأ في مكان ما. يعد فهم الطرق الأساسية الثلاث التي يمكنك من خلالها كتابة التعليمات البرمجية في VB.NET مكانًا جيدًا للبدء.

instagram viewer

يمكنك كتابة VB.NET التعليمات البرمجية باستخدام أي من هذه النماذج الثلاثة. وبعبارة أخرى ، يمكنك إنشاء استمارة القنصلية في VB.NET Express والكتابة:

الوحدة النمطية 1
الرئيسية من الباطن()
MsgBox ("هذه وحدة!")
نهاية فرعية
وحدة نهاية
الفئة Class1
الرئيسية من الباطن()
MsgBox ("هذه صف")
نهاية فرعية
نهاية الفصل الدراسي
هيكل هيكل 1
تعتيم myString كسلسلة
الرئيسية من الباطن()
MsgBox ("هذا هيكل")
نهاية فرعية
الهيكل النهائي

هذا لا يجعل أي بمعنى كبرنامج ، بالطبع. الفكرة هي أنك لا تحصل على خطأ في بناء الجملة لذا فهو "قانوني" كود VB.NET.

هذه النماذج الثلاثة هي الطريقة الوحيدة لتشفير جذر ملكة النحل لكل .NET: الكائن. العنصر الوحيد الذي يقاطع تناظر الأشكال الثلاثة هو البيان: تعتيم myString كسلسلة. هذا يتعلق بالبنية كونها "نوع بيانات مركب" كما تنص Microsoft في تعريفها.

شيء آخر يجب ملاحظته هو أن جميع الكتل الثلاث لها الرئيسية من الباطن() فيهم. عادة ما يُطلق على أحد أهم المبادئ الأساسية لـ OOP التغليف. هذا هو تأثير "الصندوق الأسود". بمعنى آخر ، يجب أن تكون قادرًا على معالجة كل كائن بشكل مستقل ويتضمن ذلك استخدام روتين فرعي مسمى إذا أردت ذلك.

الطبقات

الفصول الدراسية هي المكان "الصحيح" للبدء ، لأنه مايكروسوفت يلاحظ أن "الفصل هو لبنة أساسية في البرمجة الشيئية (OOP)." في الواقع ، يعامل بعض المؤلفين الوحدات والهياكل على أنها أنواع خاصة فقط من الفئات. الفئة موجهة للكائنات أكثر من الوحدة النمطية لأنها ممكنة فوري (قم بعمل نسخة من) فصل وليس وحدة.

بمعنى آخر ، يمكنك الكود ...

نموذج الطبقة العامة 1
نموذج فرعي خاص 1 تحميل (_
مرسل ByVal كنظام. موضوع، _
ByVal e كنظام. EventArgs) _
يعالج MyBase. حمل
خافت myNewClass As Class1 = New Class1
myNewClass. ClassSub ()
نهاية فرعية
نهاية الفصل الدراسي

(تم التأكيد على إنشاء الصف.)

لا يهم ما إذا كانت الطبقة الفعلية نفسها ، في هذه الحالة ، ...

الفئة العامة Class1
الفئة الفرعية ()
MsgBox ("هذه فئة")
نهاية فرعية
نهاية الفصل الدراسي

... في ملف بمفرده أو جزء من نفس الملف مع Form1 الشفرة. يعمل البرنامج بنفس الطريقة بالضبط. (لاحظ أن Form1 هي فئة أيضًا.)

يمكنك أيضًا كتابة رمز الفصل الدراسي الذي يتصرف كثيرًا مثل الوحدة النمطية ، أي بدون إنشاء رمز له. هذا يسمى أ مشترك صف دراسي. توضح المقالة "Static" (أي "Shared") مقابل Dynamic Types in VB.NET هذا بمزيد من التفاصيل.

حقيقة أخرى عن الطبقات يجب أن تبقى في الاعتبار. أفراد (خصائص وأساليب) الفئة موجودة فقط أثناء وجود مثيل للفئة. اسم هذا تحديد النطاق. هذا هو ، نطاق من مثيل لفئة محدودة. يمكن تغيير الكود أعلاه لتوضيح هذه النقطة بهذه الطريقة:

نموذج الطبقة العامة 1
نموذج فرعي خاص 1 تحميل (_
مرسل ByVal كنظام. موضوع، _
ByVal e كنظام. EventArgs) _
يعالج MyBase. حمل
خافت myNewClass As Class1 = New Class1
myNewClass. ClassSub ()
myNewClass = لا شيء
myNewClass. ClassSub ()
نهاية فرعية
نهاية الفصل الدراسي

عندما الثانية myNewClass. ClassSub () يتم تنفيذ البيان ، أ NullReferenceException يتم طرح الخطأ لأن ClassSub العضو غير موجود.

الوحدات

في VB 6 ، كان من الشائع رؤية البرامج حيث كانت معظم الشفرة في وحدة نمطية (A .BASملف بدلا من ، على سبيل المثال ، في شكل ملف مثل Form1.frm.) في VB.NET ، توجد كل من الوحدات والفصول .VB الملفات. السبب الرئيسي وراء تضمين الوحدات النمطية في VB.NET هو إعطاء المبرمجين طريقة لتنظيم أنظمتهم من خلال وضع التعليمات البرمجية في أماكن مختلفة لضبط النطاق والوصول الشفرة. (وهذا هو ، كم من الوقت يوجد أعضاء الوحدة النمطية وما هي التعليمات البرمجية الأخرى التي يمكن أن تشير إلى الأعضاء وتستخدمهم.) في بعض الأحيان ، قد ترغب في وضع التعليمات البرمجية في وحدات منفصلة فقط لتسهيل العمل معها.

جميع وحدات VB.NET مشترك لأنه لا يمكن استنساخها (انظر أعلاه) ويمكن تمييزها صديق أو عامة بحيث يمكن الوصول إليها إما داخل نفس التجميع أو كلما تمت الإشارة إليها.

الهياكل

الهياكل هي الأقل فهمًا للأشكال الثلاثة للكائنات. إذا كنا نتحدث عن "الحيوانات" بدلاً من "الأشياء" ، فإن الهيكل سيكون Aardvark.

الفرق الكبير بين الهيكل والفئة هو أن الهيكل هو نوع القيمة والفصل هو نوع مرجع.

ماذا يعني ذلك؟ أنا سعيد لأنك سألت.

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

خافت myInt مثل عدد صحيح = 10

... وقمت بفحص موقع الذاكرة المخزنة فيه myIntستجد القيمة 10. ترى أيضًا هذا موصوفًا بأنه "يتم تخصيصه على المكدس".

المكدس والكوم هي طرق مختلفة لإدارة استخدام ذاكرة الكمبيوتر.

النوع المرجعي هو كائن حيث يتم تخزين موقع الكائن في الذاكرة. لذا فإن العثور على قيمة لنوع مرجعي هو دائمًا بحث من خطوتين. أ خيط مثال جيد على نوع المرجع. إذا أعلنت أ خيط مثله ...

تعتيم myString كـ String = "This is myString"

... وقمت بفحص موقع الذاكرة المخزنة فيه myString، ستجد موقع ذاكرة آخر (يسمى أ المؤشر - هذه الطريقة في القيام بالأشياء هي جوهر اللغات بأسلوب C). سيتعين عليك الانتقال إلى هذا الموقع للعثور على القيمة "This is myString". غالبًا ما يسمى هذا "تخصيص على كومة الذاكرة المؤقتة". المكدس و كومة الذاكرة المؤقتة

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

تعود أصول برمجة الهياكل إلى اللغات الموجهة للملفات مثل Cobol. في تلك اللغات ، تمت معالجة البيانات عادةً كملفات مسطحة متسلسلة. تم وصف "الحقول" الموجودة في سجل من الملف بقسم "تعريف البيانات" (يسمى أحيانًا "تخطيط السجل" أو "دفتر النسخ"). لذا ، إذا احتوى سجل من الملف على:

1234567890 ABCDEF9876

الطريقة الوحيدة لمعرفة أن "1234567890" كان رقم هاتف ، وكان "ABCDEF" معرفًا وكان 9876 98.76 دولارًا أمريكيًا من خلال تعريف البيانات. تساعدك الهياكل على تحقيق ذلك في VB.NET.

هيكل هيكل 1
خافت myPhone كسلسلة
تعتيم myID كسلسلة
تعتيم myAmount كـ String
الهيكل النهائي

لأن أ خيط هو نوع مرجعي ، فمن الضروري الحفاظ على الطول نفسه مع VBFixedString السمة للسجلات ذات الطول الثابت. يمكنك العثور على شرح موسع لهذه السمة والسمات بشكل عام في المقالة السمات في VB .NET.

على الرغم من أن الهياكل هي كائنات غير قياسية ، إلا أنها تمتلك الكثير من الإمكانات في VB.NET. يمكنك ترميز طرق ، وخصائص ، وحتى الأحداث ، ومعالجات الأحداث في الهياكل ، ولكن يمكنك أيضًا استخدام تعليمات برمجية أكثر بساطة ولأنها أنواع قيمة ، يمكن أن تكون المعالجة أسرع. على سبيل المثال ، يمكنك إعادة ترميز البنية أعلاه كما يلي:

هيكل هيكل 1
خافت myPhone كسلسلة
تعتيم myID كسلسلة
تعتيم myAmount كـ String
Sub mySub ()
MsgBox ("هذه هي قيمة myPhone:" & myPhone)
نهاية فرعية
الهيكل النهائي

واستخدمها هكذا:

تعتيم myStruct باسم البنية 1
myStruct.myPhone = "7894560123"
myStruct.mySub ()

إنه يستحق وقتك للعب مع الهياكل قليلاً ومعرفة ما يمكنهم القيام به. إنها واحدة من الزوايا الفردية لـ VB.NET التي يمكن أن تكون رصاصة سحرية عندما تحتاج إليها.