#1
|
||||
|
||||
الدرس الثلاثون : ال Collections دورة .net 2008
بسم الله الرحمن الرحيم . السلام عليكم ورحمة الله وبركاته . في تطبيقاتنا البرمجية المختلفة عادة ما نلجأ لعمل container يحتوي على عدة عناصر ، من اجل ذلك كانت ال array ورأينا ان بامكاننا عمل array من الارقام والنصوص واخيراً حتى من فئات مختلفة . إلا اننا فد نحتاج إلى بعض المهام الاكثر من تلك التي توفرها لنا ال array ، من اجل هذا وجدت ال collections المختلفة ، في درسنا هذا سوف نتعرف عليها إن شاء الله . ال interfaces في System.Collections : لو راجعنا الواجهات الموجودة في ال collection لوجدنا الواجهات التالية : ICollection : تحتوي هذه الواجهة على بعض النقاط الاساسية مثل ال size وال IsSynchronized وخلافه ، لها الشكل العام التالي : C#: كود PHP:
كود PHP:
تعرفنا عليها سابقا . IDictionary : تستخدم كما هو واضح من اسمها من اجل الادلة ، يمكن استخدامها لتخزين مثلاً بيانات الموظفين وعناوينهم بحيث يمكن العثور بعد ذلك على الشخص بدلالة اسمه او عنوانه ، تحتوي على دوال للاضافة والحذف وخلافه . الشكل العام لها بالشكل التالي : C#: كود PHP:
كود PHP:
تم شرحها سابقاً . IEnumerator تم شرحها سابقا . IDictionaryEnumerator لو لاحظت في IDictionary ستجد الدالة GetEnumerator ، هذا هو ال interface الخاص بهذه الدالة ، لها الشكل العام التالي : C#: كود PHP:
كود PHP:
يختص باعادة ال hashcode لل collection المعين باستخدام الدالة GetHashCode . IList قائمة ، هذا كل ما في الأمر ، تحتوي على عدة دوال تسهل التعامل معها للاضافة والبحث والحذف وخلافه الشكل العام لها بالشكل التالي : c#: كود PHP:
كود PHP:
يحتوي على الفئات التالية : ArrayList Hashtable Queue SortedList Stack لن نختصر في هذا الموضوع نظراً للاستخدامات المتعددة لهذه الفئات ، لذا سنبدأ في شرح كل منها ببعض الاختصار . ArrayList : هي قائمة array كما هو واضح من الاسم ، تتميز بنفس سمات ال array من حيث تخزينها لعدة بيانات ، اضافة لمميزات القائمة التي تسهل عمليات الاضافة والتعديل والترتيب والحذف وخلافه داخل عناصر هذه المصفوفة . لنفترض ان لدينا فئة (سيارة) السابقة والتي تحتوي على اسم السيارة وموديلها ، كنا نعرف مصفوفة منها باستخدام الأمر التالي : c#: كود PHP:
كود PHP:
بداية قم بعمل using ل System.Collection لتكون قادراً على التعامل المباشر معها لاحقاً . c#: كود PHP:
كود PHP:
C#: كود PHP:
كود PHP:
c#: كود PHP:
كود PHP:
c#: كود PHP:
كود PHP:
C#: كود PHP:
كود PHP:
C#: كود PHP:
كود PHP:
C#: كود PHP:
كود PHP:
c#: كود PHP:
كود PHP:
C#: كود PHP:
كود PHP:
HashTable : واحد من طرق تخزين البيانات data structure ، مهمته الاساسية تسهيل البحث عن البيانات المرتبطة ، إذا لم تكن قد مرت عليك هذه ال hash table من قبل فانصحك بالتعرف عليها من خلال ويكبيديا هنا : http://en.wikipedia.org/wiki/Hash_table في السابق كنا نقوم بتكوين ال hashtable عبارة عن Linked List يرتبط كل عنصر فيه ب Linked list اخرى ، وكنا نقوم بعمل دواله واجراءاته المختلفة ، أما الآن فيمكنك ببساطة تعريف Hashtable والبدء في وضع البيانات فيه مباشرة باستخدام الأوامر التقليدية Add,AddRange و Remove وخلافه مما تعلمناه في الدرس السابق . Queue : الترجمة الحرفية له في الطابور ، ومع اني لا استسيغ بعض الترجمات لكن لا بأس من توضيح ان ال Queue ما هو إلا طابور فعلاً ، حيث يتم دفع البيانات إليه باستخدام Enqueue واخراجها باستخدام Dequeue، أول الداخلين هو اول الخارجين فنحن هنا نتحدث عن طابور حقيقي . إذا كنت تبرمج برنامج لتلقي طلبات العملاء ، فمن الطبيعي ان تضعها في طابور ليتم معالجة الاسبق بالوصول اولاً ، في السيرفرات ايضاً ، وربما اشهر امثلة ال Queue هو البروسيسور ( المعالج ) حيث يتم ترتيب المهمات ليتم ادخالها إلى المعالج ، الأول وصولاً للطابور هو الأول تنفيذاً بابسط صورة ، لكن لا تنس انه في نظم المعالجات الحديثة هناك العديد من العناصر التي تتحكم في دخول البيانات مثل الاولوية اضافة لنظام ال slides حيث لا يتم تنفيذ ال task مرة واحدة ... الخ . لا نريد ان نبتعد كثيراً ، سنفترض طابور العملاء بالشكل التالي : c#: كود PHP:
vb.net: كود PHP:
قبل النهاية اشير فقط إلى ان الدالة Dequeue تعيد العنصر الأول وتقوم بحذفه مباشرة من الطابور ، أما الدالة Peek فهي تعيد اول عنصر في الترتيب ولكنها تحتفظ به في الطابور كما كان . في العصور الغابرة كان هناك الكثير والكثير حول ال Queue وكيفية تطبيقه باستخدام ال linked list ، وال circular queue والكثير مما يمكن ان تكون قد اطلعت عليه إذا كنت قد درست Data Structure . Stack : مثل ال Queue فيما عدا انه يتبع تقنية LIFO - Last Input First Output ، حيث ان العنصر الآخير في الدخول هو الأول في الخروج ، يتم ادخال العناصر باستخدام Push ويتم اخراجها باستخدام pop ، ال Peek تقوم بمهمتها كما هي في عرض العنصر الأول وهو في حالتنا الآخر دخولاً دون حذفه من ال Stack . تعريف ال Stack يتم ببساطة بالشكل التالي : C#: كود PHP:
كود PHP:
يسهل تصور استخدامات من اجل ال Queue ، ذلك ان معظم تطبيقات حياتنا اليومية تعتمد على ذلك ، حيث الواصل أولاً يخدم اولاً ، لكن ال Stack بمبدئة المنافي للعدالة ربما سيكون غريباً بعض الشيء تطبيقه في حياتنا الحقيقية ، لذا فإن استخدام ال Stack يقتصر في العادة على تطبيقات الكومبيوتر . ابسط استخدام لل Stack هو حل المعادلات في البروسيسور ، إن المعادلة : A + B تدخل إلى البروسيسور بالشكل التالي : AB+ يسمى هذا الاسلوب باسم postfix، وفي البروسيسور يتم ادخالهم في stack لتنفيذهم حيث ان تنفيذهم لن يتم بترتيب الوصول ، مثال آخر في ترجمة ال Compilers ايضاً . في المرفقات برنامج يوضح كيفية التحويل بين postfix و infix كان احد مشاريع الكلية في الفرقة الثالثة ل FUTEX Group ، يوضح البرنامج كيفية التحويل وكيفية يقوم البروسيسور بوضعهم في stack وتنفيذهم ، قم باختيار View لاستعراض سرعة عرض الخطوات ، يمكنك الحل باستخدام الارقام او الرموز ويمكنك الاختيار فيما بينهما من اعلى النافذة . هذا إذا كنت مهتماً ببعض التفاصيل . http://vb4arab.com/vb/uploaded/3/21207604046.rar مزيد من التفاصيل تجدها في موقع MSDN هنا : http://msdn2.microsoft.com/en-us/lib...49(VS.71).aspx كل ما سبق في هذا الدرس ينطبق تحت علم Data Structure ، يمكنك الانطلاق من هذه النقطة إذا كنت ترغب في معرفة الكثير عن هذا العالم الذي يتداخل معك كثيراً في عالمك ، سيفيدك ان تكون مطلعاً على اساسياته اضافة لعلم ال Algorithms . ايضاً هناك ما يعرف باسمSystem.Collections.Specialized ويحتوي على فئات اخرى اكثر تخصصاً مشتقة من الفئات السابقة . والله الموفق ... والسلام عليكم ورحمة الله وبركاته .
|
|
|
المواضيع المتشابهه | ||||
الموضوع | كاتب الموضوع | المنتدى | مشاركات | آخر مشاركة |
الدرس السادس عشر : ال OverLoading دورة .net 2008 | khaledbelal | دورة .NET 2008 من منتدى فيجوال بيسك للعرب | 1 | 03-02-2011 03:43 PM |
الدرس التاسع عشر : ال Encapsulation دورة .net 2008 | khaledbelal | دورة .NET 2008 من منتدى فيجوال بيسك للعرب | 0 | 02-20-2010 03:07 PM |
الدرس الرابع عشر : this دورة .net 2008 | khaledbelal | دورة .NET 2008 من منتدى فيجوال بيسك للعرب | 0 | 02-19-2010 07:58 PM |
الدرس العاشر : التراكيب Structure دورة .net 2008 | khaledbelal | دورة .NET 2008 من منتدى فيجوال بيسك للعرب | 0 | 02-18-2010 04:33 PM |
الدرس التاسع : ال Enumeration دورة .net 2008 | khaledbelal | دورة .NET 2008 من منتدى فيجوال بيسك للعرب | 0 | 02-18-2010 04:27 PM |