You are on page 1of 71

‫أساسيا البرمجة بلغة الجافا‬

‫لبرمجة بلغة لجافا‬ ‫أساسيا‬ ‫كتا‬


‫يتكو لكتا من سبعة فصو تشرح لجو نب اساسية في لغة لجافا‪ ،‬في لفصل او من لكتا نشرح‬
‫مميز لغة لجافا و لمتغير ‪ ،‬في لفصل لثاني نوضح عبار لتحكم و لحلقا لتكر رية‪ ،‬في لفصل لثالث‬
‫نتحد عن لمصفوفا و نو عها‪ ،‬في لفصل لر بع نتحد عن لدو ‪ ،‬في لفصل لخامس ندخل لي مفاهيم‬
‫لبرمجة بالكائنا في لفصل لسادس من لكتا نتحد عن لور ثة وتعدد اشكا في لفصل لسابع من لكتا‬
‫نوضح استثناء و لتعامل مع لملفا باإضافة لي مفهو لبرمجة لمتعدد )‪( Multithreads‬‬

‫‪1122‬‬
‫بسم اه الرحمن الرحيم‬

‫أساسيا البرمجة بلغة الجافا‬

‫محمد محمود إبر هيم موسى‬

‫جامعة لزعيم أ هري‬

‫لحاسو وتقنية لمعلومات‬ ‫كلية علو‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪1‬‬
‫الفهـــــــــر ‪:‬‬
‫مقدمة‪ .............................................................................................. :‬ت‬
‫الفصل ااو ‪ :‬مدخل الي لغة البرمجة جافا ‪6 ..........................................................‬‬
‫لغة الجافا‪6 ............................................................................... :‬‬ ‫مميزا‬
‫في الجافا‪7 ..........................................................................:‬‬ ‫انواع البيانا‬
‫المتغيرا ‪7 ........................................................................................ :‬‬
‫بط الساسل نصية‪8 ................................................................................ :‬‬
‫تعريف الثوابت‪9 ................................................................................... :‬‬
‫الرياضية في الجافا‪01 ................................................................... :‬‬ ‫العمليا‬
‫المنطقية‪01 .............................................................................. :‬‬ ‫العبا ا‬
‫من المستخد ‪00 ................................................................... :‬‬ ‫قراء البيانا‬
‫التكرا ية ‪ .....................................................‬ة‪0‬‬ ‫الفصل الثاني‪ :‬جمل التحكم والحلقا‬
‫المقا نة‪ ................................................................................ :‬ة‪0‬‬ ‫عبا ا‬
‫جمل الشرط‪ ..................................................................................... :‬ة‪0‬‬
‫التكرا ية‪10 ...............................................................................:‬‬ ‫الحلقا‬
‫التكرا ية ‪ ............................................................. :‬ت‪1‬‬ ‫حو الحلقا‬ ‫ماحظا‬
‫‪17 .........................................................................‬‬ ‫الفصل الثالث‪ :‬المصفوفا‬
‫‪17 .........................................................................:Arrays‬‬ ‫المصفوفا‬
‫احادية البعد‪17 ....................................................................... :‬‬ ‫المصفوفا‬
‫متعدد البعد‪19 ....................................................................... :‬‬ ‫المصفوفا‬
‫الفصل الرابع‪ :‬الدوا في الجافا ‪10 .....................................................................‬‬
‫الدوا في الجافا‪10 ................................................................................ :‬‬
‫الدوا الجاهز ‪10 .................................................................................. :‬‬
‫الدوا المعرفة بواسطة المستخد ‪16 ............................................................. :‬‬
‫استدعاء الدوا ‪18 .................................................................................. :‬‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪2‬‬
‫النداء الذاتي‪19 .................................................................................... :‬‬
‫تحميل الدوا بشكل ائد ‪0 ........................................................................ :‬ة‬
‫‪1 ................................................................‬ة‬ ‫الفصل الخامس ‪ :‬البرمجة بالكائنا‬
‫البرمجة بالكائنا ‪1 .............................................................................. :‬ة‬
‫الوصو ‪ ................................................................................ :‬ةة‬ ‫محددا‬
‫‪ ..................................................................: Constructor‬ةة‬ ‫المشيدا‬
‫المؤشر ‪6 .................................................................................. :this‬ة‬
‫الفصل الساد ‪ :‬الو اثة وتعدد ااشكا ‪7 ..............................................................‬ة‬
‫الو اثة‪7 .......................................................................................... :‬ة‬
‫التجريد ‪1 ..................................................................... :Abstraction‬ت‬
‫والدوا الثابتة‪1 .......................................................................... :‬ت‬ ‫الفئا‬
‫الواجها ‪1 ...................................................................................... :‬ت‬
‫تعدد ااشكا ‪6 .................................................................................... :‬ت‬
‫الحز ‪8 ........................................................................... :Packeges‬ت‬
‫‪9 ...............................................................‬ت‬ ‫والملفا‬ ‫الفصل السابع‪ :‬ااستثناءا‬
‫ااستثناءا ‪9 .................................................................................... :‬ت‬
‫معالجة ااستثناء‪9 ............................................................................... :‬ت‬
‫الملفا ‪61 .........................................................................................:‬‬
‫البرمجة المتعدد ‪61 ........................................................ :Multi threads‬‬
‫المراجع‪71 ........................................................................................... :‬‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪3‬‬
‫اهــداء‪:‬‬

‫لحاسو وتقانة لمعلومات جامعة لزعيم ا هري لي لدفعة ‪ 16‬لي كل من ساهم في‬ ‫إلى طا كلية علو‬
‫ينا ضاءكم‪.‬‬ ‫وصو هذ لعمل لي هذ لشكل و جو‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪4‬‬
‫مقدمة‪:‬‬

‫ه بل‬ ‫س ح نه أش‬ ‫ه ل ج ‪ ،‬ش ت ح ه كل م ج ‪ ،‬أح‬ ‫‪ ،‬عم بح‬ ‫ه ل ح ل‬ ‫لح‬


‫‪ ،‬ت ع‬ ‫ل‬ ‫‪ ،‬ع من أ عه ب ل‬ ‫ل‬ ‫‪ ،‬أش أ ا له ا ه ح ا ش يك له لغ‬ ‫لس مح‬
‫‪،‬‬ ‫‪ ،‬ل ء ل‬ ‫لح‬ ‫س له‪ ،‬ص حب ل‬ ‫ل ق ‪ ،‬أش أ ن ي مح ً ع ه‬ ‫بل‬ ‫من ع‬
‫م من ل م ين‬ ‫‪ ،‬ل ب ين من ت‬ ‫آله أصح به‪ ،‬ل كع لس‬ ‫ه ع يه ع‬ ‫‪،‬ص‬ ‫ل‬ ‫لح‬
‫ل ع ‪.‬‬ ‫لي‬ ‫‪ ،‬س م تس ي ً ك ي ً ل‬ ‫ل‬

‫ق ق مت‬ ‫س ي ع ‪1990‬‬ ‫ب‬ ‫لح ي ج ً في ع لم ل م ‪ ،‬حيث‬ ‫لغ ج ف من ل غ‬ ‫ت‬


‫إن نت‪.‬‬ ‫صح‬ ‫لغ ب م‬ ‫ه‬ ‫من ب‬ ‫لغ‬ ‫ش ك ‪ .Sun Microsystems‬ك‬ ‫ب ضع م هي‬
‫لح ي‬ ‫ي‬ ‫ل‬ ‫إن نت ب م‬ ‫صح‬ ‫ب م‬ ‫مع ن‬ ‫ل لم بس ع ك ي‬ ‫لغ ج ف ح‬ ‫ن‬
‫غي ه ‪.‬‬ ‫لح سيب ل ف ي‬ ‫ش ئح ل تف ل ح‬ ‫ليت ف ه لغ ملب م‬ ‫أخ‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪5‬‬
‫الفصل ااو ‪ :‬مدخل الي لغة البرمجة جافا‬

‫مميزا لغة الجافا‪:‬‬

‫تس ع في ك ب ل مج‪.‬‬ ‫كي‬ ‫أ‬ ‫ع‬ ‫ن لغ ق ي تح‬ ‫‪‬‬


‫م ني ل ص‬ ‫لي‬ ‫‪ ،‬من أهم ه‬ ‫ق‬ ‫ك ي من ل غ‬ ‫من تافي عي‬ ‫ج ف لغ ح ي م‬ ‫‪ ‬ل‬
‫س ل ت مي ه ‪.‬‬ ‫م‬ ‫ل ض فس ي ل‬ ‫ي‬ ‫ل ص ب ل ن مج ل‬ ‫قع ل ك‬ ‫ل ش ل‬
‫ت غيل ي ف‬ ‫ع ن‬ ‫آخ يح‬ ‫حس‬ ‫ب غ ج ف ي ن ن ه ت غي ه ع ج‬ ‫ل ن مج ل‬ ‫‪‬‬
‫م كل‪.‬‬ ‫‪ Windows, Linux‬غي ه ) ب‬ ‫(م اً يح‬ ‫أ‬ ‫عن لح س‬
‫ه‬ ‫(‪ ، )Object Oriented Programming Language‬ي‬ ‫بل ئ‬ ‫لغ ج ف لغ ب م‬ ‫‪ ‬ت‬
‫م ً لي ‪.‬‬ ‫ً أك ه س‬ ‫ن‬ ‫من أ س‬ ‫ل م‬ ‫ف من لغ‬ ‫ل‬

‫لس ع مي‬ ‫لغ ج ف ب ي نس ي ً‪.‬‬ ‫‪ ،‬ي ن ع‬ ‫من ل ي‬ ‫ات‬ ‫ل م‬ ‫لغ ج ف كغي ه من لغ‬
‫أهم‪.‬‬ ‫مي‬ ‫اك س‬ ‫حي ب ض ل ي‬ ‫‪ ،‬ل ني ب ل‬ ‫م‬

‫ب ن مج ج ف‬ ‫مح ي‬ ‫فع‬ ‫ب ن مج ل‬ ‫ه‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪6‬‬
‫مج ه ‪ first‬ي ب ح ظ‬ ‫ل‬ ‫خ‬ ‫سم ل ن مج ل‬ ‫‪ class‬ي ي‬ ‫لح‬ ‫ي أ ب ن مج ج ف ب ل‬
‫ل ل )][‪ public static void main(String args‬ي أ ت ي‬ ‫‪ class‬ع‬ ‫ل ف ب س اسم يح‬
‫ل‬ ‫ل ن مج من ه‬

‫انواع البيانا في الجافا‪:‬‬

‫ااعدا الصحيح ‪:‬‬

‫ااعدا الحقيقي ‪:‬‬

‫الن ع المنطقي‪:‬‬

‫‪false‬‬ ‫‪ Boolean‬ي ل ل يم ‪true‬‬

‫الن ع ‪:String‬‬

‫يف ل‬ ‫ل‬ ‫يس‬ ‫غي اس سي‬ ‫لين‬ ‫ل غم من نه من ن‬ ‫ع‬ ‫ش ئع اس‬ ‫ه ل‬

‫المتغيرا ‪:‬‬

‫تعريف المتغيرا ‪:‬‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪7‬‬
‫وضع قيم ل متغير‪:‬‬

‫ل ي ل غي‬ ‫ل غي ‪ test‬هي ‪ true‬ه‬ ‫ل غي ‪ number1‬هي ‪ 6‬قي‬ ‫قي‬ ‫ه ي ي‬

‫ما ‪:‬‬

‫ال ر من ال رنامج‬

‫بط الساسل نصية‪:‬‬


‫مل (‪)+‬‬ ‫ل‬ ‫ي نس‬ ‫ل بط لساسل ل‬

‫ل لي ي ضح لك‬ ‫ل‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪8‬‬
‫ال ر من ال رنامج‬

‫من‬ ‫ل‬ ‫ل ن ل ل ‪ println‬ب‬ ‫ل ش‬ ‫ع ع‬ ‫ب ي ل‬ ‫ل‬ ‫ه‬ ‫‪ println‬ت‬ ‫ل ل ‪print‬‬


‫جي‬ ‫ع ت ل لي س‬ ‫ل‬

‫تعريف الثوابت‪:‬‬
‫يف‪،‬‬ ‫ل‬ ‫ب ئي له لح‬ ‫ضع قي‬ ‫يه‬ ‫ب‬ ‫ف طن‬ ‫ل بت ه م غي ا ي ن تغي قي ه في ل ن مج ل‬
‫‪final‬‬ ‫لح‬ ‫ا في ل‬ ‫ل ن مج‪ .‬ت يف ل بت ا ي ف عن ل غي‬ ‫لي ثب‬ ‫ت له‬
‫أنه ث بت‪.‬‬ ‫ب ع‬ ‫يف ل س‬ ‫ل‬ ‫أم‬ ‫لين‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪9‬‬
‫العمليا الرياضية في الجافا‪:‬‬

‫العبا ا المنطقية‪:‬‬

‫ما ‪:‬‬

‫ال ر من ال رنامج‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪10‬‬
‫قراء البيانا من المستخد ‪:‬‬

‫ل ن مج ل لي‬ ‫ل ئن ‪ BufferedReaded‬ل ج ب لح م ‪java.io‬‬ ‫نس‬ ‫من ل س‬ ‫ل ء لين‬


‫ي ضح لك‬

‫من ل ن مج‬ ‫ل‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪11‬‬
: ‫طريق اخر لقراء ال يانا من المست د‬

‫في‬ ‫ ل ج‬Scanner ‫ل‬ ‫ ل ل لك نس‬System ‫في لح م‬ ‫ ل ج‬in ‫ل ئن‬ ‫نس‬

import java.util.scanner

‫ل لي ي ضح لك‬ ‫ل‬

‫ال ر من ال رنامج‬

Mohammed.aau@gmail.com Mohammed Mahmoud


12
‫س ل في ا خ‬ ‫ي‬ ‫ل‬ ‫ه‬ ‫ناحظ‬

‫ ل ساسل‬in.nextString() in.nextChar(); ‫ نس‬char ‫من ل‬ ‫ا خ قي‬

Mohammed.aau@gmail.com Mohammed Mahmoud


13
‫الفصل الثاني‪ :‬جمل التحكم والحلقا التكرا ية‬

‫عبا ا المقا نة‪:‬‬

‫جمل الشرط‪:‬‬
‫ع ار الشرط ‪:if‬‬

‫‪if‬‬ ‫ل يغ ل م ل‬

‫ل لي ي ضح لك‬ ‫ل‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪14‬‬
‫ال ر من ال رنامج‬

05 ‫ك من‬ ‫ل خ‬ ‫لي‬ 

05 ‫قل من‬ ‫ل خ‬ ‫لي‬ 

:if else ‫الع ار‬

Mohammed.aau@gmail.com Mohammed Mahmoud


15
‫لي تي ‪.‬‬ ‫‪ condition‬ص ب ً‪ ،‬ي م ت ي ‪ statement1‬ت هل ‪ else‬ل‬ ‫ل‬ ‫قي‬ ‫ع م ت‬
‫‪ . statement2‬ك‬ ‫‪ statement1‬ت ي ل‬ ‫ي م ت هل ل‬ ‫‪ condition‬خ‬ ‫ل‬ ‫ع م ي‬
‫خ ‪ ،‬ت ضع أ م بين ق سي‬ ‫ل‬ ‫ح في ح ل قي‬ ‫ت ي أك من أم‬ ‫ل‬ ‫ك‬ ‫‪، if‬‬ ‫في ع‬
‫ن ي‪.‬‬ ‫ب ي‬

‫لس بق‬ ‫ب يل ل‬ ‫ا س‬

‫ك من ‪05‬‬ ‫قي‬ ‫من ل ن مج ع م ي خل ل س‬ ‫ل‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪16‬‬
‫قل من ‪05‬‬ ‫ع م ي خل قي‬

‫ما ‪:‬‬

‫‪6‬‬ ‫ع‬ ‫ي ل لس‬ ‫ل‬ ‫ك‬ ‫ب ن مج يح‬

‫ل قم ‪42‬‬ ‫خل ل س‬ ‫من ل ن مج ع م‬ ‫ل‬

‫ل قم ‪06‬‬ ‫خل ل س‬ ‫ع م‬
‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬
‫‪17‬‬
:‫ بـ‬if else ‫ي ن ل ي عن‬

max = (number1< numner2)?number1:number2;

‫ل لي ي ضح لك‬ ‫ل‬

‫من ل ن مج‬ ‫ل‬

: if else if else…… ‫ل‬

Mohammed.aau@gmail.com Mohammed Mahmoud


18
‫الع ار ‪:switch‬‬

‫‪switch‬‬ ‫ل يغ ل م ل‬

‫‪int‬‬ ‫من ل‬ ‫فيه أ ي‬ ‫قي ه‪ ،‬ي‬ ‫ع‬ ‫ج ء اخ‬ ‫حيث ‪ variable‬ه سم ل غي ل‬


‫عن قيم ي ن أ ي خ ه ل غي ‪.‬‬ ‫أ ‪ value2, value1 . char‬ع‬

‫‪ ، case‬ي م‬ ‫ب ك‬ ‫قي ه أيّ ً من ل يم ل ج‬ ‫س‬ ‫ل غي ‪، variable‬‬ ‫ع‬ ‫ج ء اخ‬ ‫ع‬


‫‪ ، break‬ل ي ت‬ ‫ل‬ ‫ع‬ ‫ل ن ي ‪ switch‬أ ل‬ ‫ل ص‬ ‫ل لي ح‬ ‫أ ل‬ ‫ت ي ل‬
‫غي م ج‬ ‫قي‬ ‫ل غي ع‬ ‫ح‬ ‫‪ case‬ل ي تم ت ي ه ‪ .‬أم‬ ‫‪ case‬ل لي ل‬ ‫بي فت ي ع‬
‫‪. default‬‬ ‫لح‬ ‫ل لي ل‬ ‫‪ ، case‬ع ئ ي م ت ي ل‬ ‫ض نع‬

‫م ‪:‬‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪19‬‬
‫من ل ن مج‬ ‫ل‬

Mohammed.aau@gmail.com Mohammed Mahmoud


20
‫الحلقا التكرا ية‪:‬‬

‫ل ن مج‬ ‫ك‬ ‫‪ ،‬م اً‬ ‫من ل‬ ‫ت ي ج ئي م ي من ل ن مج ل‬ ‫ل‬ ‫في ك ي من ل مج‪ ،‬نح‬


‫ل ن مج ي ع‬ ‫ك‬ ‫‪.‬أ‬ ‫ق ء م‬ ‫ي أ ن ب ‪ 05‬ع‬ ‫ً‪ ،‬ليس من ل‬ ‫ب ء أس ء ‪ 05‬م‬ ‫ي‬
‫ياً ج ً‪،‬‬ ‫ع ‪ ،‬أنه سي‬ ‫‪ 1555‬ع‬ ‫ع‬ ‫ب ن مج يح‬ ‫من ‪ 1‬ل ‪ ،1555‬فا ي ن ت‬ ‫أع‬
‫ع‪.‬‬ ‫ب ‪ ،‬هي ع ي ل‬ ‫ل‬ ‫ع من ل ي‬ ‫م‬ ‫ع‬ ‫في ن س ل قت يح‬

‫أن‬ ‫أن‬ ‫في أغ ب ل مج‪ ،‬خ ص ل مج ل ي‬ ‫ت ي ل‬ ‫ل ت‬ ‫قع أ نح‬ ‫من ل‬


‫ح ‪.‬أ ت‬ ‫فع‬ ‫ل تب ل ل م‬ ‫‪ ،‬ي م حس‬ ‫ت‬ ‫ل‬ ‫من ل ي ن ‪ .‬ف ي ن‬ ‫ع‬ ‫ت مل مع م‬
‫قم حس به‪ ،‬ي م ل‬ ‫ب ي‪ ،‬ل حث عن سم ع يل ب س‬ ‫ين‪ .‬في ن‬ ‫ل‬ ‫ل تب ب‬ ‫ع ي حس‬
‫أه ي‬ ‫أ ل‬ ‫أ ي ي ل اء‪ .‬ل لك ن‬ ‫ل أ ن‬ ‫لحس‬ ‫أ ق‬ ‫ج يع ع اء ل ك خ‬ ‫ع‬
‫‪.‬‬ ‫أ ن‬ ‫ا يس غ ي ع‬ ‫ي‬ ‫ك‬

‫يل‪.‬‬ ‫ل بل‬ ‫‪.‬س‬ ‫ل‬ ‫م‬ ‫ت ف لغ ‪ Java‬ثا ع‬

‫الح ق ‪:while‬‬

‫‪ condition‬هي ‪true‬‬ ‫ل‬ ‫م مت قي‬ ‫ب خ‬ ‫ل‬ ‫‪ while‬ب‬ ‫لح‬ ‫ت‬

‫‪while‬‬ ‫ل يغ ل م ل‬

‫ما ‪:‬‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪21‬‬
‫ال ر من ال رنامج‬

‫الح ق ‪:do while‬‬

‫ل ج‬ ‫ب ي ل‬ ‫في ن ي لح ‪ .‬أ أن ت‬ ‫ش‬ ‫‪ while‬ا أنه ي م خ‬ ‫بح‬ ‫هي ش ي‬


‫ت أ ت ق ‪.‬‬ ‫ع‬ ‫ي ت‬ ‫لح ي س‬ ‫ل‬ ‫قي‬ ‫ثم خ‬ ‫ب خ‬

‫‪do while‬‬ ‫ل يغ ل م ل ح‬

‫م ‪:‬‬

‫‪155‬‬ ‫‪14‬‬ ‫ل‬ ‫ع‬ ‫م‬ ‫ب‬ ‫ب ن مج ي‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪22‬‬
‫من ل ن مج‬ ‫ل‬

:for ‫الح ق‬

‫ع‬ ‫ل‬ ‫ل‬ ‫ه‬. ‫من ل‬ ‫م‬ ‫ ل‬statement ‫ت ي ل ي‬ ‫ب‬ ‫ ت‬for ‫أ ح‬ ‫ع‬
‫ ي م ت ي ل‬initialValue ‫اب ئي‬ ‫لي‬ ‫ ي خ ل‬. counter ‫لح‬ ‫ل يم ل ي ي خ ه ع‬ ‫عن ع‬
incrementExpression ‫ حسب م ه م ّف في‬counter ‫ل غي‬ ‫قي‬ ‫ ب كل ت ي ت‬، statement
. ‫ ع ه ي قف ل‬، finalValue ‫ل ئي‬ ‫لي‬ ‫ي ل ل‬ ‫ح‬

for ‫ل يغ ل م ل ح‬

Mohammed.aau@gmail.com Mohammed Mahmoud


23
: ‫م‬

‫من ل ن مج‬ ‫ل‬

: ‫ المتداخ‬for ‫الح ق‬

‫ خ‬for ‫ خل ح‬for ‫ح‬ ‫نس‬ ‫في ه ل‬

Mohammed.aau@gmail.com Mohammed Mahmoud


24
‫من ل ن مج‬ ‫ل‬

‫ماحظا حو الحلقا التكرا ية ‪:‬‬

‫‪. for‬‬ ‫ح‬ ‫ه لح ‪ ،‬أف ل س‬ ‫ليس‬ ‫ل‬ ‫ع م ن مس ًع‬ ‫‪‬‬

‫‪،‬‬ ‫لس‬ ‫ب خل‬ ‫ي‬ ‫قي‬ ‫ع‬ ‫ي‬ ‫ل‬ ‫ك‬ ‫صً‬ ‫تح ي ً‪ ،‬خ‬ ‫ل‬ ‫ك ان مع‬ ‫‪‬‬

‫‪ while‬أ ‪. while do‬‬ ‫ل س‬ ‫ي‬ ‫لح‬ ‫في ه‬


‫‪ for‬لاس‬ ‫ح‬ ‫قي ه في ل ن مج ي ن س‬ ‫أ س‬ ‫قم ل‬ ‫ف‬ ‫ل‬ ‫ل‬ ‫ك نح‬ ‫‪‬‬

‫‪.‬‬ ‫من ع ه ‪ ،‬حيث أ قي ه ت ين قم ل‬


‫ل‬ ‫ي‬ ‫ك ت ي لح‬ ‫‪ ، while‬أم‬ ‫ح‬ ‫أصاً‪ ،‬ف أصح س‬ ‫ن أا ي م ت ي لح‬ ‫ك من ل‬ ‫‪‬‬

‫‪. while do while‬‬ ‫س‬ ‫حي‬ ‫‪،‬يس‬ ‫أ ل في كل أح‬ ‫ل‬


‫ي لا‬ ‫ل‬ ‫ب ٍ من ل‬ ‫لغ ‪ Java‬ي ن أ ن عن أ ف ب ت‬ ‫ع م ًع س‬ ‫‪‬‬

‫لح أم ل أف ل ل ي ت ل ك ب‬ ‫ئ ًن‬ ‫س ي صحيح ‪ ،‬ل‬ ‫ليت ف ه لغ ‪ ،‬ب‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪25‬‬
‫ل ن مج‬ ‫ي‬ ‫لح‬ ‫لك حسب خ‬ ‫أك‬ ‫ب‬ ‫ل‬ ‫ ت‬،ً ‫ل ن مج أس ل أقل ت ي‬
. ‫ل‬

Mohammed.aau@gmail.com Mohammed Mahmoud


26
‫الفصل الثالث‪ :‬المصفوفا‬

‫‪:Arrays‬‬ ‫المصفوفا‬

‫ف سم ح‬ ‫ل‬ ‫لين ‪،‬ي‬ ‫من ن س ن‬ ‫عاق ب‬ ‫عن صف من ل ي ن‬ ‫ف ع‬ ‫ل‬


‫لين ‪.‬‬ ‫ت ضع ب‬ ‫ع من لح‬

‫المصفوفا احادية البعد‪:‬‬

‫ف ح ي ل‬ ‫يف ل‬ ‫ل يغ ل م ل‬

‫‪int‬‬ ‫ف من ل‬ ‫ل لي ي ضح ت يف م‬ ‫ل‬

‫وضع قيم ابتدائي لعناصر المصف ف ‪:‬‬

‫‪array‬‬ ‫ف‬ ‫ضع قيم لي ل‬ ‫ل ل ل لي ي ضح كي ي‬

‫ع ءه قيم لي‬ ‫ف‬ ‫ت يف ل‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪27‬‬
‫ف‬ ‫من ل‬ ‫ع ع‬

for ‫ح‬ ‫ف نس‬ ‫ع كل ع ص ل‬ ‫ل‬

‫حي ل‬ ‫ف‬ ‫ل‬ ‫ع‬ ‫م‬

‫من ل ن مج‬ ‫ل‬

Mohammed.aau@gmail.com Mohammed Mahmoud


28
‫المصفوفا متعدد البعد‪:‬‬

‫ل‬ ‫ف م‬ ‫يف م‬ ‫ل يغ ل م ل‬

‫اب‬ ‫ف م‬ ‫ضع قيم لي ل‬ ‫ت يف‬

‫اب‬ ‫ف م‬ ‫مح من ل‬ ‫ع ع‬

‫‪ for‬م خ‬ ‫ح‬ ‫ف نس‬ ‫ع كل ع ص ل‬ ‫ل‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪29‬‬
‫ل‬ ‫ف م‬ ‫ل‬ ‫ع‬ ‫م‬

‫من ل ن مج‬ ‫ل‬

Mohammed.aau@gmail.com Mohammed Mahmoud


30
‫الفصل الرابع‪ :‬الدوا في الجافا‬

‫الدوا في الجافا‪:‬‬

‫لح ج ب س‬ ‫ل ن مج ع‬ ‫ي م ي ‪ ،‬ي م ن ه خا‬ ‫لي ت‬ ‫ع من ل ي‬ ‫ل ل هي م‬


‫ّف أصاً في لغ‬ ‫ل‬ ‫ل ج‬ ‫ل ي من ل‬ ‫‪ . methods‬ه‬ ‫ل‬ ‫‪ .‬في لغ ‪ Java‬تس‬ ‫س‬
‫ل ل‬ ‫أم‬ ‫م ه خا‬ ‫لغ ‪ Java‬ل ي س‬ ‫م ع م ن ي ‪ .‬من ك‬ ‫‪ Java‬ل ي ي ن أ نس‬
‫ل ش‪.‬‬ ‫ع ع‬ ‫ل‬ ‫م‬ ‫لغ‬ ‫ل‬ ‫‪ print‬ل ل ‪ ، println‬ه‬

‫ا ‪ ،‬ا ي سع ل‬ ‫ل‬ ‫في ش‬ ‫ئف ل‬ ‫ل‬ ‫ع ه ئل ج ً من ل‬ ‫لغ ‪ Java‬ع‬ ‫تح‬


‫ل ي يح ج ب ًء‬ ‫مج عن ل‬ ‫لي ‪ ،‬ل ن ي حث ل‬ ‫في م‬ ‫ج يع ل‬ ‫ل ك ه ‪ ،‬بل ا ي ن ح‬
‫ل س ئط ل ي ت خ ه ‪.‬‬ ‫ع‬ ‫ن‬ ‫ي ك ب‬ ‫ا ب من م ف‬ ‫ل‬ ‫ه‬ ‫م ل ‪ .‬اس‬ ‫ع‬

‫الدوا الجاهز ‪:‬‬

‫‪:math class‬‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪31‬‬
math ‫في ل‬ ‫ل ج‬ ‫ه بض ل‬

:‫الدوا ال اص الساسل‬

Mohammed.aau@gmail.com Mohammed Mahmoud


32
Mohammed.aau@gmail.com Mohammed Mahmoud
33
Mohammed.aau@gmail.com Mohammed Mahmoud
34
Mohammed.aau@gmail.com Mohammed Mahmoud
35
: ‫الدوا المعرفة بواسطة المستخد‬

‫يف ل ل‬ ‫ل‬ ‫ل ل ل‬

protected private public ‫ي‬ ‫ل ص‬ ‫ مح‬Access


. ‫ع فت فيه ف ط‬ ‫ف ل‬ ‫خل ل‬ ‫م‬ ‫يف ل ل لي م س‬ ‫ل‬ ‫ تس‬Static

Mohammed.aau@gmail.com Mohammed Mahmoud


36
‫ل يم ل ي ت ي ه ل ل‬ ‫‪ Return_type‬يح ن‬
‫‪ Method_name‬سم ل ل‬
‫ي ( ‪Formal‬‬ ‫ل‬ ‫ما‬ ‫بل‬ ‫ما‬ ‫ل‬ ‫ه‬ ‫‪ .‬ع ت يف ل ل تس‬ ‫ما‬ ‫‪ Parameters‬هي ل‬
‫ل ي (‪)Actual Parameters‬‬ ‫ما‬ ‫بل‬ ‫س ع ء ل له تس‬ ‫‪ )Parameters‬ع‬

‫‪:‬‬ ‫م‬

‫ع ل ص ‪Alzaim Alazhari University‬‬ ‫ب‬ ‫ل ل ت‬ ‫اتح ل س ئط ه‬ ‫ل ا ت ي قي‬

‫اش ا الدوا ‪:‬‬

‫س ئط ا ت ي قي‬ ‫ل اتخ‬ ‫‪‬‬


‫س ئط ا ت ي قي‬ ‫ل تخ‬ ‫‪‬‬
‫س ئط ت ي قي‬ ‫ل تخ‬ ‫‪‬‬
‫س ئط ت ي قي‬ ‫ل اتخ‬ ‫‪‬‬

‫‪:‬‬ ‫ل‬ ‫ي ضح ش‬ ‫م‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪37‬‬
: ‫استدعاء الدوا‬

‫ك في ل ل ل لي‬ ‫يم س عء ل ل بس‬

Mohammed.aau@gmail.com Mohammed Mahmoud


38
‫م ‪:‬‬

‫من ل ن مج‬ ‫ل‬

‫النداء الذاتي‪:‬‬

‫ل ء ل تي‬ ‫‪n‬بس‬ ‫ل‬ ‫م‬ ‫بي‬ ‫ل ل ب س ع ء ن س ب س ‪ .‬ل ن مج ل لي ي‬ ‫ت‬ ‫ه‬


‫‪.‬‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪39‬‬
‫من ل ن مج‬ ‫ل‬

‫‪:‬‬ ‫ماح‬

‫صل‬ ‫م ين إي ف ل ء ل تي‪ ،‬ا س‬ ‫ج ش‬ ‫ل ض‬ ‫ل ء ل تي ي ب ان‬ ‫س‬ ‫‪ ‬ع‬


‫‪ ،‬ع ه ا ي قف ل ن مج عن ل ي ‪.‬‬ ‫ان ئي من ل‬ ‫ل‬ ‫ل ء‬
‫له‬ ‫ت قف ل ء ‪ .‬ل ن أف ل س‬ ‫ش‬ ‫ل ك من ج‬ ‫ل ء ل تي ي ب اح‬ ‫س‬ ‫‪ ‬ع‬
‫في ل ي يس ك ك أك من ت ي ن س‬ ‫م ًأ‬ ‫أ ت ي ل ن مج ب ل ء ل تي يس غ‬ ‫ب لح‬
‫‪.‬‬ ‫لح‬ ‫ل ن مج ب س‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪40‬‬
‫تحميل الدوا بشكل ائد ‪:‬‬

‫يم ل ي‬ ‫ك من ل تح ل ن س اسم في ن س ل‬ ‫ه‬ ‫ب ل ئ ع م ت‬ ‫ت م ع ي تح يل ل‬


‫ن ع‬ ‫ل ي تح‬ ‫ما‬ ‫ل‬ ‫من خا ع‬ ‫ل‬ ‫بين ه‬

‫‪:‬‬ ‫م‬

‫من ل ن مج‬ ‫ل‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪41‬‬
‫الفصل الخامس ‪ :‬البرمجة بالكائنا‬

‫البرمجة بالكائنا ‪:‬‬


‫‪ Object Oriented Programming Languages‬ت‬ ‫بل ئ‬ ‫ل م‬ ‫لغ‬ ‫لغ ج ف من أش‬ ‫ت‬
‫عن ك ئن ‪ object‬له ص‬ ‫ل ين ه ع‬ ‫في ل‬ ‫أ م ض‬ ‫م أ أ كل ف‬ ‫ع‬ ‫بل ئ‬ ‫ل م‬
‫‪.‬‬ ‫في ل‬ ‫أخ‬ ‫مع ل ئ‬ ‫ي‬ ‫ي عل عن‬ ‫ب في ل‬ ‫‪ behavior‬ي‬ ‫‪ properties‬س‬
‫ل ي ا تس ح ل ئ‬ ‫ل ص‬ ‫ص ت‬ ‫ع‬ ‫ل ي تح‬ ‫ع من ل ئ‬ ‫ه م‬ ‫أ ل‬ ‫م‬ ‫ع‬ ‫ت‬
‫هي ل‬ ‫س‬ ‫مح‬ ‫ل ضب س‬ ‫ت عل مع ب‬ ‫ل ئ‬ ‫لي ‪ .‬ه‬ ‫بل ص‬ ‫أخ‬
‫ل ص ب ل ئن‪.‬‬

‫‪ methods‬ت ف م‬ ‫‪attributes‬‬ ‫بي ن‬ ‫ع‬ ‫عن هي ل ب م ي يح‬ ‫ف ‪ class‬ه ع‬ ‫ل‬


‫عمه ل ئ‬ ‫لـ ‪ class‬ي ل ق ل ً ت‬ ‫ع ت غيل ل ن مج‪ .‬ه ي ي أ‬ ‫ع يه ل ئ‬ ‫س‬ ‫ل ل ل‬
‫ف‪ .‬ي ن أ‬ ‫ل‬ ‫من ه‬ ‫ع من ل ئ‬ ‫ح ثم ش‬ ‫فم‬ ‫يم ل‬ ‫في ل ن مج‪ ،‬أ أنه ي م ت‬
‫ك ي مل م ه‪ .‬أ لغ ج ف ا تس ح‬ ‫خل ل ل ل ئيسي ‪ main‬أ ب خل ك ئن آخ‬ ‫يم ن ء ل ئ‬
‫ب ي من ق ل‬ ‫ت يف ‪ class‬ل ل ب ن مج ق‬ ‫من لا‬ ‫‪ ، class‬ك‬ ‫ع‬ ‫ح‬ ‫ب ي أ ب ن مج ا‬
‫ل ي‪.‬‬ ‫ل ل ل ئيسي ‪ main‬ل ي ي أ م‬ ‫ل‬ ‫ل ي سي ‪ ،‬أم ك لك ب ل س‬ ‫ي‬ ‫مه ب ل‬ ‫غم أن لم نس‬
‫‪.‬‬ ‫ل مل م‬ ‫ع من ل ئ‬ ‫مه اش‬ ‫ف كي ي س‬ ‫ل‬ ‫في ي ي م‬

‫مثال‪:‬‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪42‬‬
‫الخرج من البرن مج‬

‫عض بي ني احد من الن ع ‪ String‬دال لطب ع‬ ‫التي تحت ى ع‬ ‫يعرف هذا البرن مج ال ئ ‪student‬‬
‫هذا ااس‬

‫الك م‬ ‫‪ std‬ت‬ ‫‪ student‬يحمل ااس‬ ‫‪ main‬في السطر رق ‪ 11‬قمن ب نش ء ك ئن من ال ئ‬ ‫في الدال‬


‫المحج زة ‪ new‬بحجز م قع جديد ب لذاكرة ب لحج الذ يحت جه الك ئن لتخزين بي ن ته د اله‪ ،‬يش ر ل ذا‬
‫الم قع في الذاكرة ب س الك ئن لنستطيع التع مل مع هذا الم قع فيم بعد‪ .‬ب ستخدا اس الك ئن متب ع ً بن ط‬
‫د ال‪ ،‬في السطر رق ‪ 12‬ضعن قيم في المتغير ‪name‬‬ ‫الك ئن من بي ن‬ ‫نستطيع ال ص ل إل محت ي‬
‫قمن بت يذ الدال ‪ printName‬ل ك ئن ‪. std‬‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪43‬‬
‫محددا الوصو ‪:‬‬
‫‪ Public‬عندم يت ااعان عن محدد ال ص ل ع ف ن هذا العض يمكن ال ص ل اليه من جميع ال ئ‬ ‫‪‬‬
‫ااخرى‬
‫‪ Private‬عندم يعن عن محدد ال ص ل خ ص ف ن هذا العض يستخد داخل ال ئ ف ط اتستطيع ال ئ‬ ‫‪‬‬
‫ااخرى استخدامه‬
‫المشت ف ط‬ ‫ال ئ‬ ‫‪ Protected‬عندم يك ن محدد ال ص ل محمي ف ن هذا العض يستخد داخل ال ئ‬ ‫‪‬‬

‫المشيدا ‪: Constructor‬‬
‫‪ .1‬هي دال تحمل ن س اس ال ئ‬
‫‪ .4‬يت تن يذه ت ئي عند انش ء ك ئن من ال ئ‬
‫التي نرغ في تن يذه ابتدائي ً لحظ إنش ء الك ئن قبل تع مل أ ج‬ ‫‪ .1‬تستخد هذه الدال إجراء العم ي‬
‫مع هذا الك ئن‬
‫‪. void‬‬ ‫‪ .2‬يمكن ل مشيدا ان تحمل س ئط لكن ا ترجع ا قيم حت‬
‫الصيغ الع م لتعريف مشيد‬

‫مثال‪:‬‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪44‬‬
‫الخرج من البرن مج‬

‫الخ صي ‪ name‬الدال )(‪printname‬‬ ‫السط ر من ‪ 1‬ال ‪ 14‬ت تعريف ال ئ ‪ student‬الذى يحت ى ع‬


‫المشيد )(‪ student‬الذ يت فيه اعط ء قيمه ا لي ل خ صي ‪. name‬‬
‫في السطر ‪ 11‬ت انش ء ك ئن من ال ئ ‪ student‬ب اس ‪. std‬‬
‫ال س ئط في هذه الح ل يعرف‬ ‫اكثر من مشيد تخت ف في عدد ن ع بي ن‬ ‫يمكن ان تحت ى ال ئ ع‬
‫‪. constructor overloading‬‬ ‫ب لتحميل الزائد ل مشيدا‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪45‬‬
‫المؤشر ‪:this‬‬
‫د ال ب ستخدا الم شر ‪this‬‬ ‫يستطيع كل ‪ class‬أن يشير إل محت ي ته من متغيرا‬
‫المث ل الت لي ي ضح كيف استخدا الم شر ‪this‬‬

‫هذا الخرج من البرن مج‪:‬‬

‫‪ Circle‬ليس ل سيط‬ ‫ل ي ني ‪ radius‬في ل‬ ‫‪ this.raduis‬ت ي لي ل‬ ‫قم ‪ 15‬ل‬ ‫في لس‬


‫ي ‪. radius‬‬ ‫ل‬ ‫‪ radius‬ل‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪46‬‬
‫الفصل الساد ‪ :‬الو اثة وتعدد ااشكا‬

‫الو اثة‪:‬‬
‫ئص‬ ‫من خ‬ ‫‪ ،‬تس ح ب اس‬ ‫بل ئ‬ ‫ل م‬ ‫ل ي ت ف ه لغ‬ ‫ح من أهم ل ي‬ ‫ث‬ ‫ل‬ ‫ت‬
‫ئص‬ ‫ك ب تك ل‬ ‫ع‬ ‫مج ل‬ ‫ل‬ ‫ج ي ‪ ،‬بحيث ا ي‬ ‫يف ف‬ ‫يف ل‬ ‫ل‬ ‫مس‬ ‫ل‬
‫ل‬ ‫تس‬ ‫ئص ف أخ‬ ‫ف مي خ‬ ‫‪.‬ع م ت‬ ‫ج ي ت بط بين ل ئ‬ ‫ث ني ‪ ،‬ل ل عاق‬ ‫ل‬
‫أ أ ف م ف‬ ‫ل‬ ‫ث ب أ ‪ . supercalss‬ي ن أ ت‬ ‫ل‬ ‫ل‬ ‫ث ب ابن ‪ subclass‬تس‬ ‫ل‬
‫ل اق‬ ‫ف م ي ف م ف س ي م تح ي ه‬ ‫ليت ض ل سب ‪ .‬ل يت‬ ‫تخ ش ل ل‬ ‫سب‬
‫ل ‪،‬‬ ‫ليس ث ه‬ ‫سم ل‬ ‫يي‬ ‫م ش‬ ‫سم ل‬ ‫ب‬ ‫‪ extends‬ل ي ت‬ ‫لح‬ ‫بل‬

‫الشكل الع لعم ي ال راث ‪:‬‬

‫الشكل اعاه ي ضح عم ي ال راث‬

‫في ال راث ‪:‬‬ ‫محد ا ال ص‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪47‬‬
‫من داخل‬ ‫الد ال المعرف ‪ public‬من داخل ال ئ المعرف ب‬ ‫‪ : public .1‬يمكن ال ص ل ل متغيرا‬
‫ال ئ ‪.‬‬ ‫المعرف من ن ع ت‬ ‫ب ستخدا أسم ء الك ئن‬ ‫ال ئ‬ ‫التي ترث ت‬ ‫ال ئ‬
‫الد ال المعرف ‪ private‬من داخل ال ئ المعرف ب ‪ ،‬لكن ا‬ ‫‪ : private .4‬يمكن ال ص ل ل متغيرا‬
‫المعرف من ن ع‬ ‫ا ب ستخدا أسم ء الك ئن‬ ‫ال ئ‬ ‫التي ترث ت‬ ‫يمكن ال ص ل إلي من داخل ال ئ‬
‫ال ئ ‪ ،‬أ أن خ ص ب ل ئ ف ط‪.‬‬
‫من‬ ‫الد ال المعرف ‪ protected‬من داخل ال ئ المعرف ب‬ ‫‪ : protected .1‬يمكن ال ص ل ل متغيرا‬
‫المعرف من ن ع‬ ‫ال ئ ‪ ،‬لكن ا يمكن ال ص ل إلي ب ستخدا أسم ء الك ئن‬ ‫التي ترث ت‬ ‫داخل ال ئ‬
‫التي ترث من ‪.‬‬ ‫ال ئ‬ ‫ال ئ ‪ ،‬أ أن خ ص ب ل ئ‬

‫مثال‪:‬‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪48‬‬
‫الخرج من البرنامج‬

Mohammed.aau@gmail.com Mohammed Mahmoud


49
‫ل ل )(‪ set‬م ف في‬ ‫ل غم من‬ ‫‪ person‬ناحظ ع‬ ‫ل‬ ‫‪ student‬ت‬ ‫لس بق ل‬ ‫في ل‬
‫‪student‬‬ ‫لك ا ل‬ ‫‪student‬‬ ‫ل ئن ‪ std‬ل بع ل‬ ‫م ب س‬ ‫س‬ ‫‪ person‬ا ن س‬ ‫ل‬
‫‪. person‬‬ ‫ل‬ ‫ثت م غي‬

‫التجريد ‪:Abstraction‬‬

‫‪ super class‬ا يمكن انش ء ك ئن من ال ئ المجردة ان ال ئ المجردة تحت ى ع‬ ‫ال ئ مجردة هي فئ ا‬


‫‪ . incomplete‬لعمل فئ مجردة نستخد الك م المحج زة ‪abstract‬‬ ‫احدة غير مكتم‬ ‫دال‬ ‫ااقل ع‬
‫احدة مجردة ‪ abstract‬يت عمل تحميل ‪ override‬ع ي ‪ .‬تعني ‪override‬‬ ‫دال‬ ‫ااقل ع‬ ‫تحت ى ع‬
‫التي ترث ال ئ المجردة ‪.‬‬ ‫امك ني تعديل الدال في ال يئ‬

‫التجريد ‪-:‬‬ ‫المث ل الت لي ي ضح م‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪50‬‬
:‫الخرج من البرن مج‬

Mohammed.aau@gmail.com Mohammed Mahmoud


51
‫الفئا والدوا الثابتة‪:‬‬

‫ل‬ ‫ل م ف ‪ static‬هي ث ب‬ ‫‪ final method‬ا ي ن ع ل ‪ override‬ع ي‬ ‫ل ب‬ ‫ل‬


‫ثب ‪.‬‬ ‫م ف ‪ private‬هي ي‬

‫ثب‬ ‫ل ب ت‬ ‫خل ل‬ ‫ل م ف‬ ‫‪superclass‬‬ ‫ف‬ ‫ت‬ ‫ل ب ‪ final class‬ا ي ن‬ ‫ل‬


‫‪.‬‬

‫الواجها ‪:‬‬

‫أ ت‬ ‫ث ‪ ، single inheritance languages‬ت ي نه ي ن ل‬ ‫ل‬ ‫حي‬ ‫لغ ج ف من ل غ‬ ‫ت‬


‫صاحي ‪،‬‬ ‫تح ي عاق‬ ‫ل ئ‬ ‫س ل‬ ‫ل‬ ‫ه‬ ‫أك ‪ .‬من م ي‬ ‫ح ع‬ ‫ئص ف‬ ‫خ‬
‫ث ل‬ ‫ل‬ ‫‪ .‬ت عم ب ض ل غ‬ ‫ئص م ف في ع من ل‬ ‫ث خ‬ ‫ن من‬ ‫ل‬ ‫له عيب ه ع‬
‫من‬ ‫ل‬ ‫ه‬ ‫ح ‪ .‬مي‬ ‫من ف‬ ‫ئص أك‬ ‫خ‬ ‫أ ت‬ ‫‪ ، multiple inheritance‬في ي ن ل‬
‫تح ي صاحي ت ‪.‬‬ ‫ل ئ‬ ‫ص ب‬ ‫‪ ،‬عي‬ ‫من ل‬ ‫ئص ع أك‬ ‫من خ‬ ‫ث ه اس‬ ‫ل‬
‫‪ ، Interface‬ه هي ل ي ه في ت كي ه‬ ‫ل ج‬ ‫ث ل حي ب س‬ ‫ض ت لغ ج ف حا ل افي عيب ل‬
‫ف‬ ‫ئص ل‬ ‫أ تس ي من ل‬ ‫ج يع بي ن ته ث بت‪ .‬ي ن ل‬ ‫له خ لي من ل ي‬ ‫ل ‪ ،‬ا أ ج يع‬
‫ت ي ً ‪. implementation‬‬ ‫ث بل تس‬ ‫ب ‪ interfaces‬ل ن ا ي ق ع ي‬

‫‪:‬‬ ‫كي ي استخدا ال ئ ل ذه ال اج‬ ‫المث ل الت لي ي ضح تعريف اج‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪52‬‬
‫الخرج من البرن مج‪:‬‬

‫ل‬ ‫‪ Interface‬ب س‬ ‫ل‬ ‫ي‬ ‫ب‬ ‫لي ت‬ ‫‪Operations‬‬ ‫ل ن مج ت يف ل ج‬ ‫في ه‬


‫ب ل ج ‪ ،‬حيث‬ ‫ل ج‬ ‫يق ت يف ج يع ل‬ ‫عن‬ ‫اس‬ ‫ه‬ ‫‪ . implements‬ي‬ ‫لح‬
‫ل ن مج‪.‬‬ ‫في ت ج‬ ‫خ‬ ‫ل ح‬ ‫ب في ل ج‬ ‫ل ج‬ ‫ي‬ ‫ب س ل‬ ‫ل م‬ ‫ع ت يف أ‬ ‫ي‬
‫م ‪ ،‬ل ن اب من ج ه‬ ‫ح ج اس‬ ‫لم ي ن ه‬ ‫ثم ت ك خ لي‬ ‫خل ل‬ ‫ي ن ك ب ت يس ل ل‬
‫خل‬ ‫ك ئن تم ن‬ ‫م ب س‬ ‫من ثم س‬ ‫ئ‬ ‫ثم ك ب‬ ‫أ بع خل ل‬ ‫ب ل ‪ .‬تم ت يف ل‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪53‬‬
‫ل بين أس ئ في ت يس ل‬ ‫ل ح ‪ ،‬ي‬ ‫بل‬ ‫من ل ج‬ ‫ع‬ ‫ل ل ل ئيسي ‪ .‬ي ن ت يف أ‬
‫ل يغ ل لي ت ضح لك ‪:‬‬ ‫ل ص‬ ‫ب س‬

‫استخدام داخل ال ئ فحس ‪ ،‬بل تستخد‬ ‫تعريف أسم ء الد ال الث اب‬ ‫ع‬ ‫ال اج‬ ‫ا ي تصر م‬
‫تمنعه من‬ ‫بين الك ئن مستخد هذا الك ئن‪ ،‬فتحدد له الجزء المصرح له ب ستخدامه من الك ئن‪،‬‬ ‫ك اج‬
‫سيط بين‬ ‫أ‬ ‫ب ذا ااس ‪ ،‬أن تعمل ك اج‬ ‫الك ئن‪ .‬ل ذا السب سمي ال اج‬ ‫ال ص ل إل ب ي محت ي‬
‫الك ئن مستخدمه‪ .‬المث ل الت لي ي ضح ذل ‪-:‬‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪54‬‬
:‫الخرج من البرن مج‬

Mohammed.aau@gmail.com Mohammed Mahmoud


55
‫ي م ي ‪ .‬تح‬ ‫ب‬ ‫ً ي مل مع ل ي ن‬ ‫مًم‬ ‫مس‬ ‫ت ل كل م‬ ‫في هذا البرن مج تع يف ج‬
‫م ‪ .‬ل ي في‬ ‫لس‬ ‫ل ي ي مل م‬ ‫ل لب ض ف ل ج يع ل‬ ‫بي ن‬ ‫‪ StudentData‬ع‬ ‫ل‬
‫يف‬ ‫ب‬ ‫سم ل ئن ‪ ، std‬ب اً عن لك ق‬ ‫يق س‬ ‫عن‬ ‫م ش‬ ‫ل ن مج ه ع ن ء ل‬ ‫ه‬
‫ل ي ن ‪ .‬ي مل‬ ‫ع‬ ‫يح‬ ‫ل ئن ل‬ ‫ه ت ي ل‬ ‫ل ج ين‪ ،‬ثم ج‬ ‫م ش ين ‪ references‬من أن‬
‫م ‪،‬‬ ‫ل‬ ‫خ‬ ‫ع ف ط‪ ،‬ل لك ا يس يع ن ء ل‬ ‫‪ Student‬حسب ت ي ه مع ل ل‬ ‫ل ش من ن‬
‫ق ءً‬ ‫فيس يع ل مل مع ل ج‬ ‫لب‪ .‬ب ل س لأس‬ ‫ل‬ ‫م‬ ‫ج‬ ‫ع‬ ‫أنه ي مل مع ل ي ن‬
‫اأست ذ تسمح له بذل ‪ ،‬ت د مح ل تن يذ أ شخص لدال ا ت فره له اج ته الخ ص‬ ‫ك ب ً ‪ ،‬أن اج‬
‫سري البي ن ‪ ،‬التحك في ال ص ل ل ذه البي ن ‪.‬‬ ‫به إل خط ب لبرن مج‪ ،‬مم يضمن خص صي‬

‫تعدد ااشكا ‪:‬‬

‫ث ‪،‬ت ف‬ ‫ل‬ ‫ن ع‬ ‫ل صي ل‬ ‫‪ ،‬ت يف ه‬ ‫ل ئ‬ ‫ب م‬ ‫خ صي ه م ج ً ت ف ه ب ض لغ‬ ‫ه‬


‫من‬ ‫ل صي ل مل مع ك ئ‬ ‫يق ه‬ ‫‪ . Polymorphism‬نس يع عن‬ ‫أش‬ ‫ل صي ب‬ ‫ه‬
‫ك بي م‬ ‫ل‬ ‫أ ل ج‬ ‫ل‬ ‫ل‬ ‫أ‬ ‫ل‬ ‫‪ reference‬ح م ف من ن‬ ‫بس‬ ‫م‬ ‫أن‬
‫ل ئن ب ل ح ي ‪.‬‬ ‫م ف ن‬ ‫ب‬

‫المث ل الت لي ي ضح تعدد ااشك ل ‪:‬‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪56‬‬
‫الخرج من البرن مج ‪:‬‬

‫‪ Circle‬ل بع ‪Square‬‬ ‫ن عين من ااشك ‪ Shapes‬ل ئ‬ ‫هذا المث ل ع‬ ‫يحت‬


‫م‬ ‫ل ل ‪ printArea‬ل س‬ ‫‪ Shapes‬من ث ّم ت ف كل ف مح ي‬ ‫ل ج‬ ‫ل‬ ‫ت ف كل من ه‬
‫ل سح ‪.‬‬ ‫ل ص في حس‬ ‫ي‬ ‫ناحظ أ ّ ل ل ف‬ ‫ل سح‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪57‬‬
‫‪ ، Shapes‬ه‬ ‫ل ج‬ ‫ف من ن‬ ‫في ل ل ل ئيسي ‪ ،‬حيث تم ت يف م‬ ‫أش‬ ‫خ صي ت‬ ‫ت‬
‫لنا‬ ‫أن‬ ‫من ه‬ ‫ف ‪ ، abstract‬أنّه ي ن ت يف م ش‬ ‫ل‬ ‫ل‬ ‫م ن بلس ل ج‬
‫من ن ع ‪.‬‬ ‫ي ن ت يف ك ئ‬

‫الحز ‪:Packeges‬‬
‫‪ package‬تح ظ في م ف يح ل‬ ‫يق في ح تس‬ ‫ليت يل س ل‬ ‫ل ج‬ ‫ع ل‬ ‫ت ضع م‬
‫‪ package‬في ب ي ل ف ل‬ ‫لح‬ ‫سم لـ ‪ package‬ل ي ت ي لي ف م ي ‪ .‬ي م ك ب ل‬
‫ث ّم ك ب سم لـ ‪ . package‬م ا ‪:‬‬ ‫ل‬ ‫ع‬ ‫يح‬

‫ف في لغ ج ف‬ ‫ف ‪ .‬ي ج ع ك ي من لـ ‪ packages‬ل‬ ‫ل‬ ‫ي‬ ‫بل‬ ‫أ ل ج‬ ‫ي ي لك ت يف ل‬


‫أس سي‬ ‫ل‬ ‫ع‬ ‫‪ java.lang‬يح‬ ‫ل ج‬ ‫لح ج ‪ .‬من ه‬ ‫ج ت ع‬ ‫مج ب ت‬ ‫ليس ين ل‬
‫لح ج ل ب‬ ‫خل أ ب ن مج ج ف‬ ‫ي‬ ‫‪ ، Math‬ل لك ي م ت‬ ‫‪Object‬‬ ‫في ج ف م ل ‪System‬‬
‫م‬ ‫ن من س‬ ‫ص يح ل‬ ‫في ل ن مج ب‬ ‫ي‬ ‫في ب ت‬ ‫ص يح ‪ .‬أم لـ ‪ packages‬أخ‬ ‫ع‬
‫لك ك اتي ‪:‬‬ ‫‪.‬‬

‫م ي في م‬ ‫ج‬ ‫ين ف أ‬ ‫لـ ‪ package‬في ل ن مج‪ ،‬أم ل‬ ‫ين ج يع مح ي‬ ‫ت‬ ‫عام * ت‬


‫‪.‬‬ ‫ك ب س‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪58‬‬
‫الفصل السابع‪ :‬ااستثناءا والملفا‬

‫ااستثناءا ‪:‬‬
‫أث ء ت ي‬ ‫ل غ ب ل ي ق تح‬ ‫غي‬ ‫ب ض لح ا‬ ‫‪،‬ه‬ ‫حس‬ ‫ج‬ ‫ع ت ي ب ن مج م ين ع‬
‫لح ا ع م‬ ‫ت ي ل ن مج‪ .‬ت ف ه‬ ‫ن‬ ‫ن ئج غي صحيح أ ل‬ ‫ع‬ ‫لح‬ ‫ل‬ ‫ل ن مج ت‬
‫من‬ ‫‪ . exceptions‬ت سم اس ء‬ ‫ب خ ء من ل ي ‪ run time errors‬في لغ ج ف ب اس ء‬
‫ل ثاث أقس ‪:‬‬ ‫ح ث‬ ‫حيث أس‬

‫خ جي ‪:‬‬ ‫أس‬ ‫أ‪ -‬س ء‬


‫آخ ‪ .‬م‬ ‫ل غيل أ ج‬ ‫ب ا عاق له ب ل ن مج ن سه‪ ،‬بل ب ن مج آخ أ ن‬
‫بس ٍ‬ ‫تح‬ ‫هي أس‬
‫لا م ل غيل‬ ‫ل ك‬ ‫ل غيل ا يس يع ت في‬ ‫ت غيل ل ن مج‪ ،‬ل ن ن‬ ‫لس‬ ‫ل لك أ يح‬
‫أ‬ ‫أ غي ج ه لاس‬ ‫آخ ‪ ،‬ل ه م غ‬ ‫ل مفأ ج‬ ‫ل ن مج ل ص‬ ‫ل ن مج‪ .‬أ أ يح‬
‫مج ت م ً‪.‬‬ ‫من أخ ء ل نه خ ج ً عن ي ل‬ ‫ه ل‬ ‫بح‬ ‫ب ل‬ ‫س ب‪ .‬من ل‬
‫ت ق ب ب ل ن مج‪:‬‬ ‫أس‬ ‫‪ -‬س ء‬
‫صحيح‬ ‫في ل ن مج ل ي ت‬ ‫مج ن سه‪ ،‬حيث ا ي ه ل ب ض ل‬ ‫عن ل‬ ‫أخ ء ص‬ ‫ه‬
‫من أخ ء‬ ‫ه ل‬ ‫ل م كل أث ء ت ي ل ن مج‪ .‬من أم‬ ‫ت‬ ‫جم‪ ،‬ل‬ ‫ل‬ ‫عي‬ ‫لغ ي ً فا ي‬
‫ا ج له‪.‬‬ ‫لــ ‪ object‬ل‬ ‫م‬ ‫ت يف ‪ ، object‬ثم يح‬ ‫يف ‪reference‬‬ ‫مج ب‬ ‫ل‬ ‫أ ي‬
‫ل ن مج‪:‬‬ ‫ت قب س‬ ‫‪ -‬س ء‬
‫ل ن مج‪.‬‬ ‫لس‬ ‫ليي خ‬ ‫ي قبلين‬ ‫ه ل‬

‫معالجة ااستثناء‪:‬‬
‫أخ ء‬ ‫ه‬ ‫ل‬ ‫ل ائ ل‬ ‫ضت ل‬ ‫عن أخ ء‪،‬‬ ‫ص ت لغ ج ف ع ً من لــ ‪ classes‬ل ي ت‬
‫ه أا‬ ‫أس سي م‬ ‫ب لـ ‪ ، handling exception‬لغ‬ ‫ل‬ ‫‪.‬ت فه‬ ‫ل مل م‬ ‫ع ح ث‬
‫أخ ء‪.‬‬ ‫ي ل ن مج بح‬ ‫س‬ ‫ت ث صح‬
‫من أ ن‬ ‫لـ ‪ class‬عن خ‬ ‫ه‬ ‫‪ class‬س ه ‪ ، Exception‬ي‬ ‫‪ java.lang package‬ع‬ ‫تح‬
‫‪ ،‬جي‬ ‫ع ك ي من لـ ‪ classes‬ت فه لغ ج ف ل يل أخ ء ل‬ ‫أث ء ت ي ل ن مج‪ .‬ه‬ ‫يح‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪59‬‬
‫ل‬ ‫يق م ق‬ ‫أخ ء من ل ي عن‬ ‫ل‬ ‫ئص لـ ‪ . Exception class‬ت ف ج ف آلي ل‬ ‫خ‬ ‫ت‬
‫أخ ء في ح ح ث ‪.‬‬ ‫ب ل‬ ‫اس‬ ‫أث ء ت ي ه‬ ‫ل‬ ‫قع ح‬ ‫ل‬

‫اس ء ‪:‬‬ ‫ل يغ ل م ل م‬

‫بين ق سين ت أ ب ل‬ ‫مح‬ ‫في أث ء ل ي ب خل م‬ ‫خ‬ ‫ن قع ح‬ ‫ي م ضع أ ع‬


‫ب ل مل‬ ‫ل‬ ‫ت ي م ب خل ه‬ ‫ل ح ل )‪.‬ي‬ ‫بـ ‪( block try‬ك‬ ‫ل‬ ‫‪ ، try‬ت ف ه‬ ‫لح‬
‫‪exception‬‬ ‫ح‬ ‫‪ . exception‬أم‬ ‫ح‬ ‫ق ك ل ت ي ج يع ل‬ ‫‪ ،‬حيث ي‬ ‫ه ل غ‬
‫‪ try‬لي ل ل ح م ب ه ل‬ ‫عت ي م‬ ‫لـ ‪ exception‬ي‬ ‫‪ ،‬ف نه ي ج عن لك ت لي ‪ object‬من ن‬
‫أ ‪catch block‬‬ ‫لـ ‪ exception‬ل ي تم ت لي ه ‪ ،‬ل لك ن‬ ‫ب‬ ‫ب إمس‬ ‫‪ catch‬ل‬ ‫م‬
‫ع م ي ل ‪ object‬من ن‬ ‫‪ exception‬مح‬ ‫‪ object‬من ن‬ ‫) تس ل بين ق سي‬ ‫ال‬ ‫(ك‬
‫‪ catch‬م س اس له م ل ه‪.‬‬ ‫‪ exception‬مح ‪ ،‬ف نه ي حث عن م‬
‫‪ try‬ح ‪.‬‬ ‫م بل م‬ ‫‪ exceptions‬من ع أن‬ ‫‪ catch‬ح اس‬ ‫من م‬ ‫ي ن أ ت ج أك‬
‫‪،‬‬ ‫ح‬ ‫ل‬ ‫ل‬ ‫ن‬ ‫‪ catch‬م س اس‬ ‫م‬ ‫خ ‪ ،‬ي م ل حث عن أ‬ ‫لح ل ع ح‬ ‫في ه‬
‫من ‪ catch block‬ح‬ ‫أك‬ ‫ه‬ ‫ك‬ ‫‪ catch‬ح‬ ‫من م‬ ‫ي م ت ي ه ل ح ه ا ي م ت ي أك‬
‫‪catch‬‬ ‫‪ ،‬ف نه ا ي م ت ي أ م‬ ‫‪ try‬ب‬ ‫تم ت ي م‬ ‫‪ .‬ناحظ نه‬ ‫ح‬ ‫ل‬ ‫ل‬ ‫اس‬ ‫مائ‬
‫ع‬ ‫ك نت ه‬ ‫خي ي يم ت ي‬ ‫‪ ، finally‬ف ي م‬ ‫أ خ ‪ .‬أم م‬ ‫ح‬ ‫نس ل‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪60‬‬
‫أخ ء‪ ،‬ف نه ي م ت ي‬ ‫ك ل ت ي ل ن مج‬ ‫‪ .‬أ أنه‬ ‫أ لم يح‬ ‫خ‬ ‫ن غب في ت ي ه في ح ح‬
‫عت ي ه يم‬ ‫‪ ، try‬ي‬ ‫أث ء ت ي م‬ ‫خ‬ ‫ح‬ ‫‪، finally‬‬ ‫‪ try‬ب ل مل ض ف ل م‬ ‫م‬
‫ب ل ن مج لم ت ج م‬ ‫خ‬ ‫ح‬ ‫‪. finally‬‬ ‫‪ -‬ثم ت ي م‬ ‫ج‬ ‫‪ catch‬ل س ‪-‬‬ ‫ت ي م‬
‫‪.‬‬ ‫ل‬ ‫ل ن مج ل ق ع ل ي‬ ‫‪.‬ي‬ ‫ل‬ ‫ل‬ ‫‪ catch‬م س ل‬
‫ص‬ ‫ت‬ ‫‪ ،‬جي‬ ‫‪ Exception class‬ه ‪ suber class‬ل يع لــ ‪ exceptions‬أخ‬ ‫ي‬
‫يح‬ ‫أ خ‬ ‫م ل‬ ‫ع‬ ‫ل‬ ‫(‪)Exception ex‬ـ‪ catch‬ل‬ ‫‪ . class exception‬ل‬ ‫م‬
‫ب ل ن مج ‪.‬‬

‫ااستثن ء‪:‬‬ ‫مث ل ع‬

‫الخرج من البرن مج ‪:‬‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪61‬‬
‫الملفا ‪:‬‬

‫البرمج في إمك ني‬ ‫لغ‬ ‫‪ .‬تكمن أهمي الم‬ ‫ال م في الح س‬ ‫هي إحدى س ئل تخزين البي ن‬ ‫الم‬
‫استخدام‬ ‫الخ ص ب لبرن مج ااحت ظ ب حت بعد تن يذ البرن مج‪ ،‬مع إمك ني ال ص ل إلي‬ ‫تخزين البي ن‬
‫عند إع دة تشغيل البرن مج أ ب اسط برامج أخرى ‪.‬‬

‫ت فر ج ف عدداً كبيراً من الـ ‪ classes‬الم ج دة في ‪ ، package java.io‬يمكن ب اسطت تعريف الم‬


‫الخ رج‬ ‫الداخ إل الم‬ ‫الم ج دة ب ‪ .‬تع مل ج ف البي ن‬ ‫قراءة البي ن‬ ‫في‬ ‫المخت‬ ‫كت ب البي ن‬
‫في اتج ه احد‪ ،‬من الم ف إل‬ ‫أن ‪ Stream‬من البي ن ‪ .‬الـ ‪ stream‬ه مجرى لتدف البي ن‬ ‫من ع‬
‫البرن مج خال عم ي ال راءة من الم ف‪ ،‬أ من البرن مج إل الم ف خال عم ي الكت ب ‪ .‬يمكن التع مل مع‬
‫بم في ذل الك ئن ‪.‬‬ ‫المخت‬ ‫ب ن اع ب ستخدا لغ ج ف ‪ ،‬حيث يمكن قراءة كت ب أن اع البي ن‬ ‫الم‬

‫يمكن تعريف م ف في لغ ج ف ب ستخدا ال ئ ‪ File‬استعداداً استخدامه في البرن مج‪ ،‬ذل بتحديد اس الم ف‬
‫عند إنش ء الك ئن‪.‬‬

‫التعامل مع الملفا في لغ الجافا‪:‬‬

‫‪ ‬نس ي من ل ل ‪ exists‬في ل ك من أ ل ف ل ح م ج‬
‫ل ل ‪getPath‬‬ ‫ل ف ل مل ب س‬ ‫مس‬ ‫ع‬ ‫‪ ‬ي ن لح‬
‫يق تح ي‬ ‫‪ FileInputStream‬عن‬ ‫في م ف م ين‪ ،‬ي م ت يف ك ئن من ن‬ ‫مح‬ ‫‪ ‬ل ء بي ن‬
‫لين‬ ‫ء مه س‬ ‫ب ح ل فل‬ ‫ل ي ن ‪ .‬يس ح ل ئن من ه ل‬ ‫ع‬ ‫يح‬ ‫سم ل ف ل‬
‫في ل ن مج‪ .‬ع ت يف ل ف‬
‫فيه‪.‬‬ ‫ن غب بح ظ ل ي ن‬ ‫‪ FileOutputStream‬مع تح ي سم ل ف ل‬ ‫ك ئن من ن‬ ‫‪ ‬يم س‬
‫‪،‬يم‬ ‫ل‬ ‫لم ي م تح ي ه‬ ‫لح‬ ‫ح ه في ل‬ ‫ل ف م ج ً مس ً‪ ،‬ي م ن‬ ‫لم ي ن ه‬
‫فيه ل ن مج‪.‬‬ ‫ل ج‬ ‫ح ظ ل ف في ل‬
‫ء ‪ ،‬ل ل ‪ write‬ل ب ‪ byte‬ح في‬ ‫ل‬ ‫ل ل ‪ read‬ل ء ‪ byte‬ح من ل ف ل‬ ‫‪ ‬تس‬
‫ل ي‪.‬‬ ‫ل لي ي ضح ه‬ ‫ب‪ .‬ل‬ ‫ل‬ ‫ل ف ل‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪62‬‬
‫ل ن مج ب ء ل ي ن‬ ‫ح ل ف ‪ welcome.java‬ج ه ً لي‬ ‫في ه ل ن مج ع ت يف ل غي ‪ fi‬ي‬
‫ل ف ‪ byte‬ت‬ ‫ل ل ‪ read‬ل ي ي ف ه ‪ . FileInputStream class‬ت م ق ء مح ي‬ ‫مه بس‬
‫ب ل ف ‪ welcome.txt‬ت أ ل ء من ل ف من ب ي ه‪ ،‬ي ل م ش‬ ‫لي‬ ‫ين ه‬ ‫آخ ب ل غي ‪ g‬ثم ت‬
‫ح‬ ‫‪ -1‬ل قف حي‬ ‫ي ل ل ف ل ن ي ه‪ ،‬ع ه ت ي ل ل ‪ read‬ل ي‬ ‫ل ء أث ء ع ي ل ء ح‬
‫ل ل ‪ . close‬ي ج عن‬ ‫من ل مل مع أ م ف‪ ،‬ي ب أ ي م غاقه ب س‬ ‫ل‬ ‫ل ء ‪ . while‬ب‬
‫ل ف ‪ welcome.java‬في ل ف ‪.welcome.txt‬‬ ‫ت ي ه ل ن مج نسخ مح ي‬

‫بس‬ ‫من ل‬ ‫‪ ،‬م ل م ني ق ء ل ئ‬ ‫مل مع ل‬ ‫ل‬ ‫ت ف لغ ج ف ل ي من ل‬


‫‪ . ObjectOutputStream‬ل مل مع‬ ‫بس‬ ‫في ل‬ ‫‪ ، ObjectInputStream‬ح ظ ل ئ‬
‫ئي ‪ random access files‬غي ه ‪.‬‬ ‫ل‬ ‫ل ص‬ ‫ل‬

‫البرمجة المتعدد ‪:Multi threads‬‬

‫الت از مع برامج أخرى ب لـ ‪ process‬أ ‪ ، thread‬كم تعرف برمج‬ ‫تعرف البرامج التي يت تن يذه ع‬
‫هذا الن ع من البرامج ب لبرمج المتعددة ‪ multi-programming‬أ ‪ . multi-threading‬تدع لغ ج ف‬
‫هذا الن ع من البرمج ‪.‬‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪63‬‬
‫د رة حي ة ال ‪:Thread‬‬

‫الشكل يوضح دورة حياة ال ‪Thread‬‬

‫‪ ،‬لك ي ل في‬ ‫ن‬ ‫م‬ ‫حي لـ ‪ thread‬ب ع ه ل ل‪ ،‬حيث ي م تح ي ل‬ ‫‪ : Born .1‬ت أ‬


‫ن ئ في ل ن مج‪.‬‬ ‫ت ي‬
‫ل ل ‪ ، start‬حيث ت ل ل ح ل ‪ ، ready‬هي‬ ‫ب س‬ ‫ن ء لـ ‪ thread‬ي أ ت غي‬ ‫‪ : Ready .4‬ب‬
‫ح‬ ‫ت‬ ‫لج‪ ،‬ي أ ت غي‬ ‫ه ت ف ل‬ ‫م جء‬ ‫ل ‪ ،‬م‬ ‫ه في ل‬ ‫عن ل مج ل ي ت‬ ‫ت‬
‫في ح ل ‪. running‬‬
‫لج‪ ،‬ت‬ ‫ل‬ ‫ت ي ت قي ل ي ب س‬ ‫ت‬ ‫لـ ‪ thread‬في ح ل ‪ running‬حي‬ ‫‪ : Running .1‬ت‬
‫حي‬ ‫‪ ،‬ت‬ ‫لج ل ي ‪ thread‬أخ‬ ‫م ي مح ‪ ،‬ب ه ي ل ل‬ ‫لح ل ل‬ ‫لـ ‪ thread‬في ه‬
‫ل ل‬ ‫بس‬ ‫لج لـ ‪ thread‬مح‬ ‫ق عت ي ل‬ ‫لـ ‪ thread‬ل ح ل ‪ . ready‬ي ن أ ن‬ ‫ه‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪64‬‬
‫في ح ل‬ ‫م ج‬ ‫لج ب ي ‪ thread‬أخ‬ ‫ل‬ ‫لـ ‪ thread‬ل ح ل ‪ ، ready‬ي‬ ‫‪ ، yield‬ل ي تح‬
‫‪. ready‬‬
‫أ ل ج‬ ‫خ‬ ‫خ‬ ‫لك بس ب ع ي‬ ‫‪،‬‬ ‫ي م ي ف ت ي لـ ‪ thread‬ل‬ ‫‪ : Blocked .2‬ي ن‬
‫من ع ي‬ ‫ل‬ ‫لـ ‪ thread‬ل ح ل ‪ ready‬ب‬ ‫ف اح ‪ .‬ت‬ ‫‪ synchronized code‬ك س‬
‫ف ‪. synchronized‬‬ ‫ل‬ ‫ل‬ ‫يح ب خ‬ ‫أ ل‬ ‫إخ‬ ‫إخ‬
‫ل ل ‪ ، sleep‬ل ي‬ ‫بس‬ ‫م ي مح‬ ‫ي م ق ع ت ي ‪ thread‬م ي ل‬ ‫‪ : Sleeping .0‬ي ن‬
‫لــ ‪ thread‬ل ح ل ‪ ready‬ع ن ي‬ ‫ل ي خال ‪ .‬ت‬ ‫ل م ي ل ي ن غب ب ن‬ ‫ل‬ ‫نح ل‬
‫‪.‬‬ ‫تك ل‬
‫ل ل ‪wait‬‬ ‫غي مح ‪ .‬ي ن لك ب س‬ ‫ي قف ت ي ‪ thread‬م ي ل‬ ‫‪ : Waiting .6‬ق ن غب ب‬
‫يق ل ل ‪notify‬‬ ‫عن‬ ‫ب غي‬ ‫‪ thread‬أخ‬ ‫ت‬ ‫لـ ‪ thread‬في ح ل ت قف عن ل ي ح‬ ‫‪ ،‬ت‬
‫ل ل ‪ notifyAll‬ل ل‬ ‫ل ي ت ل ‪ thread‬ح من ح ل ‪ waiting‬ل ح ل ‪ ، ready‬أ ب س‬
‫لح ل ‪. ready‬‬ ‫في لح ل ‪ waiting‬ل‬ ‫ج يع لـ ‪ treads‬ل ج‬
‫ل ل آخ‬ ‫م ‪،‬ف‬ ‫أك ت ل‬ ‫ج‬ ‫ق أ‬ ‫ن ء ت ي لـ ‪ thread‬ن ئي ‪ ،‬ت‬ ‫‪ : Dead .1‬ع‬
‫ي قف ت ي ه ‪.‬‬ ‫حي ت‬ ‫ح ل في‬

‫للبرمج المتعددة ثاث حاا ‪:‬‬

‫قرص مدمج‬ ‫يت تن يذه ب لك مل في ن س ال ق ‪ ،‬مث ل لذل تشغيل محت ي‬ ‫‪ .1‬أن تك ن البرامج مست‬
‫‪ CD‬أثن ء تص ح اإنترن ‪.‬‬
‫تن يذه ‪،‬‬ ‫ترتي‬ ‫قي د ع‬ ‫بعض البعض‪ .‬أ أن تك ن هن‬ ‫‪ .4‬أن تك ن البرامج مرتبط أ معتمدة ع‬
‫من برن مج معين هي المدخا لبرن مج ث ني‪ .‬في هذه الح ل يج الت كد من انت ء تن يذ‬ ‫مثا المخرج‬
‫البرن مج اأ ل قبل بداي تن يذ البرن مج الث ني‪.‬‬
‫‪ .1‬أن تك ن البرامج عب رة عن نسخ متعددة من ن س البرن مج‪ ،‬مثا عدة ‪ threads‬تبحث عن رق معين‬
‫م ج د بين م ي ن رق ‪.‬‬

‫أولوي تنفيذ الـ ‪Threads‬‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪65‬‬
‫فم‬ ‫ت ي أح ه أهم من آخ ‪ .‬م ا ك‬ ‫ي ن أ ت ف لــ ‪ threads‬من حيث أ ل ي ل ي ‪ ،‬ك ي‬
‫ب ج‬ ‫لس‬ ‫ي ن أ ي ع أج ه ب ن م ً آخ إخ‬ ‫في م ف ه أم‬ ‫لي‬ ‫لي س‬
‫ل ك‬ ‫‪ garbage collector‬ل ح ي خ ن‬ ‫ت غيل ب ن مج ج مع ل ي‬ ‫ص م ه‪ .‬بي‬ ‫ل‬ ‫ج ء لا‬
‫أ ‪ thread‬من ن‬ ‫‪ .‬ل لك ن‬ ‫ي ع أج ه ب ن مج ل س‬ ‫أم م‬ ‫ل مج ا ي‬ ‫غي ل س غ ب س‬
‫ل ي ‪ ،‬بي‬ ‫ل ي‬ ‫من ب مج ل س‬ ‫ل أ ل ي أع‬ ‫ل ج س‬ ‫ي‬ ‫ل‬ ‫ل ن مج أ‬
‫ل‬ ‫من ت ي ب م ه ت‬ ‫لس‬ ‫ل ن مج ل ني ل ي ي ن ت ج يل ت ي ه لحين ف‬ ‫‪ thread‬من ن‬
‫ع‬ ‫ك ه‬ ‫ل ل ‪. set Priority‬‬ ‫‪ .‬ي م تح ي أ ل ي لـ ‪ thread‬ب س‬ ‫أ ل ي أقل من ب مج ل س‬
‫ح‬ ‫أ ل ي أع‬ ‫لج ب ي لـ ‪thread‬‬ ‫ل‬ ‫ل ي‪،‬ي‬ ‫جه‬ ‫م‬ ‫من لــ ‪ threads‬ب ل ي‬
‫في أ ل ي ‪،‬‬ ‫من ‪ thread‬ت‬ ‫أك‬ ‫ه‬ ‫ك‬ ‫أ ل ي أقل‪.‬‬ ‫ت ي‪ ،‬ثم ي أ في ت ي لـ ‪thread‬‬
‫ت ي ه ج ي ي ل ل ـ ‪threads‬‬ ‫ك‬ ‫ك س ق ش حه‪ ،‬ب‬ ‫لج من ل ي ع ي ب ل س‬ ‫ي سم ل‬
‫هي( ‪) 5‬‬ ‫أ ل ي م‬ ‫أ ل ي (‪ ) 1‬هي أقل أ ل ي ل ــ ‪ thread‬في لغ ج ف ‪ ،‬أع‬ ‫أقل‪ .‬ت‬ ‫أ ل ي‬
‫‪garbage‬‬ ‫أ ل ي ع ي (‪ . )5,0‬ب ن مج ج مع ل ي‬ ‫لم ي م تح ي أ ل ي م ي ل ـ ‪ ، thread‬ت‬ ‫‪.‬‬
‫لج‪،‬‬ ‫ل‬ ‫ل‬ ‫ب ن مج ل س‬ ‫م ل ل ع م ا يح‬ ‫‪ ،‬أنه م‬ ‫‪ collector‬ه ‪ thread‬ل أ ل ي م‬
‫كي ي ت يف‬ ‫ت خي ه ‪ .‬في ي ي ب ن مج ي‬ ‫ليس ت ي‬ ‫ك ءت‬ ‫ي‬ ‫ي ه مس ع ب مج ل س‬ ‫ف‬
‫‪.‬‬ ‫ل‬ ‫س ك خا م حل حي ت‬ ‫‪ thread‬ب غ ج ف ‪ ،‬ماح‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪66‬‬
‫ي يه‬ ‫ي ‪ ، class thread‬ه ل‬ ‫لــ ‪ class‬ل‬ ‫عن ‪ ، thread‬ي ب أ ي‬ ‫ل ن مج ع‬ ‫ل يي‬
‫لج في بي ‪ .‬ي ج‬ ‫ت سم من ل‬ ‫ل ي آني ً مع ب مج أخ‬ ‫ًع‬ ‫هق‬ ‫ئص ل ي ت‬ ‫ج يع ل‬
‫ك سم ي ن‬ ‫‪ constructor‬يس ل ‪ string‬تس‬ ‫ع‬ ‫‪ class thread‬في ‪ ، package java.lang‬يح‬
‫‪.‬‬ ‫ك في ه ل‬ ‫ب‬ ‫ك نت م‬ ‫‪،‬خص‬ ‫يق بين لــ ‪ threads‬ل‬ ‫ل‬ ‫أ يس‬

‫به لـ ‪thread‬‬ ‫ل ل ‪ getName.‬ن ع كل م ن غب أ ت‬ ‫ل ه اسم في ب ب س‬ ‫ي ن ل ص‬


‫ت ت ئي ً ع ن ء ل ل ‪ . start‬ق ي ي ت ي ج يع‬ ‫ب خل ل ل ‪ ، run‬ل ي ي م ت ي ع‬ ‫ع ت غي‬
‫ب لـ ‪ thread‬ل‬ ‫س ب ً‪ ،‬ل ي ت‬ ‫لي‬ ‫ع ت ي ه بس ب أح أس‬ ‫ل ل ‪ run‬أ ق ي‬ ‫ع‬
‫ص ل ي ‪ .‬ع م يحين‬ ‫حجه ل‬ ‫ل ح ل ‪ ready‬ل‬ ‫ت‬ ‫م ي قل‬ ‫ل‬ ‫ل ح ل أخ‬ ‫ان‬
‫ل ي ‪ .‬ق ي قف‬ ‫ن عع‬ ‫ل‬ ‫ب ء من ل‬ ‫ت‬ ‫ل ‪ ،‬س صل ل ل ‪ run‬ت ي ع‬ ‫ه في ل‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪67‬‬
‫لـ ‪thread‬‬ ‫ب ن ي ت ي ت ك لـ ‪ . thread‬ت‬ ‫أ ل ي أع ‪ ،‬ل س‬ ‫‪thread‬‬ ‫ت ي ‪ run‬أي‬
‫س قف خاله‬ ‫ل من ل‬ ‫سم لــ ‪ thread‬ل ي‬ ‫‪ :Starting thread‬ي ي‬ ‫ع ع‬ ‫ب‬ ‫ل‬ ‫في ه‬
‫ئي تم ت لي ب س‬ ‫يق ن ء ل ل ‪ sleep‬ل من ع‬ ‫لح ل ‪ sleeping‬عن‬ ‫عن ل ي ‪ .‬ب ه ت ل ل‬
‫‪* Math.random‬‬ ‫ح ‪ .‬ل لك ي ج عن ل‬ ‫ئي ً بين ص‬ ‫ق ًع‬ ‫ل ل ‪ Math.random‬ل ي ت ل‬
‫ل ل ‪ sleep‬تس ل ع ً صحيح ً ي ل من ت قف ت ي لــ‬ ‫ئي بين ‪ . 15555 5‬أ‬ ‫‪ 15555‬ع ع‬
‫‪15‬‬ ‫ئي بين ‪5‬‬ ‫‪ thread‬عن ل ي ب ل ي ث ني ‪ ، millisecond‬ل ي قف ع ل لــ ‪ thread‬ل من ع‬
‫‪finished‬‬ ‫ع ل‬ ‫ب‬ ‫لــ ‪ thread‬ل ي ‪ ،‬ت‬ ‫‪ .‬ب أ ت‬ ‫ث ني ي ن خال ت ي ‪ threads‬أخ‬
‫ل ل ‪ main‬في ي م ت لي ثاث ‪ threads‬ب أس ء ‪first‬‬ ‫ل ن مج ع‬ ‫مع ت ضيح سم لــ ‪ . thread‬يح‬
‫ل ل ‪ run‬ب ي ت ي لـ‬ ‫ت ئي ب‬ ‫ب ي ل ل ‪ start‬ل ي ت‬ ‫لك ي م ت غي‬ ‫‪ . second, third ,‬ب‬
‫ت ي ه مس اً عن ب ي لــ ‪threads‬‬ ‫عن ‪ thread‬ي‬ ‫ل أ ل ل ‪ main‬هي ن س ع‬ ‫‪ . thread‬ن‬
‫‪ threads‬ي م ت ي ه آني ‪ .‬ب أ‬ ‫عن أ ب‬ ‫ح ل ن مج أعا ع‬ ‫لج‪ .‬ي‬ ‫من ل‬ ‫ع‬ ‫ت فس م‬
‫ل غي ‪sleepTime‬‬ ‫قي‬ ‫ن ء ل ي ع‬ ‫أ يس ل ل ي ‪ ،‬ي‬ ‫نس أ ل ي ‪،‬ي نأ م‬ ‫ل ي‬
‫ي م في ت غيل ل ن مج‪.‬‬ ‫من ت ي لــ ‪ threads‬كل م‬ ‫ل ل ‪ ، thread‬ي ف ت تيب‬

‫مخرجا البرنامج ‪:‬‬

‫عند التنفيذ مرة اخرى‪:‬‬

‫‪Mohammed.aau@gmail.com‬‬ ‫‪Mohammed Mahmoud‬‬


‫‪68‬‬
ً‫ث‬ ‫ل ن مج‬ ‫ ق ي‬، thread ‫ل حي ل ل ل ن مج‬ ‫ي‬ ‫ ليست هي ل‬class thread ‫ث من‬ ‫ل‬
class ‫ث من‬ thread ‫لــ‬ ‫قع غ ل أ ت‬ ‫ من ل‬، ‫ آخ‬class ‫ أ أ‬JApplet ‫ أ‬JFrame ‫أس س من‬
thread ‫ مع ت ح ل ص ل ـ‬thread ‫ح‬ ‫ي ه في‬ ‫ب‬ ‫ ي ن ل ن مج أ ي‬interface ‫ ه‬Runnable . ‫آخ‬
. ‫ ي ب ت ي‬run ‫ح هي‬ ‫ل‬ ‫ ع‬interface Runnable ‫ يح‬. ‫ آخ‬class ‫ئض‬ ‫خ‬ ‫أ ي‬

Mohammed.aau@gmail.com Mohammed Mahmoud


69
:‫المراجع‬

‫ح‬ ‫ل‬ ‫لس‬ ‫بغ ل ف سجم‬ ‫ل م‬ 


‫ي‬ ‫ل بي لس‬ ‫ي ل هج ل‬ ‫يم ت‬ ‫ل م ل‬ ‫لح سب س إ‬ ‫ ب م‬
Java How to Program 7th Edition 

Mohammed.aau@gmail.com Mohammed Mahmoud


70

You might also like