mcse
مرحباا بك في منتدى mcse
تشكرك الادارة على هده الزيارة


انضم إلى المنتدى ، فالأمر سريع وسهل

mcse
مرحباا بك في منتدى mcse
تشكرك الادارة على هده الزيارة
mcse
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

(13) استخراج عضو من فئة

اذهب الى الأسفل

(13) استخراج عضو من فئة Empty (13) استخراج عضو من فئة

مُساهمة من طرف Ebisu الأربعاء يونيو 16, 2010 11:48 am


السلام عليكم و رحمة
الله و
بركاته

في الدرس السابق قمنا بتصميم فئة Date ووضعنا فيها ثلاث صفات تمثل
اليوم و
الشهر و السنة. و قمنا بتصميم وظيفتين احداهما تعطينا قيمة التاريخ و
الأخرى
لوضع و تحديد التاريخ.

في درس اليوم سنقوم بتصميم فئة تستخدم الـ Date هكذا:

(13) استخراج عضو من فئة UseDate_1

في البرنامج السابق في السطر الخامس قمنا باعلان متغير من نوع Date و
أسميناه
birthday، اذاً نحن نحتاج الآن إلى عضو من فئة Date التي كتبناها في
الدرس
السابق.

كي نعرف المتغير من نوع Date نكتب التالي:

Date birthDate;


لكي نفهم الجملة السابقة، علينا أن ننظر إلى الصورة التالية. و هي
تمثّل جزء من
الذاكرة. نريد ان نحجزه للمتغير birthDate من نوع Date.

(13) استخراج عضو من فئة Mem_0

كما هو موضّح في الصورة ان قيمة المتغير في الذاكرة تمثلها علامات
استفهام. ذلك
ان المتغير birthDate ليس كائن في حد ذاته. بل هو متغير لعنوان الكائن.

كي تتم ترجمة الجملة السابقة بدون مشاكل يجب أن يكون ملف Date.class
موجوداً في
نفس الحافظة. (في المستقبل سنتعلم انشاء الله كيف نحدد أماكن الفئات). و
لكن في
الوضع الحالي سنكتفي بوضع هذا الملف مع الملف السابق في نفس الحافظة.

الآن لكي ننشئ الكائن نفسه علينا أن نستخدم الطريقة التالية:

(13) استخراج عضو من فئة UseDate_2

نلاحظ في السطر السابع من البرنامج الموضح في الصورة السابقة هذه
الجملة:


birthDate=new Date();


هممم أعتقد أن لديك الآن العديد من الأسئلة، أليس كذلك؟

اذاً دعنا نكمل الشرح اليوم بطريقة الأسئلة و الأجوبة Smile

مالفرق بين المتغير من نوع Date و المتغير من أي نوع
آخر ممن
ألقينا عليه الضوء في درس المتغيرات؟


ان المتغير من نوع Date هو من فئة قام المبرمج بتعريفها. أي انه متغير
يمثّل
عضواً من فئة. اما المتغيرات سابقة الذكر مثل int و char و boolean فهم
متغيرون
لا ينتمون فعلياً لفئة محددة، و لكنهم يمثلون أنواع المتغيرات البسيطة.
ان
المتغير Date يعتبر أكثر تعقيداً نوعاً ما.


لم قمنا باستخدام الكلمة new؟ و ما الفائدة من السطر
السابع؟


سبق و ضمن شرحنا للسطر الخامس من نفس البرنامج أن اوضحنا ان اعلان
المتغيرات من
نوع الفئات أو ما نطلق عليهم Aggregate Data Types هي في الواقع اعلان
النيّة
عن اعلان المتغير. و لكن ما حدث في السطر السابع، ان المترجم قام
بتهيئة جميع
أجزاء التاريخ الفعلي، و أنشأ كائناً من نوع Date ثم وضع عنوان الذاكرة
لهذا
الكائن في المتغير birthDate.

لم أفهم، أرجو التوضيح أكثر في السؤال السابق؟

دعونا نستخدم الرسوم التوضيحية، لمعرفة ما تم في هذه الجملة:


Date birthDate=new Date();


ان القسم الأول من الجملة (أو في برنامجنا ما هو موجود في السطر
الخامس) يمكن
تمثيله بالصورة التالية:



(13) استخراج عضو من فئة Mem_1



ان القسم المظلل من الصورة يصور لنا ما يعنيه الجزء الأول من الجملة.
انه يعني
اننا قمنا بانشاء متغير (علبة) تحفظ في داخلها عنوان كائن شيئي من نوع
Date. و
لكن لاحظ أن القيمة المبدئية في المتغير غير معرّفة حتى هذه اللحظة
(قبل ان
ننتقل لبقية الجملة). أي اننا نمهد لانشاء كائن من نوع Date و لكننا لم
ننشئه
حتى الآن، لذا وضعنا في داخل المتغير birthDate علامات استفهام.

أما الصورة التالية:



(13) استخراج عضو من فئة Mem_2



فهي تظلل القسم الأخير من الجملة الذي يعني اننا سنقوم بانشاء كائن من
نوع Date
في ذاكرة الكومبيوتر. و لنفرض مجرد فرض ان عنوان هذا المكان الذي وضعنا
فيه
الكائن هو العنوان الموضح في اسفل المنطقة المظللة.

ملاحظة: ان المتغيرات day و month و year سيتم اعطاؤهم القيمة
المبدئية
(0) بشكل اوتوماتيكي. لأنهم ينتمون لكائن، و ليس لوظيفة محددة.

اننا حتى الآن أنشأنا على أحد طرفي الجملة متغيراً لا توجد فيه أي
قيمة. و في
الطرف الآخر أنشأنا في الذاكرة كائناً شيئيّاً من نوع Date. لاحظ ما
سيحدث
الآن:



(13) استخراج عضو من فئة Mem_3



ان علامة المساواة في هذه الجملة تعني ان عنوان الكائن الذي انشأناه في
الذاكرة
سيتم وضعه في المتغير birthDate. و هذه هي طريقة اعطاء المتغير من نوع
Aggregate Data Type القيمة المبدئية.

هل المقصود ان عدم وضع القيمة المبدئية لأي متغير من
هذا
النوع يعني عدم القدرة على استخدام هذا المتغير؟


بالضبط! ان المتغير الشيئي أو الكائني أو الذي نريد أن ننشيء عن طريقه
عضواً من
فئة محددة لابد من اعطائه قيمة مبدئية باستخدام الكلمة new. لأنه كما
لاحظنا من
السيناريو السابق، ان الاكتفاء بتعريف المتغير، يقوم بوضع علامات
استفهام في
المتغير.

في هذا الدرس قمنا بانشاء المتغير من نوع Date في الدرس القادم
سنستخدمه و
نستخدم وظائفه المختلفة.

تحياتي
Ebisu
Ebisu
مبرمج جيد
مبرمج جيد

عدد المساهمات : 45
السٌّمعَة : 50
تاريخ التسجيل : 11/06/2010
العمر : 43

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى