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

منتدي حضن الغريب


 

التسجيلالتسجيل  الرئيسيةالرئيسية  أحدث الصورأحدث الصور  دخولدخول  

 

 سلسلة دروس الجافا الدرس الثامن عشر

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


الجنس : ذكر
عدد الرسائل : 1282
تعاليق : عندما تنتقد أحداً فبعين النحل تعود أن تـُبصـِر
ولا تنظـُر للناس
بعين الذباب فتقع على ماهو مُستقذِر
و سأحكي لك قصه العنزة والذئب حتى لا
تأمن من يـُمكِر
وحينما يثق بك أحد فإياك ثم إياك أن تـُغدِر


تاريخ التسجيل : 09/02/2009

الاضافات
منتدنا على الفيس بوك:

سلسلة دروس الجافا      الدرس الثامن عشر Empty
مُساهمةموضوع: سلسلة دروس الجافا الدرس الثامن عشر   سلسلة دروس الجافا      الدرس الثامن عشر Icon_minitime1الثلاثاء 24 مارس 2009, 10:43 pm

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



درسنا اليوم من الدروس المهمّة جداً. و أظن أنّه من المناسب
الحديث عنه الآن بعد أن تحدثنا في الدروس السابقة عن عدد من المواضيع التي تمهّد
له. فقد تحدّثنا كثيراً عن الوظائف حين تحدّثنا عن الفئات (classes)
و الكائنات (objects) خاصة في الدرس
الثاني عشر
. و اليوم سنتحدّث عن الوظائف بشكل مفصّل إن شاء الله.





سلسلة دروس الجافا      الدرس الثامن عشر Title_right سلسلة دروس الجافا      الدرس الثامن عشر Spaceإنشاء الوظائف: سلسلة دروس الجافا      الدرس الثامن عشر Title_left








لكتابة أي فئة نحتاج أن نقوم بالتالي:

<blockquote> سلسلة دروس الجافا      الدرس الثامن عشر L19_syntax</blockquote>



و في الشكل التالي تشرح السطر الأول من الشكل السابق، و الذي
يطلق عليه method signature:


<blockquote>سلسلة دروس الجافا      الدرس الثامن عشر L19_explainHead</blockquote>



فأول كلمة هي public هذه عبارة عن Access modifier و يمكن أن يحل محلها أي من الكلمات
باللون البنفسجي، أو كما هو موجود في البداية [none]
أي أنه من الممكن ألا تكون موجودة أبداً.





الكلمة الثانية هي void و هي تعني
نوع القيمة التي ترجعها الوظيفة. فإذا كانت void فهذا
يعني أن الوظيفة لا تعيد قيمة، و إنما تقوم بعمل محدد فقط، أما إذا كانت غير ذلك،
فإن هذا يعني أن الوظيفة تعيد قيمة محددة، و لابد من استخدام كلمة return
داخل الوظيفة في هذه الحالة. و من الممكن أن يكون نوع القيمة التي ترجعها الوظيفة
أي واحدة من الكلمات باللون الأخضر. و نلاحظ أنها قد تكون أيضاً عبارة عن فئة من
الفئات.





نصل بعدها لكلمة methodName و هي
هنا الاسم الذي نعطيه للوظيفة، و يفضّل أن يكون فعلاً، يبدأ بحرف صغير.

بعد ذلك نجد أننا فتحنا قوساً دائرياً، و في داخله وضعنا
سلسلة المتغيرات المدخلة للوظيفة (parameters list). و
التي يتم تحديد نوعها، و اعطائها اسماً لاستخدامه داخل الوظيفة، و يفصل بينها
باستخدام الفاصلة. و من الممكن أن لا تكون هناك أي متغيرات مدخلة للوظيفة، و يكون
القوس فارغاً.






نقطة توقف..
المتغيرات الموجودة في
سلسلة المتغيرات المدخلة (parameters list) تكون
صالحة للاستخدام داخل الوظيفة فقط، و لا يمكن استخدامها خارج الوظيفة
أبداً.



سلسلة دروس الجافا      الدرس الثامن عشر Title_right سلسلة دروس الجافا      الدرس الثامن عشر SpaceMethod Overloading: سلسلة دروس الجافا      الدرس الثامن عشر Title_left






يمكن في الجافا كتابة وظيفة بنفس الاسم مرتين
(!!!!) نعم تستطيع ذلك. ولكن يجب أن يكون توقيع الوظيفة مختلفاً في كل
مرة. أي أن نوع الإرجاع، أو قائمة المتغيرات المدخلة تكون مختلفة إما في
النوع أو في العدد. و هذا يسمّى في الجافا Method Overloading. لنأخذ
مثالاً على ذلك.




لنفرض أننا نريد كتابة وظيفة تقوم بجمع رقمين،
وإعادة الناتج. و لكن الأرقام موجودة بأنواع عدة. منها الـ int ومنها
float و منها double. و كلها مختلفة عن بعضها البعض. يمكننا في هذه الحالة
كتابة عدة وظائف كلها بنفس الإسم، و لكن نوعية المتغيرات في سلسلة
المتغيرات المدخلة تختلف في كل مرة، و معها يختلف نوع القيمة المرجعة.




سنكتب وظائف الجمع في فئة اسمها AddTwo هكذا:



<blockquote>سلسلة دروس الجافا      الدرس الثامن عشر L19_AddTwo</blockquote>



نلاحظ أننا كتبنا فئتين بنفس الاسم، و لكن بنوع المدخلات مختلف، و نوع إرجاع مختلف، فمرة تاخذ متغيرين من نوع int و تعيد
جمعهما في صورة int، و مرة تأخذ متغيرين من نوع float و تعيد ناتج جمعهما في صورة float أيضاً.




الآن سنكتب فئة رئيسية، نقوم من خلالها إستخراج عضو
من فئة AddTwo و نستخدم الوظيفتين sum مرة لجمع متغيرين من نوع int و مرة
متغيرين من نوع
float، هكذا:

<blockquote>سلسلة دروس الجافا      الدرس الثامن عشر L19_AddMain</blockquote>



لاحظ معي لقد استخدمنا نفس الاسم في كل مرة
للوظيفة في السطرين 10 و 11. و هذا يسهّل استخدام الوظيفة كثيراً.





و أبسط مثال على method overloading
هي وظيفة الطباعة التي استخدمناها منذ اليوم الأول. فنحن نستخدمها أحياناً لطباعة
نصوص، و أحياناً لطباعة أرقام. و أحياناً لطباعة أرقام كسرية. و هذا يدل على أنه تم
تعريف الوظيفة بأكثر من تعريف في داخل الفئة، و كل تعريف يختص بطباعة نوع من أنواع
المتغيرات. و نحن لم نشغل بالنا كثيراً، فنحن نكتب نفس اسم الوظيفة في كل مرة، و لا
ندري أنه يتم استدعاء وظائف مختلفة حسب نوع المدخلات.



سلسلة دروس الجافا      الدرس الثامن عشر Title_right سلسلة دروس الجافا      الدرس الثامن عشر Spaceأنواع الوظائف: سلسلة دروس الجافا      الدرس الثامن عشر Title_left







نستطيع تقسيم الوظائف إلى نوعين حسب الإعادة.
فبعض الوظائف التي يتم تحديد نوع القيمة المرجعة، تقوم بإرجاع قيمة عن طريق استخدام
الكلمة return. بينما لا ترجع الوظائف من نوع
void شيئاً.






سلسلة دروس الجافا      الدرس الثامن عشر L19_void سلسلة دروس الجافا      الدرس الثامن عشر L19_return





كما يمكننا تقسيم الوظائف حسب وضعية الوظيفة في
الفئة إلى نوعين، وظائف خاصة بالفئة، ووظائف خاصة بالعضو. و يتم في النوع
الأول كتابة كلمة (static) في توقيع الوظيفة (method signature). و هكذا
نكون قد جعلنا هذه الوظيفة هي خاصة بالفئة بشكل عام و ليست خاصة لعضو من
الأعضاء. و بإمكان أي عضو استخدامها من الفئة مباشرة دون الحاجة لانشاء
عضو من الفئة. و كمثال على ذلك وظيفة random في فئة Math.




فنحن نستطيع استخدامها بالإشارة لاسم الفئة مباشرة
دون الحاجة لإنشاء عضو في الفئة، و استخدامها عبره.تماماً كما في المثال
السابق، يمكننا أن نجعل وظائف الجمع static و نستخدمها مباشرة دون الحاجة
لإنشاء عضو من فئة AddTwo، هكذا:


<blockquote>
سلسلة دروس الجافا      الدرس الثامن عشر L19_staticAddTwo</blockquote>



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



<blockquote>سلسلة دروس الجافا      الدرس الثامن عشر L19_staticAddmain</blockquote>



نلاحظ أننا في السطرين الثامن و التاسع استخدمنا
وظيفة sum مسبوقة باسم الفئة AddTwo مباشرة، دون الحاجة لاستخراج عضو من
الفئة AddTwo، لأنه تم تعريف الوظيفة على أنها static.




سيتم التفصيل عن الـ access modifiers في الدرس القادم إن شاء الله.




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



وفوق كل ذي علم عليم
الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://nasserstar.ahlamontada.com
 
سلسلة دروس الجافا الدرس الثامن عشر
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1
 مواضيع مماثلة
-
» سلسلة دروس الجافا الدرس الثامن
» سلسلة دروس الجافا الدرس السابع
» سلسلة دروس الجافا الدرس التاسع
» سلسلة دروس الجافا الدرس العاشر
» سلسلة دروس الجافا الدرس الحادى عشر

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
منتدي حضن الغريب :: منتدى البرامج والكمبيوتر والحماية والماسنجر :: قسم الكمبيوتر والحماية والهواتف والشفرات-
انتقل الى: