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

انتقل من ++C إلى جافا بسلاسة ... 2

بدأه مصطفى 36a2 في 23 أغسطس 2013 · 4 رد · 1,082 مشاهدة · في JavaEE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع
السلام عليكم ورحمة الله وبركاته
متابعة للمقالة السابقة
انسخ الكود التالي وتأكد من صلاحيته للعمل ...
public class mainThird {
   public static void main(String[]a)
   {
      int $=-7,_=-2,$_1=-8,عربي=7;
      System.out.println(" "+$+" "+_+" "+$_1+" "+عربي);
   }
}
ماذا تستنتج؟
يُسمح باستخدام $في تسمية المتحولات كما يسمح باستخدام الأحرف من غير اللغة الانكليزية
_________________________________________________
هل تعلمت استخدام printf في لغة C  ... هذا التابع المتميّز والذي لا تخلو لغة برمجة من تقليده..
يمكنك استخدامه هنا أيضاً :)
int $=-7,_=-2,$_1=-8,عربي=7;
System.out.printf("%d %d %d\n",$,_,$_1,عربي);
_________________________________________________
المصفوفات في java .. التعامل معها مماثل تماماً للتعامل مع المصفوفات في C  ولكن انشاءها مختلف بعض الشيء
بداية : لا يمكن انشاء مصفوفة بحجم محدد إلا باستخدام التعليمة new  أو بتعريف جميع قيم المصفوفة 
فيما يلي أمثلة على إنشاء مصفوفات ... ومثال على التعامل مع مصفوفة رباعية الأبعاد
      int array[]={1,2,3,4,5,6,7};      int []array2={1,2,3,4,5,6,7}; int array1[]; array1=new int[5];      int array3[]=new int[10];      int []array4=new int[10];      int []array5[]=new int[10][10];      int []array6[][][]=new int[10][10][10][10];      for(int i=0;i<10;i++)         for(int j=0;j<10;j++)            for(int k=0;k<10;k++)               for(int l=0;l<10;l++)               {                  array6[j][k][l]=i+j+k+l;               }      for(int i=0;i<10;i++)         for(int j=0;j<10;j++)            for(int k=0;k<10;k++)               for(int l=0;l<10;l++)               {                  System.out.println(array6[j][k][l]);               }
الأمثلة التالية خاطئة تماماً في جافا ..
int x[10];//correct C code ,,,wrong java code
int xx[2]={1,2};//correct C code ,,,wrong java code
int yx=new int[2];
int xy[][]=new int[2];
int yx[]=new int[];
المثال التالي يوضّح أريحية التعامل مع المصفوفات ...مثل C
الكود بلغة C
int**xy=new *int[10];for(int i=0;i<10;i++)   xy=new int;
الكود بلغة java
int xy[][]=new int[10][];for(int i=0;i<10;i++)   xy=new int;
أليس هذا رائعاً
_________________________________________________
البرمجة كائنية التوجه:
الاختلاف الأول والواجب معرفته هو أن Java لغة كائنية التوجه ... أما ++C فهي لغة تدعم مفهوم كائنية التوجه!
أي أن ++C لا تجبر المبرمج على استخدام الكائنات والصفوف عند كتابة البرنامج ...بل تترك له حرية فعل ذلك او عدمه على عكس java
الاختلاف الثاني ... لا يمكن تعريف صفّين في نفس الملف ...!  
نعم .. إن لغة java من أكثر اللغات تنظيماً وترتيباً حيث تقيد حرية المبرمج في مقابل أن ينتج برنامجاً مفهوماً وموزّعا بشكل مرتب جدا
لذلك كلما أردت إنشاء صف يجب أن تطلب من البيئة .. new class !
لتعريف أكثر من صف في نفس الملف ... الصف الأول فقط يُسمح بأن يكون له الصفة public والباقي يجب أن لا يحوي هذا المحدد ... نكتفي بكلمة class  .. (انظر التعليقات أدناه ) 
 
الاختلاف الثاني ... عند إنشاء كائن ..  فالطريقة الوحيدة لإنشاء كائن هي عن طريق استخدام التعليمة new
لنفترض أن لدينا صف اسمه test يحتوي على متحول i  مثل ++C سنكتب :
public class test {
      int i=0;
      test(){
         System.out.println("Constructor!");
      }
}
قمنا باستخدام الباني الافتراضي لطباعة عبارة ...
كما أنه من الملاحظ إمكانية تهيئة المتحول عند إنشائه وهذا غير مسموح في ++C
في داخل main سنقوم بإنشاء كائن من هذا الصف ..لاحظ ما يلي :
test w=new test();
w.i=8;
test m=w;
System.out.printf("%d\n",m.i);
m.i=7;
System.out.printf("%d\n",w.i);
سيتم طباعة عبارة الباني مرة واحدة ... لأننا أنشأنا كائنا واحداً وهو w  ... أما m  فيمكننا بمقاربة بسيطة اعتباره مؤشراً يؤشر على w
لا يوجد عبارة delete في java لأن هذه وظيفة java بنفسها ... حيث تحوي ما يسمى .. مجمع النفايات garbage collector والذي يحذف أي بيانات لا يوجد من يؤشر إليها ..
 
مفهوم التحميل الزائد للتوابع موجود بقوة في java  ويمكننا القيام بتحميل زائد للباني بشكل طبيعي ..
من الأمور المثيرة جداً في java أن أي صف هو وريث للصف الأب لكل الصفوف :D لذلك ستجد للكائن توابع أخرى غير معرفة في الصف المنشأ !
 
إن محددات الرؤية مثل public و private لا تسخدم كـ label  كما في ++C  ... بل كوصف قبل كل تابع ... وسنتوسع في ذلك بإذن الله في الفقرة التالية ...
أخيرا أرغب في تقديم Java The Complete Reference, 7th Edition  لمن أراد التوسّع .. الكتاب في المرفقات
والله ولي التوفيق

Java The Complete Reference, 7th Edition.rar

تم تعديل هذه المشاركة بواسطة مصطفى 36a2 في 24 أغسطس 2013 في 00:22

2
#2

جميل جدا ما تقوم به أخي الفاضل وفقك الله لكل خير

 

ولكن استوقفني هذا الكلام

اقتباس

 

الاختلاف الثاني ... لا يمكن تعريف صفّين في نفس الملف ...!

 

ما ذا تقصد به؟

vVIfFr.gif

مدونتي



إذا رأيتموني غبت فأطلت الغياب فربما أكون قد انتقلت عن الدنيا إلى الآخرة

فما أحوجني إلى دعوة صالحة من أخ لي كريم

 

http://www.tvquran.com/

 

LoGeCom

أول برنامج عربي للمحاسبة والتجارة وإدراة المخازن يعمل على اللينكس والماك والويندوز 

#3

شكرا لك أخي أحمد ... أسأل الله أن يكون فيه النفع ...

بالنسبة لسؤالك .. في الملف ذو اللاحقة java  لا يمكن إنشاء أكثر من class واحد ... وإلا سيظهر خطأ .. موضح في الصورة التالية :

post-256536-0-17220900-1377286032_thumb.

هذا الأمر لم أقرأه ... بل تبين لي من التجربة ..
بالتالي يجب تفريق الصفوف في ملفات مستقلة لاحقتها .java وهذا ليس صعباً طالما سنعتمد على بيئة البرمجة ... مجرد ضغطة زر ..
والله ولي التوفيق

#4
مصطفى 36a2 كتب:

شكرا لك أخي أحمد ... أسأل الله أن يكون فيه النفع ...

بالنسبة لسؤالك .. في الملف ذو اللاحقة java  لا يمكن إنشاء أكثر من class واحد ... وإلا سيظهر خطأ .. موضح في الصورة التالية :

attachicon.gifq.png

هذا الأمر لم أقرأه ... بل تبين لي من التجربة ..

بالتالي يجب تفريق الصفوف في ملفات مستقلة لاحقتها .java وهذا ليس صعباً طالما سنعتمد على بيئة البرمجة ... مجرد ضغطة زر ..

والله ولي التوفيق

الجافا تقبل صنفين أو أكثر في ملف واحد بشرط أن تكون الكلمة المفتاحية public فقط قبل الكلاس الرئيسي

 

وباقي الكلاسات تجردها من أي كلمة مفتاحية مثل هذا

public class one {
    public static void main(String[] args) {
        // TODO code application logic here
    }
}
class two {
    
}
1

vVIfFr.gif

مدونتي



إذا رأيتموني غبت فأطلت الغياب فربما أكون قد انتقلت عن الدنيا إلى الآخرة

فما أحوجني إلى دعوة صالحة من أخ لي كريم

 

http://www.tvquran.com/

 

LoGeCom

أول برنامج عربي للمحاسبة والتجارة وإدراة المخازن يعمل على اللينكس والماك والويندوز 

#5

جزاك الله خيراً :) ... سأترك النص كما هو دون تعديل .. فقد أعجبيتني فكرة تفريق الصفوف على أي حال  :D

(قمت بتعديل النص .. شكرا جزيلا لك أخي أحمد )
وفقك الله وسدد خطاك ..

تم تعديل هذه المشاركة بواسطة مصطفى 36a2 في 24 أغسطس 2013 في 00:24

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