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


.:رسمه مبدع:. طريقك نحو الابداع
 
الرئيسيةالبوابهأحدث الصورالتسجيلدخول
اهلاوسهلا بكم في منتديات برامج نت ارجو من جميع الزوار التسجيل مع تحيات $الادارة$

 

 تابع دوره فى لغه الجافا13

اذهب الى الأسفل 
كاتب الموضوعرسالة
PrAmJnEt
مدير عام
مدير عام
PrAmJnEt


ذكر عدد المساهمات : 396
نقاط : 146692
العمر : 65

تابع دوره فى لغه الجافا13 Empty
مُساهمةموضوع: تابع دوره فى لغه الجافا13   تابع دوره فى لغه الجافا13 Emptyالإثنين مايو 11, 2009 1:35 pm

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

في الدرس السابق قمنا بعمل مهم جداً. و سنقوم اليوم بنفس العمل و لكن بطريقة أسهل. باستخدام مفهوم الـ Constructor.
أرجو
أن تقوم بقراءة المقدّمة على الأقل من الدرس السابق (إن لم تكن فعلت) و
الأفضل أن تطلع عليه بأكمله حتى تكون على علم بما نفعله هنا.
تابع دوره فى لغه الجافا13 Title_rightتابع دوره فى لغه الجافا13 Spaceتمهيدتابع دوره فى لغه الجافا13 Title_left
لننظر إلى هذه البرامج الثلاثة سابقة الذكر و الشرح في الدرس السابق :
لقد قمنا بتعريف فئة النقطة في الدرس السابق بهذا الشكل:

تابع دوره فى لغه الجافا13 L15_point01

ان
تعريف لفئة النقطة بهذا الشكل يجعلها تواجه مشكلة. و هي أننا نضطر لإعطاء
قيماً لمتغيراتها x و y بشكل يدوي في الفئات الأخرى التي تستخدمها و
تستدعيها. كما فعلنا في هذه الخطوات من فئة Painter:

تابع دوره فى لغه الجافا13 L15_painter01p4

إذا نحن بحاجة لوسيلة تجعلنا أثناء تكوين أي عضو من فئة النقطة Point أن نعطي قيماً لمتغيراته. ما أقصده بالتكوين هو هذه الجملة:

تابع دوره فى لغه الجافا13 L16_new
إن عبارة تابع دوره فى لغه الجافا13 L16_new1 تعني أننا سنقوم باستخدام بتكوين عضو فعلي من فئة النقطة Point. هممو لكن ألا تلاحظون شيئاً؟.. لاحظو معي أن تابع دوره فى لغه الجافا13 L16_new2 اسم الفئة نفسه يليه قوسان. و هذا ما يعرف بالـ Constructor. وهو عبارة عن طريقة التكوين التي يتم بها انشاء العضو من الفئة.
تابع دوره فى لغه الجافا13 Title_rightتابع دوره فى لغه الجافا13 Spaceكيف نقوم بإعادة تعريف الConstructor؟تابع دوره فى لغه الجافا13 Title_left
إن تابع دوره فى لغه الجافا13 L16_new2 يعرف باسم: Default Constructor. و هي الذي توفره أي فئة موجودة في الآلة التخيلية. و لا يحتاج المبرمج لتعريفه و لا للإشارة إليه.
و
يمكن للمبرمج إذا أراد أن يقوم بتعريف الـ Constructor الذي يريده. لنفرض
مثلاً في فئة النقطة. أننا أردنا يقوم المبرمج بتمرير قيماً صحيحة
للمتغيرين x و y أثناء تكوين العضو من فئة النقطة Point. أي لنفرض أنه
أراد أن يكتب هذه الجملة:
تابع دوره فى لغه الجافا13 L16_niceway
بدلاً من هذه الطريقة:
تابع دوره فى لغه الجافا13 L16_badway
الطريقة الأولى طريقة لطيفة أليس كذلك؟ أفضل و اسهل عند استخراج الأعضاء من فئة النقطة.
لنتأمّل الكود التالي الجديد لفئة النقطة نفسها:

تابع دوره فى لغه الجافا13 L16_point02

لاحظ السطر 6. ستجد أننا كتبنا كوداً قد يبدو عجيباً للوهلة الأولى:

تابع دوره فى لغه الجافا13 L16_constructor
نلاحظ
أننا كتبنا اسم الفئة، و هي في حالتنا Point، ثم فتحنا أقواساً. و في داخل
الأقواس قمنا بتعريف سلسلة من المتغيرات تفصل بينهما الفاصلة (,).
من الضروري جداً جداً أن نكتب سلسلة المتغيرات بترتيب محدد. أي أننا نقوم بتوقع الاحداثي السيني، ثم الاحداثي الصادي و ليس العكس.

تابع دوره فى لغه الجافا13 L16_cons

لاحظ
في نهاية السطر السادس يوجد قوس مجموعة. مما يعني أننا سنقوم بكتابة بعض
الكود و لا تنس أن تغلق قوس المجموعة بعد الانتهاء من كتابة ما تريد.
والآن
لننظر إلى داخل الـ Constructor. ما الذي قمنا بتعريفه. في السطر 7 و 8.
نلاحظ أننا أخذنا القيم من المتغيرات التي مررت لنا عبر تكوين العضو، و
وضعناها في المتغيرات الخاصة بالعضو.
المتغيرات الممررة xx و yy هي
متغيرات مؤقتة. تنتهي بمجرد الانتهاء من تكوين العضو (و الوصول لقوس
المجموعة الموجود في السطر التاسع. و لعلنا نفصّل في هذا أكثر في درس
الوظائف ان شاء الله.

نقطة توقف..
عندما
تحدثنا عن الـ Constructor الافتراضي. و قلنا أنه يتوفّر بشكل افتراضي لأي
فئة. فإن ذلك يتم إذا كانت الفئة لا تحتوي على Constructor أما اذا قام
المبرمج بتعريف Constructor خاص به، فإن الـ Constructor الافتراضي أو
default constructor ذو القوسين الفارغين لا يتم ايجاده. أي أن عبارة تابع دوره فى لغه الجافا13 L16_new ستنتج خطأً في الترجمة. ذلك أن الconstructor الموجود يختلف في عدد المتغيرات الممررة عن تابع دوره فى لغه الجافا13 L16_new2.
إذا رغب المبرمج في constructor ذو سلسلة متغيرات ممررة فارغة مثل: تابع دوره فى لغه الجافا13 L16_new2، فعليه أن يكتبه بنفسه.
يمكن
للفئة أن يكون لها أكثر من constructor. كل منهم يختلف عن الآخر في عدد أو
نوع المتغيرات في السلسلة الممررة لكل منهم، أو كلاهما.
تابع دوره فى لغه الجافا13 Title_rightتابع دوره فى لغه الجافا13 Spaceالبرامج مرة أخرىتابع دوره فى لغه الجافا13 Title_left
آن
و قد تعلمنا الـ constructors. نستطيع كتابة البرامج الموجودة في الدرس
السابق بشكل أفضل مما سبق. فبرنامج النقطة سيكون بهذا الشكل كما كتبناه
معاً قبل قليل:
تابع دوره فى لغه الجافا13 L16_point02

لنحاول أن نكتب برنامج الخط المستقيم بنفس الطريقة. بأن نقوم بتجهيز constructor خاص به، هكذا:
تابع دوره فى لغه الجافا13 L16_line

نلاحظ أننا استخدمنا نفس المفهوم. قمنا بتعريف constructor له متغيرين في سلسلة التمرير parameter list من نوع Point.
والآن لنلق نظرة على الفئة Painter:
تابع دوره فى لغه الجافا13 L16_painter
لندرس معاً الأسطر من 5 إلى 8:
تابع دوره فى لغه الجافا13 L16_line12

قليل من التركيز من فضلك. فالآن المرحة الحرجة التي نقوم فيها بتطبيق ما قمنا بالتجهيز له مع بداية الدرس.
السطر 5، نقوم فيه بتعريف أو اشهار اثنين من المتغيّرات من نوع Line. اسم الاول line1 و الثاني line2.
في السطر 7 نقوم بعدة خطوات. انظر الشكل:
تابع دوره فى لغه الجافا13 L16_explain

لنذهب
إلى الخطوة رقم 1 و التي تجدون بجانبها رقمين 10 و 10, هما الاحداثيين
السيني و الصادي للخط الأول. الآن نريد أن نكوّن منهما نقطة.
لننتقل للمرحلة رقم 2. و التي تجدون بجانبها هذه الجملة تابع دوره فى لغه الجافا13 L16_new3
و هي تعني أننا سنقوم بتكون عضو في الذاكرة من نوع Point. و لأن فئة
النقطة Point توفر constructor يأخذ رقمين صحيحن من نوع int أثناء تكوين
العضو. فأصبح بإمكاننا الآن وضع الرقمين 10 و 10 في الأماكن المشار لها
بالأسهم.
حسناً رائع جداً. والآن لننزل إلى السطر نفسه (سبب البلاوي اللي نحن فيها من الصبح هاهاهاهاها).
تابع دوره فى لغه الجافا13 L16_line1

حسب
تعريف الـ constructor الموجود في الفئة Line ما نوع المتغير المتوقّع
هنا؟ Point. فعلاً. و هذا بالضبط ما فعلناه. قمنا بوضع العضو الذي
استخرجناه في الخطوة 2 في المكان الذي يفترض أن يكون فيه متغير من نوع
نقطة.

نقطة توقف..
سيتساءل بعضكم هنا. لماذا لم نقم بتعريف متغير من نوع نقطة Point هكذا:

تابع دوره فى لغه الجافا13 L16_pointag

لنسأل
أنفسنا. ما الاستخدام الذي سنستخدم فيه المتغير في هذه الحالة؟ اننا نريد
أن نمرره عبر constructor الخط المستقيم. و لن نقوم باستخدامه بعد ذلك
أبداً. إذا في المسألة حجز لموارد النظام. لأننا نريد تمرير القيمة التي
سيتم تخزينها في عضو آخر (وهو العضو الفعلي الموجود في فئة الخط المستقيم
Line.
حتى تتوضح المسائل أكثر. سنقلب المسألة. تخيل أن لدي خطاً مستقيماً فيه عضوين من فئة النقطة Point. و لكن لم يتم تحديد قيمهما بعد.
فهل
الأفضل أن أقوم بإنشاء عضوين حقيقين ثابتين، و أمرر قيمهما إلى الأعضاء في
الخط المستقيم. أم أنشئ عضوين مؤقتين، ينتهي دورهما بمجرّد تمرير القيم؟
أتصور
أن الحل الثاني هو الأنسب. و هذا ما فعلناه فعلاً. قمنا بانشاء الأعضاء
داخل استدعاء constructor الـ Line، و بمجرّد أن تمرر قيمتهما، لن يبقى
لهما وجود. و هكذا نحافظ على مصادر النظام في الذاكرة.
من الممكن طبعاً استخدام الطريقة الأولى، و لكن الطريقة الثانية عادة برمجية محمودة.
وطبعاً في نهاية البرنامج و في الأسطر من 10 إلى 20 نفس أوامر الطباعة التي ذكرناها في الدرس السابق.
تابع دوره فى لغه الجافا13 Title_rightتابع دوره فى لغه الجافا13 Spaceملاحظات مهمةتابع دوره فى لغه الجافا13 Title_left

  • يمكن تعريف الكونستراكتور بحيث يكون فارغاً من الكود. بل قد تكون لديك أسباب لذلك.
  • إذا قمت بتعريف constructor خاص بك، فأنك تفقد الـ constructor الافتراضي، فإذا أردت أن تحتفظ به، عليك أن تقوم بكتابته يدوياً.
  • يمكن أن يكون لنفس الفئة أكثر من Constructor يختلفون في أعداد أو أنواع المتغيرات في سلسلة المتغيرات الممررة لهم، أو كلاهما.
  • شكل
    الـ Constructor قد يشبه شكل الوظيفة، و لكن تذكّر دائماً. اسم الـ
    Constructor هو نفس اسم الفئة، و لا يوجد له نوع بعكس الوظيفة.
  • إن
    عمل new هو انشاء العضو من الـ constructor المناسب. فإذا لم يوجد
    constructor في الفئة. تقوم new باستخدام الـ constructor الافتراضي :-)


أرجو أن يكون الدرس واضحاً :-)
وفوق كل ذي علم عليم
الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://rsma-m.yoo7.com
 
تابع دوره فى لغه الجافا13
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1
 مواضيع مماثلة
-
» تابع دوره فى لغه الجافا12
» تابع دوره فى لغه السى 13
» تابع دوره لغه الاوراكل9
» تابع دوره فى لغه السى14
» تابع دوره لغه الاوراكل10

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
.:رسمه مبدع:. :: ¨°o.O (لغات البرمجه) O.o°¨ :: .:جافا:.-
انتقل الى: