مشروع Arabic PHP .NET Framework : م Collection الدرس الثاني : System.Collections

الناقل : elmasry | الكاتب الأصلى : الحسين | المصدر : www.arabteam2000-forum.com

بسم الله الرحمن الرحيم

المجموعة System.Collections
تعتبر هذه المجموعة بمثابة نواه هذه الإطار حيث تم إستخدام هذه المجموعة كثيرا في بناء بعض المجموعات الأخري ( مثال المجموعة System.Data و مجموعات أخري )
كما سنري لاحقا عند شرح تلك المجموعات

تضم هذه المجموعة الفئات الأساسية وهي
+ Collection Class
تتميز هذه الفئة بالتالي :
- هي الفئة الأم لكل فئات المجموعة System.Collections
- هذه الفئة مشتقة من الفئة Object الموجودة بالمجموعة System
- لا يمكننا تخليق كائنات من هذه الفئة لأنها فئة مجردة (Abstract Class)
- تحمل هذه الفئة مصفوفة عامة (Public Array)

+ Stack Class
تتميز هذه الفئة بالتالي :
- هذه الفئة مشتقة من الفئة Collection
- كما نعلم أن فكرة المكدسة (Stack) تعمل من خلال المفهوم ( Last in First out )
LIFO وتعني أن أخر عنصر تم إضافته لمصفوفة المكدسة هو أول عنصر يتم حذفه من المصفوفة
أو بإسلوب أخر أننا عندما نقوم بإجراء عملية الحذف أو السحب (Pop) يتم سحب أول عنصر بمصفوفة المكدسة
( وهذا يمكن تخيله من خلال حركة المكدسة من إسفل إلي أعلي )
وتتم عملية الإضافة أو الدفع (Push) من خلال إضافة العنصر في أعلي المكدسة (أي يكون العنصر الأول بالمصفوفة)
( وهذا يمكن تخيله من خلال حركة المكدسة من أعلي إلي إسفل )

ملاحظة : لاحظ أن فكرة الإعادة Redo والتراجع Undo تتم من خلال مفهوم المكدسة

+ Queue Class
تتميز هذه الفئة بالتالي :
- هذه الفئة مشتقة من الفئة Collection
- كما نعلم أن فكرة الصف (Queue) تعمل من خلال المفهوم ( First in First out )
FIFO وتعني أن أول عنصر تم إضافته لمصفوفة الصف هو أول عنصر يتم حذفه من المصفوفة
أو بإسلوب أخر أننا عندما نقوم بإجراء عملية الحذف (Dequeue) يتم سحب أول عنصر بمصفوفة الصف
وتتم عملية الإضافة (Enqueue) من خلال إضافة العنصر في أخر الصف (أي يكون العنصر الأخير بالمصفوفة)

+ ArrayList Class
- هذه الفئة مشتقة من الفئة Collection
- تتميز بالتعامل مع عناصر المصفوفة من خلال موقع العنصر بالمصفوفة ( أي Index )

+ Hashtable Class
- هذه الفئة مشتقة من الفئة Collection
- تتميز بالتعامل مع عناصر المصفوفة من خلال مفاتيح المصفوفة ( أي Key)

ويوضح الشكل التالي تركيب المجموعة System.Collections
(لاحظ أن الأعضاء أمثال الدوال والثوابت والمتغيرات التي تحتها خط تعبر عن أعضاء إستاتيكية Static members)

Resized to 65% (was 1011 x 702) - Click image to enlargePosted Image


لاحظ أن المجلد System.Collections يحتوي علي التالي
- الملف Collection.php يحتوي علي الفئة Collection
- الملف Stack.php يحتوي علي الفئة Stack
- الملف Queue.php يحتوي علي الفئة Queue
- الملف ArrayList.php يحتوي علي الفئة ArrayList
- الملف Hashtable.php يحتوي علي الفئة Hashtable

كيف يمكننا إستخدام هذه الفئات :
سوف ندرج في مجلد ال bin مجموعة ال System.Collections كما يلي
Posted Image

يمكننا إستخدام تلك الفئات من خلال عمل تضمين including لمحتويات الملف التالي
WebApplication2/bin/System.Collections.php
وهذا هو محتوي الملف

<?
include_once "System.php";

include_once "System.Collections/Collection.php";
include_once "System.Collections/Stack.php";
include_once "System.Collections/Queue.php";
include_once "System.Collections/ArrayList.php";
include_once "System.Collections/Hashtable.php";
?>


مثال سريع لإستخدام الفئة Stack
<script language="php">
// إستخدام مكتبة System.Collections
include_once "../bin/System.Collections.php";

    // Creates and initializes a new Stack.
    $myStack = new Stack();
    $myStack->Push( "The" );
    $myStack->Push( "quick" );
    $myStack->Push( "brown" );
    $myStack->Push( "fox" );

    // Displays the Stack.
    echo "<pre>" . $myStack->ToString() . "</pre>";

    // Removes an element from the Stack.
    echo "[Pop] : " . $myStack->Pop();
    echo "<pre>" . $myStack->ToString() . "</pre>";

    // Removes another element from the Stack.
    echo "[Pop] : " . $myStack->Pop();
    echo "<pre>" . $myStack->ToString() . "</pre>";

    // Views the first element in the Stack but does not remove it.
    echo "[Peek] : " . $myStack->Peek();
    echo "<pre>" . $myStack->ToString() . "</pre>";
</script>


وقد أرفقت هنا مثال لإستخدام المجموعة System.Collections
(لاحظ أن هذا الإطار يعمل مع الإصدار الخامس PHP5)

وأنا في أنتظار اي إستفسار في هذا الموضوع

أنتظروني قريبا مع الدرس القادم والفئة System.RegularExpressions , والله الموفق
 
ملف مرفق(ملفات)
 
ملف مرفق  WebApplication2.rar (5.3كيلو )