الرئيسية المنتدى مركز رفع الصور صفحتنا على الفيس قناة اليوتيوب صفحتنا على تويتر واتس اب قوانين المنتدى
منتدى مجمع التطوير    

العودة   منتدى مجمع التطوير > المنتدى المتخصص > لغـات البرمجـة والمشـاريع الجـاهزة > برمجة الويب web development

الملاحظات

برمجة الويب web development يهتم ببرامج الويب php, Sql, Java ,asp.net ,xml ,html

آخر 10 مشاركات التقليد المذموم (الكاتـب : admin - مشاركات : 0 - المشاهدات : 116 - الوقت: 06:44 PM - التاريخ: 09-06-2021)           »          الخداع (الكاتـب : admin - مشاركات : 0 - المشاهدات : 84 - الوقت: 06:43 PM - التاريخ: 09-06-2021)           »          إعلانات شركة Admaven (الكاتـب : سنبول - مشاركات : 0 - المشاهدات : 211 - الوقت: 04:20 PM - التاريخ: 08-26-2021)           »          جدار روحك يريد أن ينقض (الكاتـب : admin - مشاركات : 0 - المشاهدات : 204 - الوقت: 11:27 PM - التاريخ: 08-23-2021)           »          سعر الذهب في مصر وعالميا صباح اليوم الخميس 12 أغسطس 2021 (الكاتـب : admin - مشاركات : 0 - المشاهدات : 251 - الوقت: 02:58 PM - التاريخ: 08-12-2021)           »          تأملت والدنيا (الكاتـب : admin - مشاركات : 0 - المشاهدات : 301 - الوقت: 10:54 PM - التاريخ: 08-03-2021)           »          وكن راضيا (الكاتـب : admin - مشاركات : 0 - المشاهدات : 286 - الوقت: 10:54 PM - التاريخ: 08-03-2021)           »          طوبا لمن عاش في هذه الدنيا غريبا (الكاتـب : admin - مشاركات : 0 - المشاهدات : 305 - الوقت: 10:53 PM - التاريخ: 08-03-2021)           »          لا تشكُ للناسِ (الكاتـب : admin - مشاركات : 0 - المشاهدات : 292 - الوقت: 10:52 PM - التاريخ: 08-03-2021)           »          العملات النادرة (الكاتـب : admin - مشاركات : 0 - المشاهدات : 281 - الوقت: 10:51 PM - التاريخ: 08-03-2021)

إضافة رد
 
أدوات الموضوع انواع عرض الموضوع
  #1  
قديم 05-28-2021, 03:57 AM
الصورة الرمزية الادارة كريم
الادارة كريم 
مشرف سابق
 
تاريخ التسجيل: May 2021
الدولة: مصر
المشاركات: 397
معدل تقييم المستوى: 20
الادارة كريم is a splendid one to beholdالادارة كريم is a splendid one to beholdالادارة كريم is a splendid one to beholdالادارة كريم is a splendid one to beholdالادارة كريم is a splendid one to beholdالادارة كريم is a splendid one to beholdالادارة كريم is a splendid one to behold


افتراضي مفهوم الدوال و أنواعها في الجافا أندرويد (تطبيق عملي)

 

ما هي الدوال (Methods) ؟

التطبيقات و برمجيات الحاسب يتم بناءها بواسطة كتابة مئات الأسطر البرمجية فكما هو معروف في أي لغة برمجة إذا واجهتنا أي مشكلة كبيرة فإن أفضل طريقة لحلها هي تقسيمها لمجموعة من الأجزاء الصغيرة أو ما يعرف بال module أو function "الدّوال " بحيث كل منها تؤدي وظيفة معينة, ويعرف هذا التكنيك عادة بـما يسمى بـ divide and conquer. و تقسيم الكود على عدد من الدوال يجعل الكود أسهل في القراءة و أكثر وضوحاً.
وهذه الـ module أو الـ function الدوال تعرف في ال #C و الـ java بما يسمى بـ Method, والمبرمج يستطيع كتابة الـ Method لتعريف مهام معينة ومن ثم يستدعيها ( calling ) من أي نقطة من البرنامج بمجرد ذكر اسمها لكي يتم تنفيذها عند تلك النقطة.
فالمبرمج إما أن يقوم بكتابة الـmethod بنفسه عندها تسمى (user-defined method), أو أن يقوم باستخدام دوال معرفة في نفس اللغة( build in ) و كل ما عليه هو استدعاءها عندما يحتاج إليها ليستخدمها في برنامجه, و سنتعرف فيما يلي كيف يمكننا إنشاء هذه ال user-defined method ومن ثم استدعائها في البرنامج.
طريقة كتاب الدوال (Methods):
لنلق الآن نظرة على الصورة العامة لكتابة أي method في java مثلا:
access_ Modifier return-value-type Method-Name( parameter-list ) { declaration and statement } السطر الأول من تعريف الـmethod يسمى بالmethod header ويحتوي على كل من :
access modifier : و هي إما public أو private أو static.
مثلا عندما يتم كتابة public فإن ذلك يعني أن كل الـ Activities تستطيع الوصول للدالة, أي أنها عامة. و عندما يتم كتابة private فإن ذلك يعني أن الدالة خاصة يمكن الوصول إليها فقط من داخل Activity الحالية.
method-name : و هي اسم الدالة التي نريد تعريفها , وقواعد كتابة الاسم هنا يتبع نفس شروط كتابة أسماء المتغيرات وطبعا سيكون الاسم اختياري.
return-value-type نوع النتيجة التي ستعود بها الدالة والدالة إذا كانت تعود بقيمة فإنها لا تعود بأكثر من قيمة واحدة. مثلا إذا كانت الدالة تعود بقيمة integer فإننا سنكتب في هذه الخانة integer ,وهكذا. أما في حالة عندما لا تعود الدالة بقيمة فإننا نكتب هنا void .
parameter-list: هي القيم التي نقوم بإرسالها أي ادخالها إلى للدالة. وستتعرف عليها أكثر عندما نشرح أنواع الدوال .
أما بالنسبة للـdeclarations and statements: فهي الأوامر التي تقوم هذه الدالة بتنفيذها .
والدوال في أي لغة برمجة لهاأربع أنواع سأطرح كل نوع مع تطبيق مثال عليه من خلال لغة java:
1- الدالة التي لا تعود بقيمة ولا تستقبل أي قيمة "parameter"
و المعنى سيتضح من خلال المثال التالي :

كود:
  public void firstMethod() {         Log.v("Method", "FirstMethod was called!!");     }
وهنا الـ access Modifier هي public, أي عامة.
وبما أن الدالة لا تعود بقيمة فسنكتب void عند الـreturn-value-type
وبما أن الدالة لا تستقبل أي قيمة فسنكتب القوسين فارغة …!
وهنا الدالة تؤدي وظيفة سهلة للغاية مجرد أنها تطبع الرسالة " !! FirstMethod was called " فور مناداتها ..و الآن و بعد أن تم بناء الدالة لابد من مناداتها " calling " حتى تطبع الرسالة .. لكن كيف يتم استدعاء أي دالة ؟؟
بمجرد ذكر اسم الدالة فقط, فإنه سيتم تنفيذها ….كالتالي:
firstMethod(); و البرنامج كاملا كالتالي :


كود:
package com.example.android.methods;  import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log;  public class MainActivity extends AppCompatActivity {      @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);                  //call the method         firstMethod();     }      public void firstMethod() {         Log.v("Method", "Method 1 was called!!");     } }


لاحظ في البرنامج أننا قمنا بإنشاء الدالة firstMethod أولاً, ثم استدعائها من داخل الـ onCreate حيث أنها نقطة بداية الـ Activity. النتيجة هي طباعة عبارة Method 1 was called!!داخل الـ Log.
الآن النوع الثاني من أنواع الدوال :
2 – الدالة التي تستقبلقيمة "parameter " ولكنها لا تعود بقيمة :
والمثال التالي يوضح الفكرة, في البداية لننشئ الدالة كالتالي

:
كود:
public void secondMethod(String name) {     String result;     result = "hello: " + name;     Log.v("second method", result); }
الدالة هنا تستقبل قيمة parameter إذن سنكتب بين القوسين اسم أي متغير يستقبل هذه القيمة التي ستدخل للدالة وطبعا سنكتب نوع لهذا المتغير ونوعه بلا شك سيكون من نفس نوع القيمة المراد تمريرها للدالة والتي سيحتفظ بها المتغير. وكما هو واضح فإن الدالة تستقبل القيمة المخزنة في name ثم تضيف العبارة hello قبل الاسم , و أخيرا تطبع النتيجة على Log.
فقط تبقّى مناداة الدالة حتى تنفذ عملها لكن يبدو أننا هنا لا بد و أن نرسل قيمة لهذه الدالة لكي تقوم بعملها وطبعا القيمة التي سنرسلها ستكون من النوع String ….
و لمناداة الدالة كالتالي:
secondMethod("Ahmad"); و البرنامج كاملا كالتالي :


كود:
import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log;  public class MainActivity extends AppCompatActivity {      @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);          //call the method         secondMethod("Ahmad");     }      public void secondMethod(String name) {         String result;         result = "hello: " + name;         Log.v("second method", result);     } }


الدوال التيلا نمرر لها بارمترات ولكن تعودبقيمة:
ومعنى أن الدالة لا تمرر ”أو لا تستقبل” parameter أنه عند إنشاء الدالة القوسين ستكون فارغة ( ) أي أنه لا توجد قيمة تريد الدالة استقبالها .
و معنى أن الدالة تعود بقيمة أي عندما ننشئ الدالة سنستخدم keyword هيreturn وتكون متبوعة بالقيمة التي تعود بها الدالة .ولا تنسى أنه يجب أن تكتب في الـ Method header نوع القيمة التي ستعود بها الدالة في خانة الـ return _value _type
دعنا ننشي الدالة ونرى, لنتفق أولا على وظيفة هذه الدالة, مثلا نريد الدالة أن تطبع لنا الجملة التالية :
"third method was called"
العملية سهلة للغاية أولا سأكتب الدالة :


كود:
  public String thirdMethod(String name) {     return "third method was called!!"; }


هنا الدالة تعود بقيمة من النوع string, واسم الدالة thirdMethod, أيضاً استخدمنا الكلمة return متبوعة بالقيمة التي ستعود بها الدالة. و بالطبع إذا أردنا تنفيذ الدالة من أي نقطة في البرنامج كل ما علينا هو فقط مناداتها كالتالي :
thirdMethod (); لكن الدالة ThirdMethod السابقة تعود بقيمة إذن يجب علينا عندما نستدعيها أن نخزن القيمة التي تعود منها في متغير وهذا المتغير له نفس نوع الـ return _value _type في الدالة نفسها إذن سنعرف أي متغير له النوعstring لكي نخزن فيه نتيجة الدالة ThirdMethod ليصبح استدعاء الدالة صحيحا كالتالي :
string result = thirdMethod(); حيث أننا قمنا بتخزين القيمة التي تعود بها الدالة في المتغير result, بعد ذلك عندما تقوم بطباعة القيمةresult ستطبع بذلك نتيجة الدالةThirdMethod.
البرنامج كاملا:
كود:
import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //call the method String result = thirdMethod(); } public String thirdMethod(String name) { return "third method was called!!"; } }

الدوال التي تستقبل بارميتر وتعود بقيمة :
نريد كتابة دالة و ظيفتها أن تعود لنا بقيمة( عبارة عن نتيجة العملية الحسابية )
أي الدالة تستقبل قيمة عددية integer, وتعود بقيمة عددية integer, والتي هي الرقم 10 مضروبا في القيمة التي تم تمريرها للدالة.
كيف سيكون شكل الدالة :
public Integer fourthMethod(Integer number) { return number * 10 ; } حيث أننا في بداية تعريف الدالة في السطر الأول قبل اسم الدالة كتبنا integer معناه أن الدالة ستعود بالقيمة العددية integer
و كتبنا ( integer number) أي أن الدالة ستستقبل قيمة من النوع integer مخزنة في متغير يسمى number
return 10 * number; و السطر السابق معناه أن الدالة ستعود بالقيمة 10 مضروبة في البارميتر المرسل للدالة , و كما ذكرنا في بداية الدرس أن الكلمة المفتاحية return تستخدم لكي تعود لنا بقيمة. الآن أنشأنا الدالة , بقي مناداتها كالتالي من داخل الـ onCreate:
Integer result = fourthMethod(6); حيث أننا أرسلنا للدالة قيمة عددية ليتم وضعها بدلا من المتغير number, وطبعا القيمة 6 هي خيارية يمكنك تجربة أي عدد آخر. و الدالة تعود بقيمة عددية يتم تخزينها في المتغير result. و البرنامج كاملا كالتالي :


import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //call the method Integer result = fourthMethod(6); Log.v("result", String.valueOf(result)); } public Integer fourthMethod(Integer number) { return number * 10 ; } }



وبذلك وضحنا الفرق بين الانواع الاربعة للدوال.
إذا كان لديك أي استفسار لا تتردد بترك تعليقك و السلام عليكم و رحمة الله و بركاته.


الموضوع الأصلي : مفهوم الدوال و أنواعها في الجافا أندرويد (تطبيق عملي) || الكاتب : الادارة كريم || المصدر : منتدى مجمع التطوير

 

رد مع اقتباس
قديم 05-28-2021, 06:35 AM   #2
admin
✯ ادارة المنتدى ✯
 
الصورة الرمزية admin
 
تاريخ التسجيل: Mar 2021
الدولة: مصر
المشاركات: 733
معدل تقييم المستوى: 10
admin is a splendid one to beholdadmin is a splendid one to beholdadmin is a splendid one to beholdadmin is a splendid one to beholdadmin is a splendid one to beholdadmin is a splendid one to behold


افتراضي

مشكور على ما تقدمه من موضوعات مهمة ومميزة
admin غير متواجد حالياً
 
رد مع اقتباس
إضافة رد

مواقع النشر (المفضلة)

أدوات الموضوع
انواع عرض الموضوع

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
[شرح] مثال واقعي على استخدام حاويات Docker لتشغيل موقع ويب الادارة كريم برمجة الويب web development 0 05-28-2021 03:37 AM

 

موقع ومنتديات مجمع التطوير موقع يختص بالبرمجة والبرامج المساعدة  للتصاميم والأدوات المساعدة ,مع تقديم العون والمساعدة لكل مبرمج من خلال الأقسام المحددة , كما نعرض الأعمال الجاهزة والمفتوحة المصدر. ويهتم أيضا بالتصاميم والجرافيك وبرامجها وعرض التصاميم وملحقات التصاميم والأدوات المساعدة .كما نتمنى التوفيق لنا ولكم مع أجمل تحية مقدمة منا. 

  • الرئــيســية

  • الــمنــتـدى

  • مركز الرفع

  • التسـجـيل

  • قوانين المنتدى

  • التعـلـيمـات

  • الترقيات

check pagerank

 Flag Counter

كلمة الإدارة  منتدى مجمع التطوير غير مسئول عن أي طرح من الأعضاء فتلك الموضوعات تعبر عن رأى صاحبها ومن خلال وضع قوانين وتعليمات المشاركة بالمنتدى نسعى جاهدين لتطبيق تلك التعليمات. والمنتدى أيضا غير مسئول عن أي اتفاق مالي أو تجارى بين الأعضاء وبذلك تعد هذه الصيغة إخلاء مسئولية من جانب إدارة المنتدى وفقنا ووفقكم الله لما فيه الخير
 
الساعة الآن 05:11 AM


Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
جميع الحقوق محفوظة لمجمع التطوير