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

اسم البرنامج في لغة جافا

مغلق
بدأه دمعة غيم في 15 مايو 2007 · 1 رد · 577 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

اسم البرنامج في الجافا

هناك خطأ يقع فيه الكثير من مبرمجي الجافا و متعلميها، لا يُظهر هذا الخطأ رسالة خطأ عند التنفيذ ولكن هو خطأ عام في مفهوم برنامج الجافا

هناك عبارة منتشرة وبشكل كبير تقول أن برنامج الجافا يجب أن يسمى بنفس اسم الـ class الذي يحتوي على جملة الـ main function وهذا غير صحيح بل يُفضل...

لمعرفة هذا يجب معرفة ماذا يحصل عندما يتم ترجمة و تنفيذ البرنامج

كما هو معلوم ان برنامج الجافا يتكون من مجموعة من الـ classes هذه classes ممكن ان تكون Public

عندما نعرف في البرنامج public class يجب ان نسمي البرنامج بنفس اسم الـ classe وان لم يحتوي على الدالة main لذا لايمكن ان يحتوي البرنامج على أكثر من public class

قد تتساءل كيف ذلك ان كان التنفيذ يبدأ من جملة main؟

اولا يجب ان تعلم ان البرنامج الواحد يمكن أن يحتوي على أكثر من main function بل ان class الواحد ممكن أن يحتوي على أكثر من main function بشرط اختلاف الـ parameters وهذا مايعرف بـ overload

وان العبارة المطلوبة للتنفيذ يشترط ان تكون بالصيغة التالية:

public static void main(String []s

أو

public static void main(String s[])

Example c.java

class a

{public static void main(String []s)

{System.out.println(“…..Hi ..class a…”);}

}

class b

{

Public static void main(String []s)

{Systm.out.println(“….Hi .. class b…”);}

}

فماذا سيكون اسم البرنامج؟؟؟؟؟؟؟؟؟ هناك two classes يحتويان على main function .....!!!!!!!!!

عندما تسمي البرنامج ليكن مثلا c.java

ثم تعمل complier {javac c.java} فإنك لن تحصل على رسالة خطأ لصحة البرنامج وتوافقه مع الصيغة العامة الـ (Syntax) و الناتج ملفينa, B)) من نوع class files يمكن تنفيذ كل منهما على حده بمجرد كتابة الأمر التالي

Java a

Output  …..Hi ..class a…

Where as

Java b

Output….Hi .. class b…

Java c

OutputException in Thread “main” java.lang.NoSucMethodError:main

هذه الرسالة تظهر عندما ننفذ باسم البرنامج لماذا؟

لأنك تتطلب من الجافا ان ينفذ جملة main function الموجود في الملف cمن نوع class file بينما لم يتكون هذا الملف لأنه لا يوجد class داخل البرنامج بهذا الأسم

لذلك لايمكن ان ننفذ البرنامج بالطريقة الأفتراضية وهي ان تسمي الملف بنفس اسم الكلاس

ولكن ان تذهب الى toolsRuncommand(java)prameters(a)Ok

كي يتم تنفيذ الملف a أو اكتب b بدلا من الـ a كي يتم تنفيذ الـ b class file

هذا بالنسبة لمستخدمي الـ textpadا ما غير ذلك فبمايكافئ هذه الطريقة

ولكن يمكن ان تكون هذه الجمل بالـ Dos لمستخدمي جميع برامج كتابة برامج الجافا

Example c.java

class a

{public static void main(String []s)

{System.out.println(“…..Hi ..class a…”);}

Public void main(int i)

{ System .out.println(“hhiiiiiiiiiii…+”i);

}

}

class b

{

Public static void main()

{Systm.out.println(“….Hi .. class b…”);}

}

Class d

{

Public static void main(String str[])

{

a Obja=new a();

b Objb=new b();

String []s={};

Obja.main(s);

Obja.main(3);

Objb.main();

}

Compilerjavac c.java

Rinjava d

Runjava a

Runjava c

Runjava b

عندما تنفذ الـ c,b ستحصل على رسالة خطأ هل تعلم لماذا؟؟؟؟؟؟

هناك معلومة اخيرة أحب اضافتها وهي عندما تسمي نفس الأسماء للـ classes في برامج مختلفة جميعها مخزنة في نفس المجلد فان اخر الـ class files الولى تحل محلها الجديدة فان الكلاس فايل الموجودة هي لآخر برنامج تم تنفيذه وذلك بسبب ان من مميزات الجافا نقلها بين الأجهزة المختلفة دون الحاجة لعمل compiler لها من جديد

فيمكن أخذ الـ class file من جهاز وعمل runjava class file name على جهاز أخر لتحصل على النتائج (potability)

أرجو أن أكون قد وفقت في توصيل الفكرة.....واستحق دعواتكم

وهذا ملف بالورد فيه الشرح كاملا

______________________.rar

#2

موضوع جيد لو استخدمتي code tags

مشكور

هذا الموضوع مغلق.

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