الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

هل يمكن عمل تعدد الداله main فى الجافا ؟

بدأه Mahmoud Kelany في 14 يوليو 2010 · 26 رد · 2,019 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

وانا ببحث عن شىء معين

لقيت السوال دا فى البحث فى محرك جوجل

لكن بصراحه انا قولت اجابه السوال لالا وبعدين قولت يمكن اه

ودخلت على السوال ولقيت الاجابه فعلا اه

السوال بالعربى

هل يمكن عمل تعدد للداله main فى الجافا يعنى عمل overloading لها ؟

الاجابه كانت نعم

ازاى بقا ؟؟؟

السوال بالانجليزى اهوو

388. Can main() method be overloaded? 

Yes. the main() method is a special method for a program entry. 
You can overload main() method in any ways. 
But if you change the signature of the main method,
 the entry point for the program will be gone.

يا ريت تفيدونا فى النقطه دى

وكمان سوال بسيط بالمره تبع داله الmain

ليه داله الـ main بتاخد متغيرات

يعنى فى اول تعليمى للجافا كان لازم اكتب متغيرات للداله main

main(String [] args )

ليه بقا لازم تاخد الـ args array

ولم جربت احذفها او بمعنى اصح نسيت اكتبها بحسبها مش هتاثر زى الـ C++

لكن البرنامج قالى انه مش لاقى داله الـ main

ممكن حد يوضح لينا هذه النقطه ايضا

لان لم سالت قالوا احفظها على كدا دلوقتى

وهتعرفها بعدين لكن بعدين باين عليه مش جاى خالص :lol:

وشكرا لكم مقدما

سلام عليكم

تم تعديل هذه المشاركة بواسطة Mahmoud Kelany في 14 يوليو 2010 في 15:34

2

Software Developer
Mahmoudkelany.com


 

#2

عندما تعمل overloading للطريقة main فإنك ستغير ال signature، وبالتالي لم تعد هذه الطريقة الجديدة هي الطريقة main، بل فقط طريقة عادية

المصفوفة args تخزن ال arguments التي يتم تمريرها للبرنامج. لكن أظنك تعرف هذا الأمر huh.gif

في الحقيقة السؤالان معا غير واضحين sleep.gif

#3
herch كتب:

عندما تعمل overloading للطريقة main فإنك ستغير ال signature، وبالتالي لم تعد هذه الطريقة الجديدة هي الطريقة main، بل فقط طريقة عادية

المصفوفة args تخزن ال arguments التي يتم تمريرها للبرنامج. لكن أظنك تعرف هذا الأمر huh.gif

في الحقيقة السؤالان معا غير واضحين sleep.gif

بصراحه انا مش فاهم اجابتك الاولى

انما التانيه انا عارفها انا عاوز اعرف ليه

على العموم هاوضح الاسئله تانى

اولا بالنسبه للسوال الاول

انا كنت عاوز ازاى اعمل تعدد لداله الـ main

ايه الصور اللى ممكن اعملها لتعدد هذه الداله

ولم البرنامج اعمل له run هيشتغل على انهى main ?

مثلا عندى

public class Main{

    public static void main(String args[]) {
    }

    public static void main(int[] arr) {
    }
}

انا عملت للداله main عمليه تعدد بانشاء داله اخرى لكن الـ parameters لها من نوع int ?

فانا كدا عملت overloading للداله

لم اعمل run للبرنامج اى داله يتم استدعاءها وهل اساسا الـ overloading هذا بالنسبه للداله دى

هيتم استخدامه ؟

اما للسوال التانى

ليه اساسا بعمل parameters للداله ؟

يعنى ليه مش اعملها كدا

public static void main() {
    }

ليه لازم اديها متغيرات ؟

انا اللى عارفه بالنسبه للمتغيرات اللى الداله main بتاخده بتكون من الجهاز يعنى من run environment بتاعت الجهاز

اتمنى لو فيه معلومه غلط تصححوها ليا

وشكرا على ردك اخى عصام

تم تعديل هذه المشاركة بواسطة Mahmoud Kelany في 14 يوليو 2010 في 15:58

Software Developer
Mahmoudkelany.com


 

#4

بالنسبة للسؤال الأول:

و إيه اللي يمنع؟ كما قال عصام, الدالة الجديده ليس لها أي علاقه بالدالة القديمه -دالة أخري صودف أنها تحمل نفس الإسم- كما تعرف أن ال overloading يطلق عليه parameter overloading للسبب الذي ذكرته.. و كما تعلم أن ال JVM سيقوم بتفيذ الدالة التي تحمل هذا التوقيع :

public static void main(String[] )

و إن لم يجدها سيعترض...

بالنسبة للسؤال الثاني:

زي ما إنت عارف, إنت ال specs في ال C/C++ سيح ميح , مفيش شئ واضح في هذه النقطه, و كل مترجم يقوم بعمل ما يريد....

أما في حالة الجافا, ف المواصفات واضحه, كما أنك تستخدم ال Reference Implementation (RI) الخاص ب SUN,,,,, يعني أكيد المترجم سيعترض,,,,,,, ربما يكون هناك مترجمات أخري لا تعترض, لكن كن حذرا, المترجم الذي لايعترض سيكون مخالف للمواصفات (specs) , بعكس في حالة ال C/C++ ..

#5
هويدي كتب:

بالنسبة للسؤال الأول:

و إيه اللي يمنع؟ كما قال عصام, الدالة الجديده ليس لها أي علاقه بالدالة القديمه -دالة أخري صودف أنها تحمل نفس الإسم- كما تعرف أن ال overloading يطلق عليه parameter overloading للسبب الذي ذكرته.. و كما تعلم أن ال JVM سيقوم بتفيذ الدالة التي تحمل هذا التوقيع :

public static void main(String[] )

و إن لم يجدها سيعترض...

بالنسبة للسؤال الثاني:

زي ما إنت عارف, إنت ال specs في ال C/C++ سيح ميح , مفيش شئ واضح في هذه النقطه, و كل مترجم يقوم بعمل ما يريد....

أما في حالة الجافا, ف المواصفات واضحه, كما أنك تستخدم ال Reference Implementation (RI) الخاص ب SUN,,,,, يعني أكيد المترجم سيعترض,,,,,,, ربما يكون هناك مترجمات أخري لا تعترض, لكن كن حذرا, المترجم الذي لايعترض سيكون مخالف للمواصفات (specs) , بعكس في حالة ال C/C++ ..

ماشى خلينى معاكوا

طب ايه لازمه ان اعمل overloading للداله بتاعت اللـ main بدال كدا كدا المترجم هيختار اللى فيها String [] args

ايه لازم الـ overloading method هنا

يقبى المفروض كان يتمنع ان يتعمل ليها overloading انا عاوز مثال بعد اذنكوا يحسسنى فعلا ان overloading للداله بتاعت الـ main ليه فائده ان وجد مثال ؟

امممم

انا فاهم ان الC , c++ سداح مداح لكن بردوا ايه انا عاوز اعرف ايه الحكمه من وضع متغيرات للـ main method ايه لازمتها

حلت ايه فالسداح مداح دا ولا بتعمل ايه المتغيرات دى لازمتها ايه يعنى ؟؟

يعنى لم قالوا نطور البرمجه ونعمل لغه اسمها الجافا ايه الحكمه بقا من جعل الـ main method تاخد متغيرات وليه String []args

معلش انا عاوز افهم مش عاوز احفظ وخلاص

وان لم نجد اجابه نروح بقا نجيب الناس اللى صمموا اللغه هههههههههه

وان مش لاقناهم يقبى نحفظها لحد ما نقابلهم يوم القيامه ان شاء الله :)

شكرا اخى هويدى

سلام عليكم

Software Developer
Mahmoudkelany.com


 

#6

لنفترض عندك برنامج console، يعني ليست لديه واجهة. هذا البرنامج هو client ftp مثلا.

عند تشغيل البرنامج، يجب أن تمرر له ال IP الخاص بالخادم ftp، مثلا

myftpclient -h 10.0.5.165

الآن داخل برنامجك، تريد استرجاع المعطيات التي مررتها للبرنامج، وهي h- و 10.0.5.165، من أين ستأتي بها؟

من المصفوفة args!!!!

#7

::: عفوا أخي عصام, لم أرى ردك :D :::

بالنسبة للتساؤل الأول:

حقيقة لم أقابل موقف, و لكن لم تريد أن تجعل لغة الجافا لغة متحجره,,,,,, المرونه مطلوبه, لا نريد أن يكون كل شئ managed.

بالنسبة للسؤال الثاني, هل هذا ما تقصده من سؤالك:

لماذا بالجافا و السي و بأغلب لغات البرمجه نرسل معاملات للدالة main ؟؟

إذا كان هذا سؤالك, فبالطبع لكي يستطيع منفذ البرنامج إرسال معاملات من سطر الأوامر...

تخيل أنك قمت ببناء الأمر cd في الدوس, كيف ستتقبل من المستخدم إسم المسار الذي تريد التوجه إليه,,, هل ستقول له:

please enter your full path:

أم ستجعله يكتب

cd /path/to/dir

ففي الحالة الثانيه, قام المبرمجون بإستخدام معاملات ال main لإرسال بعض البيانات للدالة مباشره من سطر الأوامر....

تم تعديل هذه المشاركة بواسطة هويدي في 14 يوليو 2010 في 18:00

#8
herch كتب:

لنفترض عندك برنامج console، يعني ليست لديه واجهة. هذا البرنامج هو client ftp مثلا.

عند تشغيل البرنامج، يجب أن تمرر له ال IP الخاص بالخادم ftp، مثلا

myftpclient -h 10.0.5.165

الآن داخل برنامجك، تريد استرجاع المعطيات التي مررتها للبرنامج، وهي h- و 10.0.5.165، من أين ستأتي بها؟

من المصفوفة args!!!!

طب تمام دلوقتى انا فهمتك

لكن دا سوالى التانى ليه الداله بتاخد متغيرات

طب تعليقا على كلامك

بم انها الداله الاولى للبرنامج مين اللى هيعطى للداله المتغيرات بتاعتها ؟

هتققولى نظام التشتغيل

هقولك ازاى :)

معلش اتحملنى

Software Developer
Mahmoudkelany.com


 

#9
هويدي كتب:

::: عفوا أخي عصام, لم أرى ردك :D :::

بالنسبة للتساؤل الأول:

حقيقة لم أقابل موقف, و لكن لم تريد أن تجعل لغة الجافا لغة متحجره,,,,,, المرونه مطلوبه, لا نريد أن يكون كل شئ managed.

بالنسبة للسؤال الثاني, هل هذا ما تقصده من سؤالك:

لماذا بالجافا و السي و بأغلب لغات البرمجه نرسل معاملات للدالة main ؟؟

إذا كان هذا سؤالك, فبالطبع لكي يستطيع منفذ البرنامج إرسال معاملات من سطر الأوامر...

تخيل أنك قمت ببناء الأمر cd في الدوس, كيف ستتقبل من المستخدم إسم المسار الذي تريد التوجه إليه,,, هل ستقول له:

please enter your full path:

أم ستجعله يكتب

cd /path/to/dir

ففي الحالة الثانيه, قام المبرمجون بإستخدام معاملات ال main لإرسال بعض البيانات للدالة مباشره من سطر الأوامر....

اممم يعنى تقريبا نادرا لكنها موجوده

لا انا مش عاوزه متحجره بس بم انها على طول بتاخد متغيرات من نوع String ليه اجعل المستخدم يعمل للداله overloading

هل هذا من التصميم الجيد ؟؟؟ ( هأنافس Sun قريبا :lol: )

تمام كدا بالنسبه للسوال التانى

بس بردوا ازاى وانا بعمل Run للبرنامج بيعمل تشغيل من الداله الرئيسيه الmain فكيف يتم ارسال هذه المتغيرات

وان كان عن طريق الdos لم ارى برنامج يعمل عن طريق الDos ويرسل له متغيرات لداله الـ main

معلش انا بحب اقتنع فلو انا مضايقكوا بالاسئله خلاص مش مشكله نقفل الموضوع

علشان مفيش حد يكون مضايق بس

Software Developer
Mahmoudkelany.com


 

#10

ال JVM هي التي تقوم بتشغيل البرنامج وتمرر له المعطيات

اقتباس
A Java virtual machine starts execution by invoking the method main of some specified class, passing it a single argument, which is an array of strings

تم تعديل هذه المشاركة بواسطة herch في 14 يوليو 2010 في 20:53

#11
اقتباس

بس بردوا ازاى وانا بعمل Run للبرنامج بيعمل تشغيل من الداله الرئيسيه الmain فكيف يتم ارسال هذه المتغيرات

بما إنك بتعرف C++, قم بتحميل الكود الخاص بال JVM و قم بمعرفة ذلك و شرحه لنا...

اقتباس
وان كان عن طريق الdos لم ارى برنامج يعمل عن طريق الDos ويرسل له متغيرات لداله الـ main

كل و أي برنامج في الدنيا بيشتغل من سطر الأوامر بيعمل بنفس هذه التقنيه...

يا محمود عمرك مثلا جربت تعمل ping لل موقوع و لقيت البرنامج بيقولك:

>ping 
> please enter the site you want to ping and press enter:
>google.com
>pinging google.com .....

أم إنك بتكتبه كده:

>ping google.com

فالطريقة دي بتم إستخدام المعاملات الموجوده في الدالة main عن طريق ال run-time env سواء في الجافا أو الدوتنيت او السي أو أي لغه كانت ما تكون...

تم تعديل هذه المشاركة بواسطة هويدي في 14 يوليو 2010 في 21:32

#12
herch كتب:

ال JVM هي التي تقوم بتشغيل البرنامج وتمرر له المعطيات

تمام جزاك الله خيرا

طب دلوقتى هل المعطيات ثابته على جميع البرامج ولا متغيره ؟؟؟

معلش سوال قد يكون مش مظبوط بس جه على بالى وبم انى تعبان فهتلاقى اسئله عجب

ربنا يجزيك خيرا على انك متحملنى :)

هويدي كتب:

بما إنك بتعرف C++, قم بتحميل الكود الخاص بال JVM و قم بمعرفة ذلك و شرحه لنا...

كل و أي برنامج في الدنيا بيشتغل من سطر الأوامر بيعمل بنفس هذه التقنيه...

يا محمود عمرك مثلا جربت تعمل ping لل موقوع و لقيت البرنامج بيقولك:

>ping 
> please enter the site you want to ping and press enter:
>google.com
>pinging google.com .....

أم إنك بتكتبه كده:

>ping google.com

فالطريقة دي بتم إستخدام المعاملات الموجوده في الدالة main عن طريق ال run-time env سواء في الجافا أو الدوتنيت او السي أو أي لغه كانت ما تكون...

هو انا بقولك عاوز اعرف حاجه علشان تدبسنى ف حاجه :lol: :lol: هاشوف حاضر يا اخ هويدى

بس انت عارف معرفتنا على قدنا فى السى ++

لا طبعا بعمل ping yahoo.com-t وبيشتغل

ماشى يا اخ هويدى جزاك الله خيرا :)

جميل اتمنى بس ان غيرى يستفاد منها

بجد مش عارف اشكركم ازاى اذا كان اخى هويدى و اخى عصام

جزاكم الله خيرا

انى احبكم فالله

Software Developer
Mahmoudkelany.com


 

#13
Mahmoud Kelany كتب:

طب دلوقتى هل المعطيات ثابته على جميع البرامج ولا متغيره ؟؟؟

المعطيات المُمررة للبرنامج ميزة توفرها اللغة، لكن هذا لا يعني أن كل البرامج تستعملها، الكثير من البرامج لا تهتم بالمصفوفة args ويتم تجاهل أي معطيات يتم تمريرها.

أنت وحاجتك wink.gif

#15
herch كتب:

المعطيات المُمررة للبرنامج ميزة توفرها اللغة، لكن هذا لا يعني أن كل البرامج تستعملها، الكثير من البرامج لا تهتم بالمصفوفة args ويتم تجاهل أي معطيات يتم تمريرها.

أنت وحاجتك wink.gif

جميل اخى عصام

تسلم ايدك

بجد استفدت منكم

جزاك الله خيرا

هويدي كتب:

هات يا هويدى

هقراها لم اصحى بقا لان البرد عامل شغله معايا :mad:

شكرا ليك بجد ربنا يوفققك ويجزك كل خير

Software Developer
Mahmoudkelany.com


 

#16

محمود هذا سؤال وليس نقاش

لم أغلق الموضوع هذه المرة

في المرة القادمة سأغلقه

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#17
علاء الصالحي كتب:

محمود هذا سؤال وليس نقاش

لم أغلق الموضوع هذه المرة

في المرة القادمة سأغلقه

تحياتي

معذره اخى علاء

اسف بس انا اجبرت على كدا

انا بالفعل اول ما اخترت اخترته سوال

لكن لقيت البيانات دى

post-217802-088904600 1279186163_thumb.p

ومش عرفت اعمل ايه

خليته نقاش

المرفقات
fjdlj;d.png

Software Developer
Mahmoudkelany.com


 

#18

محمود جرب طرح موضوع جديد وإنظر للخيارات حاليا , وضعت بعض الأمور إفتراضية ..

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#19
HGB كتب:

محمود جرب طرح موضوع جديد وإنظر للخيارات حاليا , وضعت بعض الأمور إفتراضية ..

جزاكم الله اخى الكريم

فعلا تمت

جميل

معذره على ما حدث من حيث تغيير نوع الموضوع الى نقاش

لكن وضحت عذرى

يرجى قبوله

Software Developer
Mahmoudkelany.com


 

#20

لا مشاكل يا محمود

لكني اعتقدت أنك تتحايل

على كل اعذرني فيبدو أني تسرعت

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#21
علاء الصالحي كتب:

لا مشاكل يا محمود

لكني اعتقدت أنك تتحايل

على كل اعذرني فيبدو أني تسرعت

تحياتي

اشكرك يا علاء

لا لم تتسرع ف من حققك ذلك

لكنى لم اتحايل انا كنت اريد وضع سؤالى

وان لم يحدث ما فعلته لما كان تم وضع قيم افتراضيه

على كل شىء لا اعذار اخى علاء فهذا عملك وانت مشرف ولك احقيه ما تفعل

وانا اعتبرتها قرصه اذن :lol:

Software Developer
Mahmoudkelany.com


 

#22

بالمناسبة حتى بعض المشرفين لم يفهمو النظام إلا قريبا ومنهم من لايعرف عنه شيء حتى الآن :lol:

take it easy ;)

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#23
اقتباس
بالمناسبة حتى بعض المشرفين لم يفهمو النظام إلا قريبا ومنهم من لايعرف عنه شيء حتى الآن laugh.gif

أي نظام blink.gif

ههههههههههههه, أنا أعرفه بالفعل...

#24
HGB كتب:

بالمناسبة حتى بعض المشرفين لم يفهمو النظام إلا قريبا ومنهم من لايعرف عنه شيء حتى الآن :lol:

take it easy ;)

هههههه

طب ليه بس كدا

لا يزعلوا و دول مشروفينا بردوا :)

Software Developer
Mahmoudkelany.com


 

#25

لي صعبة ولكنها موجودة

موفق

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…