دورة جافا: الطريق لإحتراف البرمجة من الصفر

 

4. أول الخطوات في تعلم لغة البرمجة جافا

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

2.4 الكلاس 

تعريف الكلاس : من ويكيبيديا :
 
الفئة او الكلاس (Class) في البرمجة كائنية التوجه (Object-Oriented Programming), تمثل المخطط الأولي لإنشاء الكائنات (Objects)، حيث يحتوي هذا المخطط على مجموعة الخصائص (Attributes) والوظائف (Methods)، التي سوف تتشارك فيها جميع الكائنات التي سيتم إنشاءها من هذه الفئة.
وهناك نوعين أساسيين من الكلاسات :

1. كلاس أساسية : main يجب توفرها في أي برنامج، كما يجب توفرها مرة واحدة في كل برنامج ( ببرنامج نعني مشروع على اكليبس وليس في كل كلاس ). 
2. كلاس يتم استعمالها من طرف ال main، وهي تحتوي بشكل عام على الوظائف التي يجب على البرنامج القيام بها.
 
 
1.2.4 الكلاس إنسان  
لنقل أن الكلاس هي انسان أو شخص، هذا الانسان ولأنه عبارة عن كلاس، فبحسب التعريف الذي أخدناه من ويكيبيديا فانها تحتوي على خصائص ( Attributes ) وكذلك وظائف (  Methods). إذاً فالإنسان بدوره له خصائص ويقوم بوظائف! 
 
أنت كإنسان أدعوك للتفكر دقيقة في خلقك، سترى أنك عبارة عن خصائص ووظائف! وكل خاصية فيك تقوم بوظيفة معينة. كيف ذلك ؟ 
 
خصائص الإنسان : له يد، فم، أنف، رجلين، عينين... وكذلك كل أجزائك فهي عبارة عن خصائص 
الوظائف التي تقوم بها هاته الخصائص : 
 
اليد : تكتب بها، تأكل بها، تمسك بها الأشياء..
الفم : تتكلم به، تأكل به... 
الأنف : تتنفس منه، تعطس منه...
الرجلين : تمشي عليهما، تلعب بهما كرة القدم، تركض بهما...
العينين : ترى بهما.. وأكثر من ذلك فالعين لها قوة هائلة في التواصل، يقول الشاعر :
 
أشارت بطرف العين خشية أهلها...إشارة محزون ولم تتكلّم
فأيقنت أنّ الطّرف قد قال مرحباً...وأهلاً وسهلاً بالحبيب المتيّم  
 
 لنحاول إذاً القيام بكتابة كلاس بطريقة نظرية فقط وبدون الشروع في كتابة الأكواد : 
 
سنقوم أولاً بتعريف الخصائص الخاصة بالإنسان، ولكل خاصية نكتب الوظيفة أو الوظائف التي تقوم بها كما وصفنا ذلك قبل قليل، سنحصل على الرسم التالي :
 
mjma3-java
 
يجب أن نعلم جيداً أن ما نقوم به لحد الأن هو فقط تعريف أولي وتقديم، هناك الكثير لكي يقال على الكلاسات ولكن كل شيء في وقته إن شاء الله. 
 
لنعطي مثال أخر لكي تتضح الفكرة لكلاس أخرى، يطبق عليها نفس الأساس : 
 
الكلاس سيارة : 
 
الخصائص  : 
- الباب
- المحرك
 
الوظائف :
- الباب يتحرك
- المحرك يدور
 
  لماذا نستعمل الكلاس ؟
الكلاس هي طريقة رائعة فإذا كُتبت مرة واحدة تكفيك للبرنامج بأكمله فلن تحتاج لأن تكتبها مرات عديدة مما يجعل تطوير البرامج سهل جدا ونظيف.
فمثلا في برنامجنا الذي قمنا بكتابته نظرياً -عن الإنسان-، قمنا بتعريف كلاس اسمها انسان وهذه الكلاس إن اردنا استدعاءها واستعمالها مرة أخرى، فسيصبح الأمر أسهل، لاننا لن نحتاج لتعريف وظائفها وخصائصها مرةً أخرى. 
 
 

2.4 شرح أصغر برنامج

في هذه الفقرة سنرى إن شاء الله شرح لأول برنامج في لغة الجافا على برنامج اكليبس، البرنامج لن يقوم بأي شيء فما هو إلا عبارة عن هيكل لكلاس فارغ، لكنه يعتبر الحجر الأساسي الذي عليه تبنى أي كلاس، لهذا يجب أن نفك رموزه ونفهم مفرداته.
 
سأطلب منكم في بداية هذه الفقرة أن تنشئوا مشروعا جديدا على الإكلبس تسمونه مثلا : helloJava وكلاس تسمونها : hello. كيفية إنشاء مشروع جديد على اكليبس وكذلك كيفية إنشاء كلاس جديدة عليه مشروحة في الفيديو التالي : إنشاء مشروع جديد على اكليبس 
 
عند إنشاء المشروع والكلاس سترون الكود التالي في وسط اكليبس : 
 
 
hello
 
 
نلاحظ في برنامجنا كلمات جديدة، إن قمنا بجمعها ستعطينا المجموعة التالية : 
 
السطر الأول : 
- public : معنى كلمة public هو أنه يمكن إستدعاء الكلاس من أي مكان على المشروع، وفي وسط كلاسات أخرى، ولكي يتم الوصول إليها من خارج هذه الكلاس.  
- class : بكلمة class نقوم بتعريف الكلاس، كأنك تقول أن hello هي عبارة عن كلاس!
 
معنى السطر الأول هو بسيط جداً، فكل ما نقوم به هو تعريف للكلاس، بكتابة الكلمة class متبوعة باسمها.
 
السطر الثاني : 
- public : قمنا بشرحها للتو 
- static : لأنه يتم استدعاؤها مباشرةً وبدون إنشاء كائن منها
- void : لأنها لا تحمل أي قيمة رجعية
- main : وهو إسم الوظيفة ( هو الوظيفة الرئيسية main )
- String[] args : عبارة عن مصفوفة Array، تأخد قيم إدخال من المستخدم.   
 
معنى هذا السطر هو، ببساطة، تعريف لوظيفة رئيسية main! 
 
إذاً ما يجب أن نحتفظ به في ذاكرتنا لحد الساعة من خلال هذه الفقرة هو أن الكلاس هي الهيكل الأساسي في لغة البرمجة جافا، وهي التي تحتوي على الخصائص وكذلك على الوظائف بما في ذلك الوظيفة main، وهي الوظيفة الأساسية في لغة البرمجة جافا. 
 
يبدأ وصف الكلاس ب } وينتهي ب { الأخيرة وبين هذين الأقواس المجعدة نجد الخصائص والوظائف. 


 البرنامج يحتوي على كلاسات عديدة أو كلاس واحدة وكل كلاس تحتوي على وظائف عديدة أو وظيفة واحدة

 
2.2.4 التعاليق في لغة جافا
 
| تعاليق عادية.
| تعاليق جافادوك : Javadoc 
 
التعاليق في البرنامج هي مهمة جدا وتساعد المبرمج على تذكر كل رمز أو وظيفة أو أي شيء في الكود وكذلك لشرحه للمشتري مثلا وهي كذلك مهمة للمبتدئين كحالتنا لحد الأن، لتذكر ما تم شرحه في الدروس. هنا سنتطرق فقط للتعاليق العادية لأن تعاليق دوك تحتاج لبعض المفردات أرى أنه لا يجب ذكرها الآن كي لا تخلط عليكم الأمور .
 
التعاليق العادية يمكن استعمالها بطريقة سهلة ومثال على ذلك في البرنامج هو :
 
// TODO Auto-generated method stub
 
 
وما يهمنا في هذا الكود كله هما : //، بعد هذين الرمزين يعتبر كل ما نكتبه تعليق ولا يأخذ بعين الاعتبار ككود بالجافا حتى وان كتب بطريقة صحيحة يعني مثلا : 
 
 
// public class hello {

//    /**
//     * @param args
//     */
//    public static void main(String[] args) {
//        // TODO Auto-generated method stub

//    }

// }
 
 
فجميع الخصائص والمفردات الخاصة بلغة البرمجة جافا، حتى وإن كتبت بتعبير صحيح ولغة سليمة، فما تعتبر إلا تعليق. 
 
 
 كيف يمكن الاستفادة من التعاليق ؟
 
شاهد البرنامج بالتعاليق :
 
 
comment
 
 
أليس من الجميل إضافة تعاليق للبرنامج للتوضيح والشرح !
هناك رمز ثاني للتعاليق وهو موجود أيضا في لغات كثيرة ك CSS و C ... وهو :
 
 
/*  your content here .   */
 
 
 فرق هذا الرمز عن الرمز السابق ؟
 
بالرمز السابق يجب تعريف كل جملة أو سطر على حدة لكن لو عندنا نص كبيـــــر نريده كتعليق سيكون من الصعب تتبع كل سطر وإضافة الرمز فيه.  لهذا نستعمل هذا الرمز لتعريف النص بأكمله على أنه تعليق فقط بإدخال بدايته ونهايته .
أما تعاليق : Doc فسنتطرق لها فيما بعد إن شاء الله .
 
 
كتابة وترجمة أول برنامج :
 
 
بعدما عرفنا مفاهيم الجافا الأولية تعال لتكتب برنامك الأولي الذي يمكنك أن تتفشخر به أمام أصدقائك!  لا فقط أمزح فالبرنامج الذي ستكتب بعد قليل ما هو إلا برنامج يكتب  helloJava لكن لا بأس به!
البرنامج بالشكل التالي :
 
public class hello { 

 /**
 * @author Ayoub El Hobbi
 * @version 22.06.2009 
 */
 
 public static void main(String[] args) { 
 System.out.println("helloJava");

 } 

} 

 
 
ما تم زيادته في البرنامج الأصغر هي الجملة :
 
System.out.println("helloJava");


 
بغض النظر عن ما قمت بكتابته : اسمي وتاريخ كتابة البرنامج . سنشرحه فيما فهذا هوعبارة عن تعليق doc
 
تعال نشرحها شرح عربي بالمفردات::
| System : نظام .
| out : دعنا نشرحها بالإخراج .
| print : اطبع .
| ln : ومعناها new line : سطر جديد(الرجوع إلى السطر) .
 
الآن أريد منكم أن تقوموا بتنفيذ البرنامج يعني ترجمته : لعمل ذلك يتوجب علينا الرؤية فوق في Eclipse ستشاهدون التالي :
 
 
execute
 
 
لتنفيذ وترجمة البرنامج يجب فقط الضغط على أهم زر (زر البلاي) .
سيتم ترجمة البرنامج وإنتاح : bytecode الذي بدوره سينفذ بطريقة just in time compiler لمشاهدة البرنامج ماذا أعطانا : يجب المشاهدة تحت في Eclipse :
 
 
compile
 
 
فكما نرى فإن تماما ما هو مكتوب بين الأقواس : helloJava هو الذي تم إخراجة .
الآن كتبنا برنامج بلغة الجافا يطبع لنا helloJava .
 
  لكن ما معنى كل الأكواد في الجملة التي تطبع helloJava معنى تقني ؟
المعنى التقني أو المعنى في الجافا هو :
| System : استدعاء لكلاس اسمها System توجد مسبقا مع الجافا .
| out : هذا هو الكائن : object للكلاس System  .
| print : وهي وظيفة method معرفة أيضا في الجافا تمكن من طبع أو تنفيذ الأوامر في الأقواس .
| ln : ومعناها new line : سطر جديد(الرجوع إلى السطر) .
إذن لطبع أي جملة في الجافا فأقل ما يجب عمله هو ماتم كتابته من كود.
 
  شرط هذا الأمر الأساسي هو أن ينتهي بالفاصلة المنقوطة : semicolon :  ; .
تعال لنرى برنامج يطبع جمل أو كلمات عديدة :
 
 
 
public class hello { 

 /**
 * @author Ayoub El Hobbi
 * @version 22.06.2009 
 */
 
 public static void main(String[] args) { 
 System.out.println("helloJava");
 System.out.println("im a new programmer");
 System.out.println("my name is mohamed");
 System.out.println("as the name of our prophet");
 System.out.println("God's blessings");
 System.out.println("and peace");
 System.out.println("be upon him");

 } 

} 

 
 
عند ترجمة وتنفيذ هذا البرنامج نحصل على :
 
 
وكما ترون فكل جملة في سطر وهذا ناتج عن إضافة ln ل print
لمعرفة الفرق اكتب نفس البرنامج بدون إضافة ln هكذا :
public class hello { 

 /**
 * @author Ayoub El Hobbi
 * @version 22.06.2009 
 */
 
 public static void main(String[] args) { 
 System.out.print("helloJava");
 System.out.print("im a new programmer");
 System.out.print("my name is mohamed");
 System.out.print("as the name of our prophet");
 System.out.print("God's blessings");
 System.out.print("and peace");
 System.out.print("be upon him");

 } 

} 

 
الجمل ستطبع بالشكل التالي :
 
helloJavaim a new programmermy name is mohamedas the name of our prophetGod's blessingsand peacebe upon him
وأنا لاأظن أنك تريدها بهذا الشكل!.
 
 
 لاحظ أن System مكتوبة ب-S كبيرة ويعتبر خطأ إذا كتبتها s صغيرة .
لتنفيذ البرامج بدون الضغط على زر البلاي هناك اختصار من الكيبورد : ctrl + F11 .
 

2.4 نصائح لتعلم لغة البرمجة جافا 

 
ولأن دائما تستحضرني كلمة Dennis M. Ritchie والتي تقول : لا يستطيع المرء تعلم لغة برمجة جديدة إلا بكتابة برامجها .
 
فإنني أنصح الجميع ابتداء من هذه الفقرة بالكتابة بلغة الجافا لا يهم ماذا نكتب لكن المهم هو حل أي برنامج أو مشكل في الجافا والبحث عن التمارين وعدم نقل الأكواد المكتوبة هنا في الدرس ولصقها في الإكلبس .
بل يجب كتابة أي كود ولو كان طويلا بيديك وبالتجربة تأكد أنك بعد فترة وجيزة ستفهم الكثيــــــر ان شاء الله. كما يجب البحث عن أي شيء لم تفهمه أو طرح موضوع تتطرق فيه للمشكل في المنتديات .
كذلك يجب التدريب على التعامل مع لغات البرمجة فهي ليست كتمرين في الاجتماعيات أو بعض المواد التي تعتمد على الحفظ, بل يجب أن تفكر قبل حل التمارين وان استدعت الضرورة فورقة وقلم لهم أيضا منافع كثيرة .
 
ملاحظة مهمة : لغة الجافا تفرق بين الكتابة بالحروف الكبيرة والحروف الصغيرة فمثلا : System لا علاقة لها ب system ولا علاقة لها ب SysteM !.
 
هنا بإذن الله سأطرح مجموعة لا بأس بها من التمارين لذلك استفد منها واعلم أن كل هذا مطروح لخدمتك أنت أيها المطور المسلم و العربي لذلك لا تبخل علينا بالدعاء.
كما سيواكب الدرس مرة مرة تقنيات ببرنامج Eclipse ستجدها مميزة بالصورة التالية :  Coherence
 
 

3.4 ملخص عن هذه الفقرة :

 
 الكلاس هي أحد مكونات برامج لغة الجافا .
 يمكن استدعاؤها في البرنامج بطريقة سهلة .
  تحتوي على Methods ك :  (...) public static void main .
  برنامج في لغة جافا يتكون من كلاس واحدة أو عدة كلاسات .
  كل كلاس تحتوي على وظائف عديدة أو وظيفة واحدة (Methods).
 التعاليق نوعين : تعاليق عادية وأخرى doc متطورة .
 التعاليق العادية يمكن استخدامها بالشكل التالي : Contents goes here // أو /* Content goes here */  .