![]() |
|
Collection & DataBase Part 1 - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182) +--- قسم : قسم مقالات VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=184) +--- الموضوع : Collection & DataBase Part 1 (/showthread.php?tid=12801) |
Collection & DataBase Part 1 - silverlight - 23-07-15 السلام عليكم و رحمة الله و بركاته مقدمة: كمية الأسئلة الخاصة باستخدام الداتا بيز مثل MS Access و SQL من كثرتها أصبحت شئ غير عادي في الموقع والملحوظة أن معظم الأسئلة تتمركز حول كيفية التعامل مع الداتا بيز و قراءة البيانات بأساليب مختلفة. أنا مفهومي للداتا بيز يتلخص في أنها تستخدم في حفظ البيانات لكن و لكي نتعامل مع البيانات هل نحن في حاجة الي استخدام أساليب الداتا بيز التقليدية في واقع الأمر أنا تقريبا لم أفكر يوما في بناء برنامج داتا بيز و السبب أنني لا أعمل في مجال البرمجيات نهائيا بالتأكيد ليس هذا تقليلا من شأن مجال البرمجيات أو حتي تقليلا من مثل تلك البرامج فهي بالنهاية أسلوب حياة و كل شئ بالنهاية مرتبط بإحتياجات السوق و متطلباته لكن الشئ المؤكد أن تلك البرامج لها سوق جيدة جدا في الوطن العربي ومن هنا تأتي أهميتها للكثير من مريدي مجال البرمجيات. عموما أعتقد و الله أعلم انه من الأفضل ان نستخدم ملفات الداتا بيز للتحزين و القراءة فقط ثم و لكي نتعامل مع البيانات من الأفضل ان نفكر في استخدام Collection خاصة ان امكانيات Collection في الدوت نت تتفوق كثيرا علي مثيلاتها من الملفات الموجودة في فضاء الاسماء System.Data بالنهاية هذه مجرد وجهة نظر خاصة بي و هي تحتمل الصواب و الخطأ خاصة أنه لا يوجد ثوابت في البرمجة و كما يقول المثل الشعبي المصري .... كل شيخ و له طريقة .... فأنا أقتبس هنا من تلك المقولة و أقول كل مبرمج و له أسلوب. كيف نبني Collection هناك أسلوبان لنفعل هذا : الأسلوب الأول هو أن نستخدم Collections أوGeneric Collections الموجودة في الدوت نت و نطور بها أو نستخدمها كما هي. الأسلوب الثاني هو أن نبني Collection من الصفر الأمر بالنهاية متروك للمبرمج .... عموما و في كلتا الحالات سنجد أن كل شئ أصله Arrays لكن علينا أن نتذكر أنناوعندما تبني Collection الخاصة بنا هذا سوف يقلل من احتياج برامجنا الي النسخ المتقدمة FrameWork أيضا قد يتساءل البعض لماذا أصنع السيارة طالما السيارة تمت صناعتها بالفعل الاجابة ببساطة هنا هي اننا نحاول أن نقوم ب تفكيك السيارة لنفهم كيف تمت صناعتها ثم بعد ذلك نستطيع أن نطور في محتويات السيارة هيا نبني Collection لكن قبل أن نفعل هذا لنسأل أنفسنا الأسئلة التالية : لماذا أحتاج الي بناء Collection و ما هو الهدف من هذه Collection ماذا سوف نخزن في هذه Collection هل أحتاج الي أن أقارن المدخلات الموجودة في هذه Collection هل أحتاجي الي أن أنسخ Collection هل أحتاج الي أن أقوم بالبحث في هذه Collection هل أحتاج الي عمل Sort للمدخلات الموجودة في Collection هل هذه Collection يجب أن تدعم Enumeration أو بمعني أدق هل سنحتاج أن Collection تدعم استخدام جملة For Each وبما أننا نتحدث هنا عن الداتا بيز فهل نحتاج الي أن نجعل Collection التي سوف نقوم ببنائها تدعم برامج الداتا بيز الإجابة علي كل تلك الأسئلة بالإضافة الي اي أسئلة اخري قد تخطر علي عقل المبرمج أثناء كتابته للكود هي التي سوف تحدد و بشكل كبير الي ما نجتاج أن نكتبه من كود لبناء Collection الخاصة بنا بناء Collection بسيطة كبداية لنفترض انن نريد بناء مصفوفة أو Collection إسمها VB4ArabStringCollection و من إسم الكلاس سنجد أن المدخلات هنا ستكون عبارة عن String و الهدف هنا سيكون إضافة أو حذف المدخلات التي هي عبارة عن هذا String أيضا و لكي نجعل هذه Collection تشبه ملفات الدوت نت لذلك سنجعلها تدعم خاصية Enumeration او جملة For Each لذلك سوف نستخدم IEnumerable & IEnumerator Interfaces أيضا و لكي نستطيع استرجاع نسخة من Collection او نقوم بعمل Clone لذلك سوف نستخدم ICloneable Interface الشكل المبدئي للكود سيكون كالتالي حيث سنجد ان الكلاس الرئيسي VB4ArabStringCollection يقوم بعمل Implementation لكل من ICloneable & IEnumerable Interfaces و هناك كلاس داخلي اخر اسمه VB4ArabStringCollectionEnumerator و هذا الكلاس سوف يكون بمثابة Enumerator كود : Public Class VB4ArabStringCollectionالأن لنأخذ كل كلاس علي حده و نضيف له Method أو Functions أو Property كيفما شئنا و نكتب الكود الخاص به الكلاس الرئيسي VB4ArabStringCollection أولا : قبل ان نضيف اي شئ نحتاج الي تعريف متغير عبارة عن Array وهي سوف تعمل هنا بمثابة مخزن داخلي نقوم بتخزين البيانات به. و هنا سوف نستخدم الكلاس ArrayList لأن له بعض المميزات البسيطة يمكن استخامها في عمل BinarSearch أو Sort أو Reverse الي اخره ولمزيد من المعلومات يمكنك عزيزي القارئ ان تقرأ أكثر عن الكلاس ArrayList في اللينك ArrayList كود : Public Class VB4ArabStringCollectionثانيا: لنكتب Constructor و المقصود هنا Sub New الخاص ب الكلاس الرئيسي و من خلاله نبدأ قيمة Internal List كود : Public Class VB4ArabStringCollectionثالثا : نضيف للكلاس الرئيسي بعض Property و بعض Method الخاصة بإضافة و حذف البيانات و نستخدم InnerList لحذف و اضافة البيانات كود : Public ReadOnly Property InnerList As ArrayListرابعا: لنكتب الكود الخاص ب الدالة Clone و هنا يمكننا أن نكتب هذه الدالة بأكثر من أسلوب و ستجدون ذلك موضحا داخل الكود الخاص ب الدالة كود : ' Clone/copy the collectionخامساو أخيرا: لا يتبقي لنا في الكلاس الرئيسي سوي أن نكتب الكود الخاص ب الدالة GetEnumerator في واقع الأمر هناك أسلوبان لكتابة هذه الدالة الأسلوب الأول هو أن نستغني تماما عن الكلاس VB4ArabStringCollectionEnumerator و نستخدم GetEnumerator الخاصة ب InnerList و بذلك تكون Collection الخاصة بنا جاهزة للإستخدام و الكود االتالي يوضح ذلك كود : ' Returns an instance of class VB4ArabStringCollectionEnumeratorالأسلوب الثاني هو أن نكتب الكلاس VB4ArabStringCollectionEnumerator ثم نستخدمه من داخل هذه الدالة و الكود التالي يوضح ذلك كود : ' Returns an instance of class VB4ArabStringCollectionEnumeratorو الكود التالي يوضح شكل الكلاس VB4ArabStringCollectionEnumerator كود : #Region " Enumerator "كيف نستخدم Collection الجديدة افتح مشروع و أضف له إثنان ComboBox ثم اكتب الكود بالشكل التالي في الحدث Load الخاص بالفورم كود : Public Class Form1يتبع في المشاركات اللاحقة ...... هناك شئئ اخير وهو عبارة عن سؤال موجه للأخوة المبرمجين العرب الكبار وأتمني أن تتسع صدورهم لسؤالي هذا. هل من المنطق أنه لا يوجد بالموقع برنامج داتا بيز محترم ليكون بمثابة نقطة إنطلاق للمبرمجين الصغار .... هل فكر أحدكم يوما ماذا سوف يجيب الله سبحانه وتعالي حين يسأله ماذا فعلت ب علمك الذي أعطاه الله لك؟ هناك ميزة رائعة و جيدة جدا في مشاركة الأخرين أفكارك ألا و هي أنك حين تكتب شيئا ستجد من يعدل لك علي الكود أو يناقشه معك أو يطوره أو يكتبه بشكل أفضل و هذا مكسب رائع أيضا هذا سوف يؤدي الي إثراء الموقع و بالتالي تعم الفائدة علي الجميع طبعا هذا لا يحدث في المواقع العربية إلا نادرا عموماالهدف النهائي هو أن نتعلم من بعضنا البعض بالنهاية اقول للجميع لا تخافوا علي ما تكتبونه من أن يتم سرقته او يتم إستخدامه تحت إسم شخص اخر أو في برامج أشخاص أخرين لأنه و بالنهاية الكثير من البرمجيات تتجه الي Open Source و ايضا برامج Reflection لم تدع اسرارا في الدوت نت إلا و كشفت عنها. أيضا عدد المبرمجين العرب ليس كثيرا و بالتالي السوق مفتوح للجميع من أجل الكسب المادي الحلال تقبلوا تحياتي وأعتذر عن الإطالة عليكم وأدعو الله ان يكون هذا الموضوع مفيدا للبعض منكم اخوكم مهندس عمر RE: Collection & DataBase - silverlight - 25-07-15 الكود التالي يوضح شكل الكلاس كاملا و في المشاركات التالية سنوضح كيفية اضافة صفات و طرق اخري للكلاس بل وسنضيف له دوال تجعل من الممكن استخدامه في برامج الداتا بيز التقليدية كود : Public Class VB4ArabStringCollection |