احصائيات سريعة
البحث

اكثر المحتويات زيارة
الدوال في الاكسل (5,664 مشاهده)
ربط قاعدة بيانات أكسس (MS Access) مع برنامج الفيجوال بيسك بطريقة(ODBC) (3,767 مشاهده)
الدرس الثالث : بعض تطبيقات الدوال في اكسل (2,800 مشاهده)
تعريف الاستعلام وطريقة عرضه في آكسس، أنواع الاستعلامات، نافذة تحديد الاستعلام! (2,134 مشاهده)
الدرس الثاني: بعض الحيل لتسهيل برنامج اكسل (2,038 مشاهده)
شرح طريقة استعمال الأوتلوك مع بريد الهوتميل (1,861 مشاهده)
تغيير لغة واجهة التطبيق من عربي الى انجليزي وبالعكس لـ Windows-based applications (1,850 مشاهده)
أنواع العلاقات وطريقة الربط بين الجداول. (1,758 مشاهده)
مقدمة عامة حول الاكسل وحيل خاصة بالاكسل (1,593 مشاهده)
أنشئ قاعدة بياناتك التي ستستند إليها في تعلم طريقة ربط الجداول والاستعلامات. (1,541 مشاهده)
الدرس الأول : عمل شريحة في البوربوينت (1,445 مشاهده)
دورة الأكسس: الدرس السادس : منوعات في أكسيس . (1,361 مشاهده)
كيفية حل مشاكل الانترنت اكسبلور Internet Explorer (1,295 مشاهده)
اضافه صوت ونص لخلفيه في باور بوينت (1,226 مشاهده)
شرح طريقة التجميع Grouping في برنامج الاكسل (1,216 مشاهده)
برنامج Windows Movie Maker لتكوين أفلام (1,169 مشاهده)
التعرف على مكونات الكمبيوتر (1,166 مشاهده)
دروس في الأوفيس الأكسس - Access0- (1,152 مشاهده)
درس تعريب المجلة (1,142 مشاهده)
مقدمة في ربط قواعد البيانات داخل بيئة الـ .NET باستخدام الـ VB.NET (1,094 مشاهده)
كيف تجعل برنامجك أكثر تألقا وجمالا باستخدام أداة Active Skin (1,049 مشاهده)
ما هو المات لاب MATLAB؟ (995 مشاهده)
مقدمة عن لغة البيسك (990 مشاهده)
دورة الأكسس: الدرس السادس : منوعات في أكسيس .0--- (964 مشاهده)
الفيجوال بيسك - مقدمة (946 مشاهده)
جديد مواد
التحويل التلقائي للحروف ل- ل- ه إلى اسم الجلالة0---- (626 مشاهده)
النسبة المئوية لا تظهر بالخط العربي & الشدة وألف المد في لفظ الجلالة0---النسبة المئوية لا تظهر بالخط العربي & الشدة وألف المد في لفظ الجلالة0--- (354 مشاهده)
ضبط خيارات اللغة فى الـ Microsoft Word0--- (392 مشاهده)
استخدام لوحة المفاتيح في الـ Word0---- (551 مشاهده)
إضافة كلمة سر إلي ملفات الورد دون استخدام برامج0--- (497 مشاهده)
دمج المراسلات0-- (245 مشاهده)
وضع صورة كخلفية للنص0-- (364 مشاهده)
السماح للمستخدمين بتعديل أجزاء من ملف وورد محمي (Word2003)0--- (272 مشاهده)
كتابة الأرقام الكسرية ورموز المعادلات0-- (436 مشاهده)
درس كامل عن الدمج السهل من لوحة المفاتيح ف0-ي برنامج الـ Word (341 مشاهده)
دورة الأكسس: الدرس السادس : منوعات في أكسيس .0--- (964 مشاهده)
دورة الأكسيس : الدرس الرابع : العلاقات0---- (568 مشاهده)
أساسيات في Access0--0 (384 مشاهده)
تصميم تقرير لطباعة البيانات0---- (432 مشاهده)
تصميم نموذج استعراض البيانات‏0--تصميم نموذج استعراض البيانات‏0-- (407 مشاهده)
تصميم نموذج إدخال‎ ‎البيانات0--- (433 مشاهده)
إنشاء قوائم خاصة باستخدام الماكرو(1)0-- (373 مشاهده)
خطوات إنشاء الماكرو في تذييل النموذج (2)0-- (310 مشاهده)
خطوات إنشاء الماكرو في تذييل النموذج (1)0- (283 مشاهده)
استعلامات SQL في Access - تعديل الجداول وإضافة الحقول0- (371 مشاهده)
استعلامات SQL في Access - تحديث البيانات الجدولية0-- (333 مشاهده)
الاستعلامات الإجرائية -4 (استعلام الحذف)0--- (185 مشاهده)
الاستعلامات الإجرائية -2 (استعلام الإلحاق)0--- (212 مشاهده)
تصميم تقرير لطباعة الإجمالي0--- (268 مشاهده)
استعلامات التحديد Select Query مع أمثله (1)0--- (337 مشاهده)
روابط ذات صلة
قريبا ان شاء الله
كلمات البحث
ابحث ايضا عن
(16) الـ Constructors

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


في الدرس السابق قمنا بعمل مهم جداً. و سنقوم اليوم بنفس العمل و لكن بطريقة أسهل. باستخدام مفهوم الـ Constructor.


أرجو أن تقوم بقراءة المقدّمة على الأقل من الدرس السابق (إن لم تكن فعلت) و الأفضل أن تطلع عليه بأكمله حتى تكون على علم بما نفعله هنا.
 



 


لقد قمنا بتعريف فئة النقطة في الدرس السابق بهذا الشكل:




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




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




إن عبارة  تعني أننا سنقوم باستخدام بتكوين عضو فعلي من فئة النقطة Point. هممو لكن ألا تلاحظون شيئاً؟.. لاحظو معي أن   اسم الفئة نفسه يليه قوسان. و هذا ما يعرف بالـ Constructor. وهو عبارة عن طريقة التكوين التي يتم بها انشاء العضو من الفئة.






 كيف نقوم بإعادة تعريف الConstructor؟

إن   يعرف باسم: Default Constructor. و هي الذي توفره أي فئة موجودة في الآلة التخيلية. و لا يحتاج المبرمج لتعريفه و لا للإشارة إلية.


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


بدلاً من هذه الطريقة:
      


الطريقة الأولى طريقة لطيفة أليس كذلك؟ أفضل و اسهل عند استخراج الأعضاء من فئة النقطة.


لنتأمّل الكود التالي الجديد لفئة النقطة نفسها:




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




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


من الضروري جداً جداً أن نكتب سلسلة المتغيرات بترتيب محدد. أي أننا نقوم بتوقع الاحداثي السيني، ثم الاحداثي الصادي و ليس العكس.




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


والآن لننظر إلى داخل الـ Constructor. ما الذي قمنا بتعريفه. في السطر 7 و 8. نلاحظ أننا أخذنا القيم من المتغيرات التي مررت لنا عبر تكوين العضو، و وضعناها في المتغيرات الخاصة بالعضو.


المتغيرات الممررة xx و yy هي متغيرات مؤقتة. تنتهي بمجرد الانتهاء من تكوين العضو (و الوصول لقوس المجموعة الموجود في السطر التاسع. و لعلنا نفصّل في هذا أكثر في درس الوظائف ان شاء الله.












نقطة توقّف..

عندما تحدثنا عن الـ Constructor الافتراضي. و قلنا أنه يتوفّر بشكل افتراضي لأي فئة. فإن ذلك يتم إذا كانت الفئة لا تحتوي على Constructor أما اذا قام المبرمج بتعريف Constructor خاص به، فإن الـ Constructor الافتراضي أو default constructor ذو القوسين الفارغين لا يتم ايجاده. أي أن عبارة ستنتج خطأً في الترجمة. ذلك أن الconstructor الموجود يختلف في عدد المتغيرات الممررة عن .

إذا رغب المبرمج في constructor ذو سلسلة متغيرات ممررة فارغة مثل: ، فعليه أن يكتبه بنفسه.


يمكن للفئة أن يكون لها أكثر من constructor. كل منهم يختلف عن الآخر في عدد أو نوع المتغيرات في السلسلة الممررة لكل منهم، أو كلاهما.






 البرامج مرة أخرى:

آن و قد تعلمنا الـ constructors. نستطيع كتابة البرامج الموجودة في الدرس السابق بشكل أفضل مما سبق.


فبرنامج النقطة سيكون بهذا الشكل كما كتبناه معاً قبل قليل:




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




نلاحظ أننا استخدمنا نفس المفهوم. قمنا بتعريف constructor له متغيرين في سلسلة التمرير parameter list من نوع Point.


والآن لنلق نظرة على الفئة Painter:


 


لندرس معاً الأسطر من 5 إلى 8:




قليل من التركيز من فضلك. فالآن المرحة الحرجة التي نقوم فيها بتطبيق ما قمنا بالتجهيز له مع بداية الدرس.


السطر 5، نقوم فيه بتعريف أو اشهار اثنين من المتغيّرات من نوع Line. اسم الاول line1 و الثاني line2.


في السطر 7 نقوم بعدة خطوات. انظر الشكل:




لنذهب إلى الخطوة رقم 1 و التي تجدون بجانبها رقمين 10 و 10, هما الاحداثيين السيني و الصادي للخط الأول. الآن نريد أن نكوّن منهما نقطة.


لننتقل للمرحلة رقم 2. و التي تجدون بجانبها هذه الجملة و هي تعني أننا سنقوم بتكون عضو في الذاكرة من نوع Point. و لأن فئة النقطة Point توفر constructor يأخذ رقمين صحيحن من نوع int أثناء تكوين العضو. فأصبح بإمكاننا الآن وضع الرقمين 10 و 10 في الأماكن المشار لها بالأسهم.


حسناً رائع جداً.  والآن لننزل إلى السطر نفسه (سبب البلاوي اللي نحن فيها من الصبح هاهاهاهاها).




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












نقطة توقّف..

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


 


لنسأل أنفسنا. ما الاستخدام الذي سنستخدم فيه المتغير في هذه الحالة؟ اننا نريد أن نمرره عبر constructor الخط المستقيم. و لن نقوم باستخدامه بعد ذلك أبداً. إذا في المسألة حجز لموارد النظام. لأننا نريد تمرير القيمة التي سيتم تخزينها في عضو آخر (وهو العضو الفعلي الموجود في فئة الخط المستقيم Line.


حتى تتوضح المسائل أكثر. سنقلب المسألة. تخيل أن لدي خطاً مستقيماً فيه عضوين من فئة النقطة Point. و لكن لم يتم تحديد قيمهما بعد.


فهل الأفضل أن أقوم بإنشاء عضوين حقيقين ثابتين، و أمرر قيمهما إلى الأعضاء في الخط المستقيم. أم أنشئ عضوين مؤقتين، ينتهي دورهما بمجرّد تمرير القيم؟


أتصور أن الحل الثاني هو الأنسب. و هذا ما فعلناه فعلاً. قمنا بانشاء الأعضاء داخل استدعاء constructor الـ Line، و بمجرّد أن تمرر قيمتهما، لن يبقى لهما وجود. و هكذا نحافظ على مصادر النظام في الذاكرة.


من الممكن طبعاً استخدام الطريقة الأولى، و لكن الطريقة الثانية عادة برمجية محمودة.


وطبعاً في نهاية البرنامج و في الأسطر من 10 إلى 20 نفس أوامر الطباعة التي ذكرناها في الدرس السابق.






 ملاحظات مهمة:


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

أرجو أن يكون الدرس واضحاً :-)

(16) الـ Constructors

أضف هذه المادة في موقعك:
مواد مشابهة:
اساسيات في الجافا اساسيات في الجافا
اساسيات في الجافا
(مرات المشاهدة: 99 مرات)
(15) صفة في فئة عبارة عن عضو من فئة أخرى (15) صفة في فئة عبارة عن عضو من فئة أخرى
(15) صفة في فئة عبارة عن عضو من فئة أخرى
(مرات المشاهدة: 80 مرات)
اظهار الجداول من الجهه اليمنى (JArabicTable) اظهار الجداول من الجهه اليمنى (JArabicTable)
اظهار الجداول من الجهه اليمنى (JArabicTable)
(مرات المشاهدة: 86 مرات)
ما الفرق بين Java و JavaScript ما الفرق بين Java و JavaScript
ما الفرق بين Java و JavaScript
(مرات المشاهدة: 187 مرات)
(5) إعداد بيئة التشغيل (5) إعداد بيئة التشغيل
(5) إعداد بيئة التشغيل
(مرات المشاهدة: 116 مرات)
(2) لغات الجيل الرابع (2) لغات الجيل الرابع
(2) لغات الجيل الرابع
(مرات المشاهدة: 93 مرات)
(11) استخدام المتغيرات (11) استخدام المتغيرات
(11) استخدام المتغيرات
(مرات المشاهدة: 83 مرات)
أسئلة و اجوبة عامة لكل مبتدئ في الجافا أسئلة و اجوبة عامة لكل مبتدئ في الجافا
أسئلة و اجوبة عامة لكل مبتدئ في الجافا
(مرات المشاهدة: 513 مرات)
حزم الجافا حزم الجافا
حزم الجافا
(مرات المشاهدة: 90 مرات)
حزم الجافا (Java Packages) حزم الجافا (Java Packages)
حزم الجافا (Java Packages)
(مرات المشاهدة: 112 مرات)
منتديات مدرسة المشاغبين - افلام مقاطع يوتيوب - بروكسي proxy - ماسنجر مسنجر - العاب فلاش - اغاني اناشيد - مسجات رسائل sms - جوال موبايل بلوتوث - صور جديدة سنوات الضياع
جميع الحقوق محفوظة :Copyright © All rights reserved