Professional Documents
Culture Documents
أساسيات البرمجة بلغة الجافا
أساسيات البرمجة بلغة الجافا
Fundamentals of
Programming in Java
ح حقوق اإلعداد حمفوظة2006 ،م.
جافا
Fundamentals of Programming in
Java
مدرس الربجمة كائنية التوجه ،OOPكلية العلوم واهلندسة -جامعة العلوم والتكنولوجيا -صنعاء
مدرس أسس لغات الربجمة - Essentials of Programming Languagesاجلامعة الوطنية -صنعاء
مؤسس ونائب مدير شركة Skytechللحلول الذكية وتكنولوجيا املعلومات
رواه الترمذي
اإلهداء
إىل والديت حفظها اهلل
إىل والدي رمحه اهلل
إىل زوجيت وابنيت ملك
إىل إخويت وأخوايت ،،،
الشكر والتقدير
أ .فيصل مسعود
أ .أمحد عبد العظيم
أ .عبد اهلل املصباحي
املالحق
امتحان هنائي منوذج (187 ....................................................... )1
امتحان هنائي منوذج (191 ....................................................... )2
• اسا ااتخدام ال ا اارق والتواب ا ا ا ا اااهكة وال ا اارق الريا ا ااية امل ا اامنة وبنا ااا ون ا ااوير
ال رق والتواب اخلاصة.
ا ا ا اارق Method- • قواعا ا ا ااد جما ا ا ااا الر يا ا ا ااة ،Scope-Rulesوالتحميا ا ا اال الكائا ا ا ااد ل
،Overloadingوااستدعا الذاني (ال ودية) .Recursion
يدددة املقدمد دة مدددك ولتحقيد د اد دد اد د ا الكتددداب قدددد اعتمددددنا علدددع األادددلوب وامل
قبددددل كتدددداب « »Java How to Program 5th ed.كمر ددددع أاااددد يف املواردددديع
الددده -حسدددب علم ددددا واألمثلدددة املقدمدددة نظدددرا ألنددده ميثدددل أقددددوى امل ددداا التعليميدددة يف
-باإلرددددا ة إىل االاددددتعانة بالعديددددد مددددك املرا ددددع العربيددددة واأل بيددددة إل ددددراء اددد املددددادة
العلمية.
ددددة كائ يددددة وقددددد أُعددددد ادد د ا الكتدددداب يف األاددددام كمقددددرر دراادد د يف مددددادة ال
التو ددده ) 1لطلبدددة مسدددتوى دددان يف قسدددم علدددوم اياادددوب واملعلوماتيدددة ،و لبدددة مسدددتوى
رابع يف قسم اهل داة اإللكرتونية.
ددددة كائ يددددة التو دددده ،خاصددددة وأن لغددددة والكتدددداب يقدددددم مدددددخالً أااادددديا إىل ال
ا ددددا قددددد ب يددددر أاااددددا كلغددددة كائ يددددة ،ونظددددرا للحا ددددة للتواددددع يف ادددد ا املورددددوع
واقتصددددار ادددد ا الكتدددداب علددددع «أساسا ااياغ الربجما ااة ب غا ااة جا ا ااا»؛ قددددد قم ددددا بإعددددداد
كتددددداب كخدددددر ميكددددددك اعتبدددددار اذدددددداء الثدددددان أو املكمدددددل هلددددد ا الكتددددداب بع ددددددوان:
«أساسياغ الربجمة كائنية التوجه باستخدام لغة جا ا».
مدددددك اددد د املدددددادة وأخدددددريا ،إن دددددا ن مدددددل أن يسدددددتفيد األخدددددوة الدارادددد واملدددد
العلمية ،وأن يتقبله اهلل خالصا لو ه الكريم وأن ي فع به كل الب علم ومعر ة.
واهلل مك وراء القصد ،،،
م .أمحد جرب
لغددددة Javaاددد مددددك اللغددددات ايديثددددة إذ أنت ت ددددا ددددركة Sun Microsystemsعددددام
.1995قامدددددددر دددددددركة صدددددددك باادددددددتمدام Javaيف العديدددددددد مدددددددك
تصددددبح Java املشددددروعات إلظ ددددار إمكانيات ددددا الكددددبرية ،ولكددددك
حمددددددا األنظددددددار أو مورددددددع االاتمددددددام إال بعددددددد ظ ددددددور املسددددددتعر
HotJavaقددددددد قامددددددر ددددددركة صددددددك بكتابددددددة HotJavaبسددددددرعة
إلظ دددددار دددددودة وقددددددرة Javaعلدددددع التعامدددددل مدددددع اإلنرتندددددر ولتورددددديح
در ددددة تعقيددددد التطبيقددددات الدددديت ميكددددك تطويراددددا .كددددان اإلصدددددار
Netscapeبال سدددددبة لل ظدددددام )Windowsادددددو أو متصدددددفح الثدددددان مدددددك Navigator
جتددددارع يدددددعم ،Java 1.0وتددددال بعددددد ذلددددك .Internet Explorerع دددددما ت ااددددتمدام
احدد دا كددددبريا .صددددممر لغددددة ا ددددا أااادد دا كدد د Javaعلددددع ددددبكة الويددددب حققددددر
تكددون مسددتقلة عددك حمدديا التشددغيل ،وقددد ع د ت عددك ذلددك ددركة Sunمببدددأ « write
تدددددوع علدددددع ذات االمتدددددداد class ترمدددددة ملفدددددات املصددددددر ذات االمتدددددداد javaيدددددىلدع إىل ملفدددددات خدددددر
الدددداعم لل ا دددا بتحميدددل تلدددك تعليمدددات دددفرة ا دددا البايتيدددة .ByteCodeومدددك دددم يقدددوم برندددام االادددتعرا
التعليمات وت في اا.
أع أندددده ع ددددد ترمددددة ال نددددام ي ددددت ملفددددات ددددفرة اذا ددددا البايتيددددة .ByteCodeإن املددددرور
دم ال ة أادا : علع كلة ا ا اال رتارية
ااس ااتقةلية ع اان ا ل ااة :ت تصدددميم JVMخاصدددة بكدددل ندددوع كمبيدددوترات علدددع حددددة •
ويددددل الشددددفرة البايتيددددة إىل ولكددددك اهلددددد األاااددد مددددك كددددل اددد ال سددد اددددو
فرة بلغة تلك اآللة اليت يعمل ال نام علي ا.
الذاكرة الرئيسية
التحقق من الشفرة البايتية املرحلة الرابعة
التحق مك صحة
الشفرة الث ائية وال
روط األم ية ق
. املطلوبة أم ال
.
.
تشدددغيل ال ندددام علي دددا
يددد ميكدددك معاملدددة
.
ال نددام علددع أندده مل د
ت في ع
بيئة عمل ا ا مثالية
قيددد أع مسددددتوى معقددددو مددددك ا مايا ااة :لقددددد أظ ددددرت اخلددد ة كددددم مددددك الصددددعب •
ايمايددددة للدد د ام .املددددا كددددان ت فيدد د ال نددددام يددددتم يف وحدددددة املعاذددددة املركايددددة
ميكددددك CPUيف الدد د ما احمللدد د ،ددددإن أع خطدد د يف ال ظددددام أو برنددددام االاددددتعرا
يبحددد عددددك ريقددددة للدددددخو إىل كلددددة املسددددتمدم .إن بددددرام أن يكشددددفه أع ددددم
ندددددام اذا دددددا يدددددتم ت فيددد د ردددددمك كلدددددة ا دددددا اذا دددددا ال ذلدددددك اددد د املروندددددة.
اال رتاردددددية الددددديت أنشددد د اا برندددددام االادددددتعرا .و يلدددددة دددددرتة ت فيددد د ال ندددددام ،
حاردددرا دائمدددا ليشدددر علدددع عمليدددة الت فيددد للت كدددد يكدددون برندددام االادددتعرا
ال نام ألع أذى. مك عدم تعر
حج اام ب اارام خمفا ا :إن بدددرام كلدددة ا دددا اال رتاردددية أصدددغر بكدددثري مدددك الد د ام •
التقليديدددددة .والسدددددبب ادددددو أن توابدددددع مكتبدددددات اذا دددددا الددددديت يسدددددتدعي ا برنا دددددك
وليسددددددر مرتبطددددددة بال نددددددام .يددددددىلدع اددددد ا إىل متوا دددددددة يف برنددددددام االاددددددتعرا
الوقدددددر املطلدددددوب فددد د دددددا ح دددددم بدددددرمي اذا دددددا إىل حدددددد كدددددبري فدددددي
ميددددل اذا ددددا وقددددر التحميددددل مددددك خددددال فدد د للتحميددددل .باإلرددددا ة إىل ذلددددك،
ميدددل الشدددفرات البايتيدددة الددديت تولدددداا ئدددة تدددا إلي دددا قدددا ال يدددتم األمدددور الددديت
ما إال ع دما وتا إلي ا ال نام ).
ي دددا لغدددة دددة حمدددررات وبدددرام تطبد د إن هلد د اللغدددة مثدددل بددداق لغدددات ال تلمي ي ي ي ي يي
Javaواددد م ت دددة مدددك قبدددل دددركة دددا )Developer Kit (JDK ا دددا وم
Visualمدددددك دددددركة رCofee ، Visualمدددددك مايكروادددددو صدددددكJ++ ،
ددد ن ا ددد ن التق يددددات املتميدددداة األخددددرى ،وددددد تطددددور دائددددم يف اذا ددددا .ت إصدددددار
Software Development Javaوالدديت تيددر يمددا بعددد )Development Toolkits (JDKs
ملحوظدددة مدددك بددددايات ا املتواردددعة كبيئدددة تعمدددل علدددع العديدددد مدددك نظدددم التشدددغيل وميكدددك
اادددددتمدام ا يف إنشددددداء الدددددد Appletsال مي يدددددات بدددددرام Javaالصدددددغرية الددددديت ميكدددددك
إدرا ددددا مبا ددددرة يف صددددفحات الويددددب) البسدددديطة والتطبيقددددات املسددددتقلة األوليددددة ،إىل أن
أصبحر اليوم نظام تشغيل متكامل نادت به ركة صك.
وبد د لك أصدددبحر لغدددة Javaاملقيدددام الفعلد د لتطدددوير بدددرام اإلنرتندددر الددديت يسدددتمدم ا
حاليددا أكثدددر مدددك ادددتة مليدددون مدد م يف أحنددداء العدددا .ظ دددرت ال سدددمة 1.1مدددك Javaبعدددد
األوىل بسددد وات قليلدددة وتلت دددا ال سدددمة 1.2والددديت ظ دددر مع دددا نظدددام التشدددغيل Javaوالددد ع
Javaاإلصدددددار الثددددان مددددك »Javaيف أواخددددر عددددام 2 ددددارع «Platform محددددل االاددددم الت
Javaوادد أحدددد وأ ةدددل نسدددمة سدددمة SE 6 .1998دددم تلت دددا ال سدددمة 1.3وصدددوالً إىل ال
ت في ية لد Java 2 Platformوذتلك ا اإلصدارة ال وعيات التالية:
:Javaتقدددم ل ددا ا د ال سددمة كددل مددا حنتا دده إلنشدداء )2 Standard Edition (J2SE •
برمي يدددددددات وتطبيقدددددددات قويدددددددة باادددددددتمدام اإلصددددددددار الثدددددددان مدددددددك Javaأل ددددددداة
الكمبيوتر الشمصية.
:Javaتسدددتمدم ادد ال سدددمة للتطبيقدددات امل مدددة علدددع )2 Enterprise Edition (J2EE •
مستوى الشركات.
:Javaصدددممر اد د ال سدددمة خصيصد دا الادددتمدام ا مدددع )2 Micro Edition (J2ME •
تددددوع علددددع الكددددثري مددددك تعتدددد Javaتق يددددة ديدددددة معقدددددة وقويددددة ،حيدددد أن ددددا
املفدددداايم الوا ددددات الدددديت تعمددددل معدددا مددددك أ ددددل إ دددداز امل ددددام .واددد ورد يمددددا يلددد بعددد
األاااية:
لغة :Java
ددددة الدددديت تعتمددددد علددددع الكائ ددددات وقددددد ورت ددددا إن لغددددة Javaاددد إحدددددى لغددددات ال
دددركة صدددك .وعلدددع الدددرغم مدددك أن هلد د اللغدددة د د ورا يف لغدددة ،C++إال أن دددا تعتد د إحددددى
لغددددة ،C++إن لغددددة Javaتعتمددددد اعتمددددادا لغدددات تطددددوير الدد د ام اذديدددددة .وعلددددع عكددد
يدددد تعمددددل علددددع أع بيئددددة تشددددغيل كليددددا علددددع ااددددتمدام الكائ ددددات وقددددد صددددممر
وت شئ برمي يات appletsوتطبيقات ومعاذات.
مكتبات الفئات (األصناف) اخلاصة بالـ:Java
موعدددة قياادددية مدددك تد د ت كدددل األنظمدددة الددديت تسدددتطيع التعامد دل مدددع لغدددة Javaمدددع
تددددوع علددددع قوالددددب الكائ ددددات امل شدد د ة مسددددبقًا ،أو الفئددددات ،والدددديت املكتبددددات الدددديت
مددددك Java ااددددتمدام ا يف إنشدددداء الدددد ام .ويقدددددم اإلصدددددار الثددددان ميكددددك للمدددد
موعددددة مددددك قوالددددب الكددددود امل شدد د ة مسددددبقًا والدددديت ميك ددددك كال الفئددددات وكدد د لك
اخلاصددددة صيصددد ا توادددديع ا) خلدمددددة األغددددرا ااددددتمدام ا كمددددا اددد أو ميك ددددك
بددددك .وتتددددا مكتبددددات الفئددددات القيااددددية اخلاصددددة بددددد Javaألع م مددددة ،مبددددا يف ذلددددك عمددددل
ال وا ددددد د وإنشددددددداء وا دددددددة االادددددددتمدام الرادددددددومية واملددددددددخالت/املمر ات واالتصدددددددا
الشددددبك ومددددا إىل ذلددددك .إن مكتبددددات الفئددددات املواددددعة اخلاصددددة بددددد Javaتسددددمع أحياندد دا
ددددددات Java دددددددد وا ،Javaألن ددددددا Application Programming Interface )(API
بعددددد أن تقددددوم بكتابددددة برنددددام بلغددددة ،Javaددددإن ت فيدد د الكددددود يتوقدد د علددددع بيئددددة
التشدددغيل .تتد د ل بيئد دة التشدددغيل اخلاصدددة بدددد ،Javaوالددديت تسدددمع أيةد دا ايكدددل ،Javaمدددك
Javaوامددددا ميددددثالن معدد دا الوادددديلة لت فيدد د كددددود لغددددة Javaو)Virtual Machine (JVM
ددددا مدددك ،Javaوادددو بت ربدددة ادددوذ خدددا املتصدددفحات املتوا قدددة مدددع Javaلأل دددما
.Java applet
علدددع الدددرغم مدددك أن اادددتمدام متصدددفحات الويدددب املتوا قدددة مدددع Javaادددو أ د د ر دددرق
اكتسدددداب اخلددد ة يف تق يددددة ،Javaددددإن اددد الطريقددددة ال تعددددد الطريقددددة الوحيدددددة .حيددد
تتدددددا بيئددد دات تشدددددغيل مسدددددتقلة تسدددددمح للمسدددددتمدم ال دددددائ بتشدددددغيل تطبيقدددددات ادددددطح
املكتب غري املةم ة يف صفحات الويب.
يددد ت أحددددد اددددوذ مددددك ،Javaواددددو اإلصدددددار الثددددان ،مددددع إحدددددى بيئددددات التشددددغيل
القويددددددة دددددددا واددددددو تسددددددتمدم ا لتطددددددوير واختبددددددار تطبيقددددددات Javaاخلاصددددددة بددددددك.
Javaاجملانيددددة املقدمددددة مددددك وبااددددتمدام )2 Software Development Toolkit (SDK
تا ددددا لكتابددددة ددددركة ،Sunاددددو يكددددون مبت دددداو يددددديك كددددل أدوات Javaالدددديت
وتصحيح أخطاء ونشر كل برام .Java
آلة Javaاالفتراضية :Java Virtual Machine
عليددددك إتباع ددددا ع ددددد كتابددددة كددددود .Javaويددددتم جتميددددع كددددل كددددود Javaعلي ددددا ،واددد
املواصددددفات خاصددددة بكيفيددددة إنتدددددا الكددددود أ دددداء عمليدددددة جتميددددع ال نددددام ،وتسددددداعد
Javaعلدددع ردددمان العمدددل علدددع أع ع يعمدددل يف بيئدددة Virtual Machine كتابدددة الكدددود الدد
نظدددام تشدددغيل ،علدددع الدددرغم مدددك ذلدددك ميك دددك أن تةدددمك عمدددل الكدددود علدددع أع نظدددام
ددددب أال تسددددتمدم أع كددددود داخلددد مددددرتبا ب ظددددام تشددددغيل بعي دددده كمددددا تشددددغيل إذا
يتةمك الكود عمليات داخلية خاصة ب ع نظام.
موعدددة مدددك األدوات الددديت ذد د ح املد د تد د ت SDKاملقدمدددة مدددك دددركة Sunمد دع
Javaعلدددع .Javaوتشدددتمل األدوات املقدمدددة مدددع 2 SDK كدددل مدددا وتا ونددده لتطدددوير بدددرام
أداة جتميددددددع وحمددددددو وأداة إنشدددددداء للتعليمددددددات وأداة لتصددددددحيح األخطدددددداء ،عددددددالوة علددددددع
موعدددة كدددبرية مدددك مكتبدددات الد د ام امل شد د ة مسدددبقًا والددديت تسدددتمدم إلنشددداء بدددرام
Appletاملالئمددددة الدددديت تسددددمح لددددك داة Viewer .Javaعددددالوة علددددع ذلددددك ،تدددداود SDKبدد د
املتصدددفحات مثدددل Javaخدددار متصدددفح الويدددب املتوا د د مدددع .Javaبعد د بتشدددغيل applets
Applet تتسددددم Viewer كددددبري وبالتددددال جتعددددل عمليددددة التطددددوير بطيئددددة للغايددددة .يف حدد د
عددددل مددددك السددد ل اختبددددار ال مي يددددات Appletيف ددددا بصددددغراا واددددرعت ا وكفاءت ددددا،
مراحل مبكرة.
البُرميجيات :Java applets
Javaاددد عبددددارة عددددك بددددرام صددددغرية ميكددددك إدخاهلددددا إىل صددددفحات الويددددب applets
أع متصددددفح مددددع لغددددة Java تددددا اددد الددد ام إىل متصددددفح يتوا ددد مبا ددددرة ،وبالتددددال
يشددددتمل بداخلدددده علددددع بيئددددة تشددددغيل Javaحتددددع ميكددددك تشددددغيل ا) وتعتدد د ادد د الدد د ام
أ ددددااء مدد دك كددددود Javaالت فيدد د ع والدددديت يددددتم تةددددمي ا يف مسددددت دات HTMLبااددددتمدام
Javaيف صدددفحات الويدددب باادددتمدام 2 applets دددب إدخدددا عالمدددة الرتميدددا >.<APPLET
عالمددددديت الرتميدددددا > <OBJECTو> ،<EMBEDوع ددددددما يصدددددل أحدددددد املتصدددددفحات املعتمددددددة
علدددع Javaإىل مثدددل اد د الصدددفحة ،إنددده يقدددوم تلقائيد دا بت ايدددل الكدددود الت فيد د ع املشدددار
إليددده بعالمدددة الرتميدددا اخلاصدددة .وع ددددما يصدددل الكدددود ،تقدددوم بيئدددة تشدددغيل Javaبت فيد د
داخل املتصفح.
تطبيقات :Java
إن JavaBeansادددد د عبددددددارة عددددددك مكونددددددات بددددددرام Javaالدددددديت ميكددددددك جتميع ددددددا
بشدددكل مرئد د دون ايا دددة ملد د م حمدددرت باادددتمدام أداة إنشددداء مرئيدددة .وعلدددع عكد د
مع ددددا مددد م حمددددرت يف الددد ام الوظيفيددددة ،يددددتم تصددددميم ددددب أن ئددددات Javaالدددديت
JavaBeansخصيصد دا لكد د يدددتم التعامدددل مع دددا بشدددكل مرئد د مدددك خدددال وا دددة مرئيدددة
Visualوأدوات جتميددددع الددد ام املرئيددددة األخددددرى .مثددددل ة لتلددددك اخلاصددددة بدددددBasic مشدددداب
«بددددربا» مكونددددات بددددرام JavaBeansمعددددا علددددع ادددد األدوات تسددددمح لغددددري املدددد
مبسدددتوى الكدددود الد د ع اعتددددنا عليددده مسدددتوى مرئد د ،و ريرادددا مدددك التكامدددل اخلدددا
. باعتبارنا م
اندددب الوحددددة التابعدددة دددة املةدددم ة يف صدددفحات الويدددب اخلاصدددة مدددك خدددال أوامدددر ال
Activeالددديت قددددمت ا دددركة ة لتلدددك اخلاصدددة بدددد)Server Pages (ASP بطريقدددة مشددداب
.Microsoft
املعلومدددات الدددواردة و وهلدددا إىل املعاذدددات اد د أ دددااء خاصدددة مدددك كدددود Javaتعدددا
كددددائك ميكددددك لبيئددددة Javaااددددتمدامه .وعلددددع الددددرغم مددددك ااددددتمدام املعاذددددات بصددددفة
أاااددددية قددددا يف متصددددفح HotJavaالدد د ع تقدمدددده ددددركة ،Sunددددإن ادد د املعاذددددات
تورددددح كيدد د ميكددددك ااددددتمدام Javaللتطددددوير الدددددي اميك إلمكانيددددات متصددددفحات
ولددددة بشددددكل متكددددرر .ويف الويددددب والددد ام األخددددرى الدددديت توا دددده معلومددددات ديدددددة
األاددددام ،تددددو ر املعاذددددات ملتصددددفح HotJavaكليددددة تعلددددم كيفيددددة التعامددددل مددددع البيانددددات
الواردة.
واآلن وبعددددد أن عر ددددر املايددددد مددددك املعلومددددات عددددك ،Javaنددددرى أندددده قددددد حددددان الوقددددر
ملعر دددة مدددا ادددو أكثدددر مدددك اد د املفددداايم أع التعدددر علدددع بيئدددة Javaب كملد د ا -لغدددة
Javaوبيئددددة التشددددغيل واألدوات -بصددددورة أكثددددر تعمقًدد دا .وأ ةددددل الطددددرق لتحقيددد ذلددددك
الرتكيا علع التق ية نفس ا.
دددة اد د أادددام كدددل د د ء ،وقدددد كاندددر تعدددر ادددابقًا باادددم ،Oak تعتد د لغدددة ال
ددددم ت تغدددديري ادد د ا االاددددم إىل Javaنظددددرا ألاددددباب قانونيددددة قددددد كانددددر ا ددددا تق يددددة
ددددركة .)Sunوبدددددون لغددددة Java خمتلفددددة تسددددمع Oakأيةدددا قبددددل لغددددة Oakالدددديت قدددددمت ا
لدددك يكدددون لبيئدددة التشدددغيل واألدوات أيدددة ائددددة .ع دددد ايددددي عدددك ،Javaعدددادة مدددا تشدددري
ة. الكلمة إىل لغة ال
عدددل اد د اللغدددة ت دددا اد د ا القددددر مدددك األاميدددة أ ندددر عددددد مدددك ولكدددك مدددا الد د ع
قيد د اد د ا القددددر الكدددبري دددة عد د السد د وات شدددلر بطريقدددة أو بد د خرى يف لغدددات ال
دددا تطدددوير الدد ام علدددع ظ دددور لغدددات ديددددة تعدددد بتغددديري مدددك الشدد رة لقدددد اعتددددنا يف
دددورة يف تطدددوير الد د ام وتسد د ل مدددك وظائف دددا وتعمدددل الطريقدددة الددديت ند د م ب دددا و دددد
دددا التطدددوير ب كملددده .لمددداذا ندددىلمك ب اميدددة اد د اللغدددة إذا وحنددداو علدددع تقددددم حالدددة
ة ديد مك ال تعلم اوذ
:Javaلغدددددة بسددددديطة ولغدددددة بر دددددة كائ يدددددة التو ددددده Object-Orientedموزعدددددة ومفسحدددددرة
ال ظدددر عدددك التطبيد د ،كمدددا حمولدددة) وقويدددة وكم دددة وتعمدددل علدددع أع نظدددام تشدددغيل بغد د
ميك ا ت في عمليات متعددة وا لغة دي اميكية ذات مستوى مرتفع مك األداء.
دددا تطدددوير الد د ام تعتد د كدددل صدددفة مدددك اد د الصدددفات ادددد ًا يف حدددد ذات دددا يف
ايديثددددة .ولدد د لك إن ددددا لددددك نسددددلم ب دد د ا التعريدد د دون م اقشددددة ،بددددل ا اقشدددده أوالً ل ددددر
كي جتسم لغة Javaا السمات واإلمكانيات بالفعل.
لغة بسيطة:
اخلدد د اء تبدددددو لغددددة Javaبسدددديطة ع ددددد مقارنت ددددا بددددالكثري مددددك بال سددددبة للمدد د
ددددة األخددددرى املعقدددددة .ولك ددددا ليسددددر بسدددديطة للغايددددة ،أن ددددا بسدددديطة بدر ددددة لغددددات ال
كا يدددة ملواصدددلة العمدددل بددددون االردددطرار إىل قةددداء وقدددر يف تعلدددم لغدددة ديددددة ذامددا .أمدددا
بال سدددبة للمبتددددئ ،قدددد ت تصدددميم Javaلكد د تكدددون قريبدددة مدددك لغددديت Cو C++بقددددر
يك يسددددتمدمون C الدد د اإلمكددددان ،وذلددددك لةددددمان أن القاعدددددة العريةددددة مددددك املدد د
و C++ادد د األيددددام ميكدد د م االنتقددددا إىل ااددددتمدام اللغددددة اذديدددددة بسدد د ولة .ونظددددرا ألن
معتددددداد علدددددع التعامدددددل مدددددع ادددددات Javaهلدددددا ددد د وراا يف Cو ،C++ميكدددددك ألع دددددم
اللغت أن يعتاد اريعا علع ااتمدام Javaيف وقر ال ي كر.
دددو Cلقليدددل مدددك الوقدددر يف االعتيددداد علدددع علدددع الدددرغم مدددك ذلدددك ،ادددو وتدددا م
ددد د .C++حيددد د أن Javaعبدددددارة عدددددك لغدددددة تددددددعم اادددددتمدام Javaوذلدددددك مقارندددددة مب
أن لغددددة C اادددتمدام الكائ ددددات واددد تشددددبه لغددددة C++يف ذلددددك بدر ددددة كددددبرية ،يف حددد
دددب تعتمدددد علدددع اإل دددراءات وتشدددبه Javaبصدددورة رئيسدددية يف تركيب دددا .نتي دددة لددد لك،
دددد دددد Cأوالً أن يتعلمددددوا الددددتفكري يف إ ددددار الكائ ددددات ،يف حدددد أن م علددددع م
C++معتادون علع العمل بااتمدام الكائ ات.
إمكانيددددات C++القويددددة .إال أن اددد اإلمكانيددددات ال تسددددتمدم بصددددورة لددددر عددددك بعددد
متكدددررة كمدددا قدددد تتصدددور ،بدددل أن دددا غالبدددا مدددا تدددىلدع إىل إنشددداء بدددرام معقدددد صدددعبة
التعديل.
املىل دددرات الددديت تشدددري ملوردددع يف الددد اكرة وتعدددي وعلدددع و ددده التحديدددد ،ت حددد
أكثدددر مدددك وظيفدددة ملعامدددل واحدددد وا دددتقاق ئدددة ديددددة مدددك العديدددد مدددك الفئدددات املو دددودة
إال أن التحميدددل الاائدددد للعمليدددة مدددازا مدددك لغدددة Java بالفعدددل و ويدددل البياندددات التلقدددائ
مدعما).
ددد لغددددة C++ولك ددددا كانددددر تعقددددد اللغددددة، رمبددددا كانددددر اددد األ ددددياء تفيددددد م
ولددد ا قدددد أزالدددر لغدددة Javaاددد اإلمكانيدددات لكددد تظدددل بسددديطة واددد لة االادددتمدام.
ا البسا ة. رزاا يف وتلك ا أو ال قاط اليت
ويف خدددددال عمليدددددة التبسددددديا قدددددام ريددد د Javaبتقدددددديم ريقدددددة للت ميدددددع التلقدددددائ
للمحد د و ات .وعلدددع الدددرغم مدددك أن ذلدددك قدددد زاد مدددك در دددة تعقيدددد نظدددام Javaالدددداخل ،
قددددد عمددددل علددددع إزالددددة عددددبء إدارة الددد اكرة عددددك املددد م ،واكددد ا ،ال يتسددددم برنددددام
Javaبسدد د ولة كتابتدددده حسددددب ،بددددل إن املشددددكالت املرتبطددددة بالدد د اكرة قددددد قلددددر إىل
ا البسا ة. رزاا Javaيف ان ال قاط اليت حد كبري .وتلك ا
لددددددو كانددددددر لغددددددة Javaتتسددددددم بالتعقيددددددد ،ددددددإن ذلددددددك ألن اللغددددددة تدددددددعم ااددددددتمدام
غددددري احملرت دددد ،ميكددددك أن ميثددددل الكائ ددددات بشددددكل كامددددل .بال سددددبة للمدددد
دددة املعتمددددة علدددع الكائ دددات )OOPمف ومد دا مروعد دا ،أمدددا بال سدددبة هلدددىلالء مصدددطلح ال
املعتاديك علع التعامل مع الكائ ات ،إن ذلك األمر ا ل للغاية.
ددددة الدددديت تدددددعم ااددددتمدام الكائ ددددات بالبسددددا ة :كددددل م مددددة يتسددددم م طدد د ال
بر دددة ي ظدددر إلي دددا يف إ دددار الكائ دددات وعالقات دددا ببعةد د ا الدددبع .ومدددك ناحيدددة عامدددة،
الفئ ا ااة :اددد د كدددددود أاااددد د متكامدددددل يعمدددددل مبثابدددددة قالدددددب ت شددد د م ددددده تلمي ي ي ي ي ي ي
ًد دا ،ادددو تقدددوم بكتابدددة كدددود Javaإلنشددداء الكائ دددات .وباعتبدددار م
الفئددددات الدددديت يبدددددأ عملدد د ا ع ددددد تشددددغيل ال نددددام بوصددددف ا كائ ددددات .ويف
إ ددددار الصددددورة السددددابقة ،ميكددددك مقارنددددة الفئددددات برتكيددددب DNAللمليددددة،
يف حددد ادددو ذثدددل الكائ دددات خليدددة حيدددة عليدددة .كمدددا ميكدددك مقارندددة
ئدددددات Javaبالتصدددددميم اهل دادددد مل دددددا ،يف حدددد ميثدددددل الكدددددائك امل دددددا
امل شددد مددددك اددد التصددددميمات .وعلددددع الددددرغم مددددك أن اددد ال ظددددرة مبسددددطة
للغايددددة حددددو العالقددددة بدد د الفئددددات والكائ ددددات ،إن ددددا اددددو تكفدد د يف
الوقر ايال .
دددة الددديت تددددعم اادددتمدام الكائ دددات بشدددكل ولكد د نوردددح القيمدددة العظيمدددة لل
ملمدددوم ل تصدددور أنددده م مدددة كتابدددة ال ندددام تتما دددل مدددع إنشددداء ذثدددا باادددتمدام كتدددل
دددة الددديت تددددعم اإل دددراءات عمدددل كدددل كتلدددة ب ددداء عليدددك لغدددات ال الب ددداء .سدددتفر
ددددة الدددديت تدددددعم ااددددتمدام الكائ ددددات دد د تركددددا علددددع العمددددل األكدد د أمددددا ال
ذاتددده ،علدددع الشدددكل ال دددائ الددد ع ي بغددد أن يكدددون عليددده التمثدددا .وبددددالً مدددك إنشددداء
كتلددة ب دداء يدددويا لكددل دداء مددك الكددل ،د تعتمددد علددع اددوذ عددام مددك كتددل الب دداء
يدددتم م ددده ا دددتقاق كدددل كتدددل الب ددداء األخدددرى .وادددو تدددو ر الوقدددر واذ دددد امل ددددريك يف
إنشددداء كتدددل الب ددداء كدددل علدددع حددددة ،كدددل مدددا عليدددك أن تفعلددده ادددو أن تسدددتمدم كتلدددة
الب دددداء العامددددة كقالددددب وت شددددئ ب دددداء علي ددددا .يعطيددددك القالددددب كددددل السددددمات األاااددددية،
يددد د يت اادددددب مدددددع احتيا اتدددددك .وادددددتكون ال تي دددددة اددد د زيدددددادة وعليدددددك أن تعدلددددده
اإلنتا ية وإعادة االاتمدام بشكل رائع.
ددددددة كائ يددددددة التو دددددده Object-Orientedيكددددددون الرتكيددددددا بصددددددورة ددددددا ال يف
رئيسددددية علددددع تصددددميم كتددددل الب دددداء الكائ ددددات) وعلددددع العمليددددات الدددديت تددددتم علددددع اددد ا
التصددددميم .ولددددو أنددددك قمددددر علددددع حنددددو يددددد بتوصددددي كتلددددة الب دددداء الرئيسددددية متعددددددة
موعدددددة كدددددبرية مدددددك كتدددددل الب ددددداء ذات األغدددددرا ،ميك دددددك بعدددددد ذلدددددك ا دددددتقاق
اخلاصة م ا. األغرا
إن الوظددددائ الدددديت تعتمددددد علددددع الكائ ددددات يف لغددددة Javaادد د نفسدد د ا تلددددك اخلاصددددة
دد د C++ايددددالي لددددك يوا ددددوا أع متاعددددب ع ددددد بلغددددة .C++وعلددددع الددددرغم مددددك أن م
الدد د يك ليسددددر لدددددي م خدد د ة بالتعامددددل مددددع الكائ ددددات ااددددتمدام ، Javaددددإن املدد د
الوقر لالعتياد علع ا التق ية واملفاايم املرتبطة ب ا. او يلام م بع
لغة موزعة:
ت إنشددداء لغدددة Javaمدددع وردددع اتصددداالت الشدددبكة يف الد د اك ،اإلمكانيدددات املعقددددة
ددددداء دددددوارع يف تق يدددددة ،Javaتشدددددتمل Javaعلدددددع مكتبدددددة لشدددددبكة االتصددددداالت ادددد
Transmission دددداملة مددددك كائ ددددات الشددددبكة الدددديت تتعامددددل مددددك ال وتوكددددوالت مثددددل:
دددددتح Java .Fileنتي دددددة لددد د لك ،ميكدددددك لددد د ام Transfer Protocol ) (HTTPو)(FTP
ادددد ولة الوصدددددو إىل نظدددددام املصدددددادر املو دددددودة علدددددع اإلنرتندددددر والوصدددددو إلي دددددا بدددد ف
ملفات حمل .
عليدددددك أن ت فددد د تفاصددددديل لدددددي دددددا Java و يمدددددا يلدددد ميددددداة أخدددددرى قويدددددة تتميدددددا ب
االتصدددا الشدددبك ب فسدددك ،لغدددة Javaتدددو ر كدددل مدددا يلدددام لعمليدددات املعاذدددة املوزعدددة.
يددددد علددددع ذلددددك اددددو متصددددفح HotJavaالدد د ع بفةددددل لغددددة ،Javaيف ددددم كيفيددددة ومثددددا
ددددة الوصددددو إىل والتعامددددل مددددع الكائ ددددات عددد الويددددب .تتطلددددب م ددددك غالبيددددة لغددددات ال
تقدددددددم ادددددد فسددددددك ،أمددددددا Java األخددددددرى أن تكتددددددب مسددددددتويات الشددددددبكة ادددددد ب
اإلمكانيات مك البداية.
لغة مفسّرة (حموّلة):
غالبد دا مدددا ي تددداب مطدددورو الد د ام اخلدددو ع دددد تفكريادددم يف اادددتمدام لغدددة مفسدددرة
دددة «الكدددبرية» .ومدددك املعدددرو أن اللغدددات املفسدددرة بطيئدددة وذلدددك مقارندددة ملشدددروعات ال
بشبي ات ا اجملمعة املرتمة) وغالبا ما يو ه إليه ال قد هل ا السبب.
Java virtual machine علدددع الدددرغم مدددك ذلدددك ،ومدددك خدددال االادددتمدام املبتكدددر لدددد
) ،(JVMتغلبدددر Javaعلدددع الكدددثري مدددك مشدددكالت السدددرعة الددديت كاندددر ادددببا يف شدددل
اللغدددات املفسدددرة األخدددرى .وميدددر كدددود Javaخدددال عمليدددة جتميدددع ت دددت مدددا يعدددر باادددم
،Java ملواصدددفات Virtual Machine بايدددر كدددود .Bytecodeوالبايدددر كدددود وادددو مطددداب
وميك ددددك تشددددغيله علدددددع أع نظددددام يددددددعم بيئددددة .Javaيكددددون ادددد ا الكددددود يف مرحلدددددة
لتقليددددل عددددبء التحويددددل بدر ددددة أكدد د ،تطبدد د Javaتعدددددد العمليددددات الدد د ع يسددددمح
للد د ام بالتعامدددل مدددع العديدددد مدددك امل دددام يف وقدددر واحدددد) وتتعامدددل مدددع التحويدددل بفاعليدددة
ويددددىلدع جتميددددع كددددود Javaيف مرحلددددة متواددددطة -ددددم ترمتدددده يف اخللفيددددة مددددك خددددال
العمليدددددات -إىل تفسدددددري أادددددرع كمدددددا أنددددده يعطدددد Javaادددددرعة كدددددبرية ذياادددددا عدددددك
اللغات املفسحرة التقليدية.
موعدددددة مدددددك دددددازا ،دددددو Javaلدددددي Virtual Machine إن )(JVM ملحوظي ي ي
دددب التعامدددل مدددع البايدددر كدددود Bytecode ددددد كيد د املواصدددفات الددديت
بددددد Javaعلددددع نظددددام كمبيددددوتر حمدددددد .وميكددددك لدد د ام Javaأن اخلددددا
تعمل علع أع كمبيوتر به .Java Virtual Machine
لغة قوية:
،وخاصدددة احملرت د د الد د يك تعتمدددد تعتد د الثقدددة ددديئا م مد دا للغايدددة بال سدددبة للمد د
ددددر ب دددا إنشددداء بدددرام قويدددة تعدددت م ووظدددائف م علدددع امل ت دددات الددديت ي شدددئون ا .لد د لك،
حمتمدددل هلدددا ال دددا يف ظدددل ظدددرو غدددري معرو دددة أو ظدددرو مغدددايرة .وعلدددع الدددرغم مدددك أن
ا د ا اهلددد رمبددا يبدددو وارددحا ،ددإن الكددثري مددك اللغددات ا د أبعددد مددا تكددون عددك تددو ري
لتطوير برام قوية. األدوات الالزمة للم
تددددا لغددددة Javaإىل توصدددديفات تةددددمك أن أنددددواع البيانددددات الدددديت يددددتم ذريراددددا إىل
تا دددا ادد الطريقدددة .عدددالوة علدددع ريقدددة تدددابع) مدددا تكدددون ادد بالفعدددل البياندددات الددديت
ددددوع البيانددددات ،كمددددا تسددددمح بدددده كددددل مددددك C ذلددددك ،ال تسددددمح Javaبالتحويددددل التلقددددائ ل
ددددب علددددع املدد د م كتابددددة التحددددويالت بورددددو .ونتي ددددة لدد د لك يقددددل احتمددددا و ،C++إذ
ظ ور األخطاء يف الكود.
يتمثدددددل أكثدددددر االختال دددددات وردددددوحا بدددد Javaو C/C++يف اادددددتمدام مدددددتغري وتدددددوع
الددد اكرة وإتددددال البيانددددات .وبدددددالً مددددك علددددع موقددددع البيانددددات يف الددد اكرة مي ددددع حددد
ديدددد املدددتغريات حسددداب اد د ا املدددتغري ،تقدددوم Javaبددددعم املصدددفو ات الفعليدددة الددديت تددددعم
ددددد موقدددع ع صدددر يف املصدددفو ة ايددددود) .ونظدددرا لعددددم قددددرة املدد م علدددع حدد الددديت
البياندددات أو الوصدددو إىل ع صدددر مصدددفو ة خدددار ايددددود علدددع ادددبيل اخلطد د ،دددإن اد د
دددددد يف لغدددددة .Javaوتتمثدددددل ال تي دددددة يف نظدددددام تطدددددوير قدددددوع ددددددا ودددددرر األخطددددداء ال
امل م مك مثل ا األعباء.
لغة آمنة:
يددددده اتصدددددا بالشدددددبكة ،تصدددددبح االعتبدددددارات األم يدددددة مسددد د لة يف أع وقدددددر ودددددد
خطددددرية وم مددددة .لقددددد كانددددر مسدد د لة التدد د م مبعدد د قلدد د دائددددم ،حتددددع علددددع املسددددتوى
مدددك البدايدددة ،قدددام ريد د Javaبتصدددميم لغدددة Javaمدددك أ دددل البيئدددات املوزعدددة واملرتبطدددة
يمددددا بي ددددا بوااددددطة ددددبكات اتصدددداالت ،وقددددد تعامددددل مددددع مشددددكلة التددد م مبكددددرا.
ددداءا م مد دا مدددك بيئدددة .Javaلد د لك ،د د ذك دددك مدددك إنشددداء نظدددم يعتد د نظدددام التد د م
خاليدددة مدددك الفريوادددات واألخطددداء ،وذلدددك بفةدددل عددددد عمليدددات التحقد د الددديت تقدددوم ب دددا
ا اللغة قبل ت في أع اء مك الكود.
الد د اكرة أ ددداء وقدددر الت ميدددع .وعدددك أواً ،يدددتم إزالدددة كدددل مدددك املىل دددرات و صدددي
الدد د اكرة والوصددددو إىل الدد د اكرة أ دددداء وقددددر التشددددغيل ،ذ ددددع صددددي ريدد د م ددددع
موارع ال اكرة مسبقًا والوصو إىل ال اكرة. مك ا رتا Javaامل
يكددددك ثا ي ا اا ،يتحقدددد املفسحددددر مددددك كددددل األكددددواد قبددددل أن يددددتم ت فيدد د اا .لددددو
لدددك يدددتم ت فيد د ،ويدددتم م دددع الكدددود الكدددود أحدددد األكدددواد الصدددحيحة اخلاصدددة بددددJava
غدددري القيااد د قبدددل أن ميثدددل مشدددكلة .عدددالوة علدددع ذلدددك ،ال يسدددمح باألنشدددطة اخلطدددرية
مثدددل الوصدددو غدددري املشدددروع ملسددداحة الد د اكرة وخدددرق امتيدددازات الوصدددو والوصدددو غدددري
ويدددل البياندددات غدددري املشدددروعة .نتي دددة هلددد ا ،ال ميكدددك ألع املشدددروع للفئدددات وعمليدددات
ريوم الوصو إىل اياكل البيانات أو الكائ ات أو موارع ال اكرة.
Javaداخدددل ادددوذ أمدددم :إذ يدددتم التعامدددل مع دددا ايدددة ،تعمدددل كدددل الددددapplets ويف ال
ا أن كدددل الددددapplets علدددع أن دددا كدددود غدددري مو دددوق بددده ي فدد يف بيئدددة مو دددوق ب دددا .يعدددم ادد
دددداز .وحتددددع بعددددد ديددددد صددددالحيات ا ع دددددما تصددددل إىل الدددديت ت ددددا مددددك الويددددب يددددتم
جتددداوز عمليدددة التحقد د مدددك الكدددود ،يدددتم م دددع الدددد appletsمدددك الوصدددو للملفدددات املو دددودة
بدددك إال إذا قمدددر بصدددفة حمدددددة مبد د ح الدددد appletتصدددريح ددداز الكمبيدددوتر اخلدددا علدددع
وعلدددع الدددرغم مدددك اادددتحالة اخدددرتاق ال ظدددام التد د ميم الد د ع وردددعته Javaمدددك ال احيدددة
ال ظريدددة ،إال إنددده يف ايقيقدددة ،ميكدددك اخدددرتاق أع نظدددام تد د م ألع نظدددام بر د د ،مبدددا
غدددددرات أم يدددددة يف نظدددددام يف ذلدددددك .Javaويف ايددددداالت ال دددددادرة الدددديت ت ي دددددا اكتشدددددا
بشددددركة Sunبسددددد ادددد الثغددددرات علددددع تدددد م ،Javaقددددام ريدددد عمددددل Javaاخلددددا
ددددد أن ددددا أكثددددر أمانددددا ددددة األخددددرى، الفددددور .ولكددددك ع ددددد مقارنددددة Javaبلغددددات ال
بكات االتصاالت. ول لك قد أصبحر اللغة الفعلية املستمدمة إلنشاء برام
مستويات الصالحيات:
ددا يعددم Javaلك د تعمددل دائم دا داخددل اددوذ الت د م ، ت تصددميم 1.0 x applets
دددر أبددددا عدددك ال طددداق الةدددي للصدددالحيات الددديت تفررد د ا اد د ال سدددمة .بعدددد أن دددا ال
Javaادددوذ تد د م خمتلد د ،ميكدددك للمسدددتمدم مدددك خاللددده مد د ح ذلدددك ،قددددمر 1.1
الدددد appletsوصدددو كامدددل ملصدددادر الشدددبكة وال ظدددام أو حرمان دددا مدددك اد د الصدددالحيات
Javaبوصددددو ع قدمتدددده 1.1 ذامدد دا .ولسددددوء ايددددرب ،تددددح ادد د ا ال مددددوذ التدد د ميم الدد د
ا ددددة إىل نددددوع واحددددد قددددا مددددك الددددد appletsالكامددددل لكددددل املصددددادر حتددددع لددددو كددددان
ديدددد أن يقدددرأ الدددد appletsامللفدددات علدددع Javaال يسدددتطيع املسدددتمدم .ومدددع 1.1 الوصدددو
Javaأع ددددكل مدددددك ح الددددد appletsيف 1.1 قددددا مددددثالً ،حيدددد أن مدددد ال ظددددام احمللدددد
امتيددددازات الوصددددو مي حدددده وصددددوالً كددددامالً للمصددددادر احملليددددة ومصددددادر الشددددبكة بغددد
عالً. ا الدapplets ال ظر عك اإلمكانيات اليت وتا إلي ا ا
قددددم اإلصددددار الثدددان مدددك Javaأخدددريا مف دددوم «مسدددتويات الصدددالحيات» وادددو ادددوذ
تدد د م ميكددددك مدد د ح الددددد appletsمددددك خاللدددده إمكانيددددات حمددددددة ب دددداء علددددع احتيا اتدددده
وم امدددده .وعلددددع اددددبيل املثددددا ،ددددإن الددددد appletsالدد د ع وتددددا قددددراءة ملدد د مو ددددود علددددع
ء غري . كمبيوتر املستمدم ميكك م حه ا ا االمتياز قا وال
مددددع Javaميك ددددك إنشدددداء ملددد ت فيددد ع واحددددد ميكددددك تشددددغيله علددددع أع كمبيددددوتر
يشتمل علع بيئة تشغيل .Java
Java للحصددددو علددددع بيئددددة تشددددغيل Javaوالعمددددل ب ددددا ،دد د ال تفيددددد اددددوى يف تشددددغيل
ددددب أن تثبددددر appletsاملصددددممة يف صددددفحات الويددددب .ولتشددددغيل تطبيقددددات Javaكلدد د ا،
بيئددددة التشددددغيل اخلاصددددة بددددد Javaالدددديت تعمددددل بصددددورة مسددددتقلة عددددك متصددددفحات الويددددب.
ددددركة Sunوغالبيددددة أدوات تطددددوير Java Javaالدددد ع تقدمدددده ذلددددك ،ألن SDK يكفدددد
ويدددل تد د ت مدددع بيئدددة تشدددغيل Javaاملسدددتقلة .نظدددرا ألن بيئدددة تشدددغيل Javaمدددا اد د إىل أداة
املسدددئولون عدددك إنشددداء بدددد Javaتتوا ددد مدددع ،JVMدددإن األ دددما للبايدددر كدددود اخلدددا
بيئدددات التشدددغيل لددددي م مطلد د ايريدددة يف إنتدددا مثلد د ا .غالبد دا مدددا يقدددوم ال دددام باادددتمدام
Javaليعد د وا عدددك الشد د ء ذاتددده ألن بيئدددة بيئدددة تشدددغيل JavaوVirtual Machine مصدددطلح
تشدددغيل Javaتطبد د ب ددداء علدددع مواصدددفات JVMيف واقدددع األمدددر ،إن دددا مسد د لة وقدددر قبدددل أن
يقدددوم كد دل املسدددئول عدددك إنشددداء نظدددم التشدددغيل بت يدددا بيئدددة تشدددغيل Javaداخدددل نظدددام
التشددددغيل مبا ددددرة .تقددددوم كددددل مددددك Microsoftو appleبإر دددداق اإلصدددددارات السددددابقة مددددك
ير ددد مددددك Java Javaداخددددل نظددددام التشددددغيل اخلاصددددة ب مددددا ،ولكددددك اإلصدددددار الثددددان
بعدددد) وع ددددما تفعدددل الشدددركتان ذلدددك ،لدددك يةدددطر املسدددتمدمون لتثبيدددر بيئدددة التشدددغيل
ب نفس م سو يتم دعم Javaعلع مستوى نظام التشغيل.
تتدددا ادد السدددمة اخلاصدددة بالعمدددل علدددع أع نظدددام تشدددغيل بفةدددل برندددام جتميدددع يقدددوم
بإنشدددداء تعليمددددات الكددددود الدددديت تعمددددل مسددددتقلة عددددك أع نظددددام تشددددغيل .نتي ددددة لدددد لك،
ميكددددك تشددددغيل بددددرام Javaعلددددع أع كمبيددددوتر ألن األكددددواد الدددديت تتدد د ل م ددددا ادد د
باذ از. وهلا بيئة تشغيل Javaإىل كود حمل خا ال ام ميكك أن
أن بيئددددة التشددددغيل اخلاصددددة بددددد Javaمو ددددودة علددددع كمبيددددوتر حمدددددد ،ددددإن بددددا رتا
بددددد Javaاددددي ف بصددددورة صددددحيحة .وبفةددددل اإلمكانيددددات السددددابقة البايددددر كددددود اخلددددا
ال ظدددر الددديت ذكرناادددا ،دددإن نظدددام Javaميكدددك أن يعمدددل علدددع أع نظدددام تشدددغيل بغد د
عك التطبي .
ديدددد ح دددم ندددوع البياندددات األوليدددة وأداء العمليدددات الددديت يدددتم دائمد دا أمدددا يف لغدددة Java
جتدددرى علي دددا .علدددع ادددبيل املثدددا ،دائمد دا مدددا يكدددون intعبدددارة عدددك قيمدددة عددددد صدددحيح
Institute of IEEEاخلاصدددة بدددد ددديا مدددع مواصدددفات 754 تتكدددون مدددك 32بدددر وذلدددك ذا
.Electricalوع دددددما تسددددتمدم أنددددواع البيانددددات األوليددددة يف and Electronics Engineers
، Javaدددإن ذثيدددل اد د األندددواع والعمليدددات الددديت جتدددرى علي دددا تكدددون ابتدددة علدددع الدددرغم
مك اختال األنظمة.
تشدددتمل مكتبدددات الفئدددات اخلاصدددة بدددد Javaعلدددع وا دددات لكدددل نظدددام تشدددغيل تتدددا
ددددد أن ئددددة Windowالتميليددددة وعمليددددات عليدددده بيئددددة تشددددغيل .Javaعلددددع اددددبيل املثددددا ،
Sunو Windowsو .MacOSوع دددد دددا تكدددون متاحدددة لكدددل مدددك Solaris الت فيد د اخلاصدددة ب
ااددددتمدام مثددددل ادد د الوا ددددات الراددددومية ،تقددددوم Javaتلقائيدد دا بتحميددددل ع صددددر وا ددددة
ب ظدددام التشدددغيل ،ذلدددك الع صدددر الدد ع يقابدددل نا دد ة االادددتمدام الرادددومية املالئدددم اخلدددا
لل از ايال .
يف ال ايددددة يتةددددح أن نظددددام Javaب كملدددده ميكددددك العمددددل بدددده علددددع أع نظددددام بغدد د
ال ظر عك التطبي .
مستوى مرتفع من األداء:
تددددازا بال سددددبة للغددددة حمولددددة ،وذلددددك بسددددبب تطددددوير بددددرام جتميددددع أداء Java يعتدد د
بدددددرام الت ميدددددع الفوريدددددة) الددددديت تقدددددوم بتطدددددوير البايدددددر كدددددود دون just-in-time )(JIT
التددد ري علددددع العمليددددات األخددددرى .و بقًدد دا لشددددركة ،Sunيددددتم تشددددغيل بددددرام Javaبددد ف
ارعة برام C/C++تقريبا.
دددة األصدددلية، ويدددل لغدددات ال ويدددل البايدددر كدددود أادددرع مدددك وعلددع الدددرغم مدددك أن
البياندددات نظدددرا ألنددده يف مرحلدددة وادددطع ،إال أن تصدددميم ب يدددة Javaيدددىلدع إىل تقليدددل تدددد
الوقدددر، أ ددداء وقدددر التشدددغيل .عدددالوة ع لدددع ذلدددك ،يدددتم ت فيددد عمليدددات متعدددددة يف نفددد
س السرعة الكلية مللفات Javaالت في ية ملفات.exe. ا يىلدع إىل
تدددازا ع دددد مقارنت دددا باللغدددات علدددع الدددرغم مدددك كدددون مسدددتوى أداء Java ملحوظي ي ي
يف املاردددد قددددد أقددددروا ب ن ددددا بطيئددددة املفسحددددرة األخددددرى ،إال أن املدددد
دددددا لدر دددددة ذ دددددع اادددددتمدام ا يف ايدددداالت الددددديت ذثدددددل ي دددددا السدددددرعة
اإلحصددددائيات أن بددددرام Javaتعمددددل بصددددورة عددددامالً م مدد دا .وقددددررت بعدد د
ددددوال 10إىل 30مددددرة .ويف حددد كددددان ا ددددا C/C++ أبطددد مددددك بددددرام
دددك يف مدددا إذا كاندددر ال سدددمة األصدددلية مدددك Javaادددريعة بدر دددة كا يدددة
ددددركة Sunبتطددددوير السددددرعة الكليددددة لدددددJava للتطبيقددددات امل مددددة ،قامددددر
مدددددك .Javaعدددددالوة علدددددع ذلدددددك ،قامدددددر Sun مدددددك خدددددال اإلصددددددار الثدددددان
Javaالت في يدددة، ددداء مدددك نسدددمة 1.3 مدددىلخرا بإصددددار تق يدددة HotSpotك
وة األداء ب Javaوالكود الداخل . األمر ال ع أدى إىل تصغري
املتوا قدددة مدددع Javaوالددديت ال تسدددتفيد مدددك تك ولو يدددا JITتبددددو أبطد د ع دددد مقارنت دددا ب د د
املتصفحات.
الوقدددر إحددددى اإلمكانيدددات امل مددددة يف ،Java يعتددد ت فيددد عمليدددات متعدددددة يف نفددد
حيددد أن ددددا تتدددديح مللفددددات .exeالقدددددرة علددددع دعددددم ت فيددد العديددددد مددددك العمليددددات يف وقددددر
لدددا بدد ادد اإلمكانيدددة وبدد تعددددد امل دددام ،تعددددد امل دددام ادددو قددددرة واحدددد .و دددب أال
نظددددام التشددددغيل علددددع تشددددغيل أكثددددر مددددك برنددددام يف الوقددددر ذاتدددده ،يف حدددد أن تعدددددد
العمليات يسمح لل نام بت في العديد مك امل ام يف وقر واحد.
علددددع اددددبيل املثددددا يف البيئددددة الدددديت ال تتمتددددع بإمكانيددددة تعدددددد العمليددددات ،ال ميكددددك
لل ندددام ت فيددد أكثدددر مدددك عمليدددة واحددددة .حيددد تسدددتمدم اذملدددة التكراريدددة للحدددد
ددددب ت فيددد اا مثددددل لتتبددددع امل مددددة احملددددددة اياليددددة .و دددددد اددد اذملددددة امل مددددة الدددديت
ت شددديا حمتويدددات نا د د ة أو تتبدددع مددددخالت املسدددتمدم أو باعدددة مسدددت د) دددم ت قدددل اد د
امل مددددة إىل اإل ددددراء اإل ددددراءات) امل ااددددبة .ومب ددددرد أن ت فدد د امل مددددة ،ميكددددك أن تبدددددأ
دددب أن م مدددة أخدددرى .ونظدددرا ألنددده ال ميكدددك التعامدددل ادددوى مدددع م مدددة واحددددة قدددا،
امل مة ايالية قبل التعامل مع م مة ديدة. ي تظر ال ظام حتع ت ت
دددددة مثدددددل Cو C++تسدددددمح للمددد د م بتطبيدددد تعددددددد علدددددع الدددددرغم مدددددك أن لغدددددات ال
العمليات ،إن ذلك األمر يستغرق الكثري مك اذ د مقارنة بد.Java
الوقددددر .وميكددددك واكددد ا ميك ددددك تعددددي العديددددد مددددك العمليددددات للت فيددد يف نفددد
يد د يدددتم التعامدددل مدددع سد د التفاعدددل مدددع املسدددتمدم ، أن تدددىلدع اد د العمليدددات إىل
العديدددد مدددك الطلبدددات يف وقدددر واحدددد .وكددد لك تدددتم إتاحدددة األوقدددات اخلاصدددة باادددت ابة
الوقر الفعل .
ومدددك األمثلدددة اذيددددة علدددع العمليدددات الددديت يدددتم ت فيد د اا إمكانيدددة اادددتعادة الد د اكرة
غددددري املسددددتمدمة .وادد د اإلمكانيددددة ادد د عمليددددة ذات أولويددددة م مفةددددة ت فدد د يف نفدد د
الوقدددر مدددع م دددام أخدددرى .واد د تراقدددب الكائ دددات وكدددل اإل دددارات إلي دددا ،مدددع الدددتمل
وا دددددا مثدددددا كخدددددر علدددددع تعددددددد العمليدددددات وادددددو ال ندددددام الددد د ع يددددددعم اإلدخدددددا
واإلخددددرا والتفاعددددل مددددع املسددددتمدم ،مثددددل أخدد د مدددددخالت صددددوت الوقددددر الفعلدد د مددددك
وقدددر ردددبط ا مدددع صدددورة يدددديو يدددتم تشدددغيل ا علدددع الشا دددة .فد د ميكر دددون يف نفد د
ركدددددات دددددفا اددد د ايالدددددة ،ادددددو يقدددددوم اددد د ا ال ظدددددام مبطابقدددددة الصدددددوت مدددددع
ال يك يظ رون علع ا ة الكمبيوتر يف الوقر الفعل . األ ما
اد د ا ال ندددام السدددمع املرئد د مدددك صدددعوبة تطددداب الصدددورة مدددع واكد د ا اددديتمل
الصوت ،وا غالبا أصعب مشكالت ال ام السمعية املرئية.
علدددع الدددرغم مدددك أند ده مدددك الصدددعب تطدددوير مثدددل اد د ا ال ندددام باادددتمدام Javaحاليد دا،
دددإن اإلصددددارات املسدددتقبلية قدددد تتسدددم بسدددرعة كا يدددة لتقدددوم بدد لك .مدددع ذلدددك ،يعدددد ادد ا
مثاالً يدا علع العمليات اليت تتعامل مع أ ااء خمتلفة مك ال نام .
علددددع الددددرغم مددددك ذلددددك ،وحتددددع يددددتم االاددددتفادة مددددك قددددوة تعدددددد العمليددددات بصددددورة
دددب علدددع األنظمدددة الددديت يدددتم تشدددغيل كدددود Javaعلي دددا أن تقدددوم كدد لك بددددعم كاملدددة،
العمليدددات .ونظدددرا ألن كدددل مدددك تعددددد امل دددام املدددوزع وتعددددد العمليدددات امدددا األادددام لكدددل
عمليدددات تطدددوير نظدددم التشدددغيل ايديثدددة ،دددإن غالبيدددة نظدددم التشدددغيل ادددو تكدددون ،يف
املسددددتقبل القريددددب ،أعلددددع مددددك املتواددددا .أمددددا بال سددددبة للوقددددر ايددددال ،ت ايددددد مددددك
إمكانيدددات تعددددد العمليدددات اخلاصدددة بدددد Javaعدددك ريد د اياكدددل الد د ظم الددديت يدددتم علي دددا
تشغيل .Java
لغة ديناميكية:
دددددب أن تتسدددددم كدددددل بيئدددددات عمليدددددات املعاذدددددة املوزعدددددة بالدي اميكيدددددة .وقدددددد ت
تصدددميم Javaلتت اادددب مدددع البيئدددات املتطدددورة .واد د اللغدددة قدددادرة علدددع دمد د اإلمكانيدددات
ال ظددددر عددددك املكددددان الدددد ع أتددددر م دددده ادددد اإلمكانيددددات -نظددددام اذ ديدددددة ،بغدددد
الكمبيوتر احملل أو الشبكات احمللية أو الشبكات وااعة ال طاق أو اإلنرتنر.
دددة، الددديت تددددعم اادددتمدام الكائ دددات ،كمدددا يف غالبيدددة بيئدددات ال يف بيئدددات C++
ددددون كددددل اددددطور الكددددود ب نفسددد م .وبدددددالً مددددك ذلددددك ،يعتمدددددون علددددع ال يكتددددب امل
موعدددة كدددبرية مدددك مكتبدددات الفئدددات لايدددادة إمكانيدددات الددد ام اخلاصدددة ب دددم .لدددو
كددددان املدد د م يريددددد أن يةددددي دعددددم إلمكانيددددة مددددا ،مثددددل القدددددرة علددددع تشددددغيل صددددور
الفيديو ،إنه ببسا ة يدم مكتبة ئات ديدة ميك ا معاذة ا امل مة.
األحيدددان ،يدددتم توزيدددع اد د املكتبدددات بطدددرق ال ميكدددك للمد د م الدددتحكم يف بعد د
ب دددا ،مثلمدددا ودددد مدددع نظدددام التشدددغيل أو بيئدددة ال وا ددد .يف اددد ايددداالت ،رمبدددا تصدددل
رصدددة إعدددادة جتميدددع ال ندددام ددددي املكتبدددات للعميدددل قبدددل أن يتدددا للمد د م عمليدددات
باادددتمدام ا .وع ددددما يشدددغل العميدددل نسدددمة قدميدددة مدددك م دددت املد د م ،ووددداو أن يددددم
مكتبددددة حمد ددددة مثددددل ادددد ،يكددددون ا ددددا احتمددددا حدددددو املشددددكالت .ونظددددرا ألن
مدددع انيدددة للتعامدددل مدددع مكتبدددة الفئدددات احملد دددة ،مدددك احملتمدددل أن يتوقد د ال ندددام
عك العمل.
دددد أن دددإذا قارندددا بددد إمكانيدددات C++احملددددودة يف اددد ا اجملدددا وبددد لغدددة ،Java
لغدددة Javaقدددادرة علدددع دمد د مكتبدددات الفئدددات اذديددددة والعمليدددات ومدددتغريات الكائ دددات
ديدددد ظدددام .كمدددا ميكدددك للغدددة Java أ ددداء وقدددر التشدددغيل ،بددددون اخلدددو مدددك توقد د ال
عددددل مددددك ددددا نددددوع الفئددددة وإمكانيات ددددا أ دددداء وقددددر التشددددغيل مددددك خددددال االاددددتعالم،
ئدددددات ديددددددة أو إيقدددددا العمليدددددة ب كملددد د ا ب ددددداء علدددددع نتدددددائ اددد د املمكدددددك دمددد د
االاددددتعالمات .وادد د اإلمكانيددددات تةدد دف علددددع بددددرام Javaمسددددتوى مددددك املرونددددة أ دددداء
ة األخرى. قيقه مع غالبية لغات ال التشغيل ،األمر ال ع ال ميكك
الكلمات األساسية (املفتاحية) :Java Keywords
إن الكلمدددات األااادددية هلدددا مع دددع حمددددد بال سدددبة للمرت دددم .يوردددح اذددددو التدددال
true,كلمدددددات false, الكلمدددددات null الكلمدددددات األااادددددية يف لغدددددة ،Javaال تعتددد د
أااادددية .ال ميك دددك اادددتمدام أع مدددك الكلمدددات السدددابقة يف تسدددمية الفئدددات أو الطدددرق
تددددوع علددددع مع ددددع حمدددددد لكددددل دددددر اإل ددددارة أن لغددددة Javaال أو املددددتغريات .كمددددا
const,كلمدددات أااادددية ،علدددع الدددرغم مدددك أن دددا كلمددديت goto الكلمدددات األااادددية؛
تستمدم حتع اآلن.
ادد د بدأ يف ادد د ا الفصددددل بكتابددددة أو برنددددام ل ددددا بلغددددة ،Javaوادد د عمد إىل كتابددددة
عدددددة نسدد د مددددك ادد د ا ال نددددام ب ددددد التدد د قلم مددددع أاددددلوب كتابددددة بددددرام ،Javaومددددك
الطبيعدد د أال نسددددتطيع مددددك البدايددددة اإلحا ددددة بكددددل دقددددائ ع اصددددر اللغددددة ،لدد د ا ادد د عود
لدرااة تلك الع اصر بالتفاصيل يف الفصو التالية -بإذن اهلل.
ددددددب االنتبددددددا إىل أن لغددددددة Javaذيحددددددا بشدددددددة بددددد ايددددددرو الصددددددغرية ملحوظي ي ي
وايددددرو الكددددبرية ،لدد د ا ن صددددح بددددالتحق دائمدد دا مددددك حالددددة األحددددر يف
ال ام املكتوبة.
للغة :Java ال نام التال بااتمدام أع حمرر نصو ميك ك البدء بكتابة ن
class Welcome1
{ // main method begins execution of Java application
) public static void main( String [] args
{
;) "!System.out.println( "Welcome to Java Programming
} // end method main
} // end class Welcome1
فددددرب ادد د ا ال نددددام يف ملدد د ومددددل االمتددددداد java.مددددثالً .Welcome1.java :إذ لددددك قددددم
ي ته باالمتداد java.كاملة غري م قوصة. يتم ترمة ا ا املل إذا
حتليل الربنامج:
ئدد د ًة ديدددددةً لتةددددا إىل يبدددددأ ال نددددام بالكلمددددة classالدددديت تعددددم أن ددددا ادد د عر
ئدددات ،Javaويلد د اد د الكلمدددة اادددم الفئدددة والد د ع ادددو اادددم ال ندددام ،و دددب أن ن خد د
بع االعتبار املالحظات التالية:
مدددل اد د الفئدددة اادددم امللد د ولكدددك بغدددري االمتدددداد java.املو دددود يف اادددم دددب أن •
املل اياوع.
الكلمتدددددددان Welcome ذيدددددددا لغدددددددة Javaبددددد د األحدددددددر الصدددددددغرية والكدددددددبرية، •
وتدددوع السدددطر الثدددان علدددع تعليددد ،وادددو الددد ع يبددددأ بددداحملر « »//وميتدددد التعليددد
حتدددع ن ايدددة السدددطر .والتعليد د ادددو عبدددارة عدددك تورددديح للمد د م يت االددده املرت دددم .ميكدددك
السدددطر الثالد د مدددك ال ندددام ادددو السدددطر األو يف تعريد د الفئدددة ،واذددداء األاااد د
يه او:
واددددو عبددددارة عددددك تعريدد د ملددددا يسددددمع ريقددددة ،methodوالطريقددددة ادد د ببسددددا ة وظيفددددة
ت تمدد د إىل ئددددة مددددا ،وت خدد د ادد د الوظيفددددة ع ددددد ت فيدد د اا واددددطاء مددددك أادددداط حمددددددة
وتعيددددد قيمددددة مددددك اددددا حمدددددد أيةدد دا ،الكلمددددة mainذثددددل ااددددم ادد د الطريقددددة أو
الوظيفددددة الدددديت ادد د عر ا الحقًدد دا ،والكلمددددة voidتعدد د عددددك اددددا القيمددددة الدددديت تعيددددداا
الطريقدددة ،واد د ا دددا «ال د د ء» .الطريقدددة mainا دددا لدددك تعيدددد ع دددد ت فيد د اا أيدددة قيمدددة،
د د لدددك تسدددتمدم ب دددد ايصدددو علدددع قيمدددة مدددا وإادددا ملدددا ادددتىلديه مدددك ك دددار وبالتدددال
انبية ذات صلة مبحيا العمل.
توردددع وادددطاء الطريقدددة عدددادة بددد القواددد )( ولكدددل واددديا اادددم يسدددبقه ادددا اددد ا
ددددا السدددداب ت خدد د الطريقددددة mainوادددديطًا أتدددده argsمددددك الدد د ما الوادددديا ،ويف برنا
][ .String
رى ،التصددددريح عددددك وادددديا الطريقددددة main -ددددرع غالبددددا ،كمددددا ادددد تلمي ي ي ي ي ي ي
بالصيغة:
][ String args
أو
String [] args
وكالامدددا مقبدددولت ،إال أنددده مدددك ال احيدددة العمليدددة يبددددو اادددتمدام الصددديغة
األوىل أكثر يوعا ،علما ب ن الطريقة الثانية تبدو أكثر م طقية.
ردددددروريا أن نطلدددد االادددددم argsعلدددددع ادددد ا الواددددديا -وباملقابدددددل ،لدددددي
وميكدددددك اادددددتمدام أع اادددددم دددددريطة أن ال يبددددددأ بدددددرقم ،كمدددددا أن دددددو
االام غري حمدود.
ذثدددل كدددل مدددك الكلمدددت publicو staticصدددفةً مدددك الصدددفات املميددداة للطريد د ،الصدددفة
publicتعدددم أنددده بإمكدددان مفسحدددر Javaكمدددا بإمكدددان كدددل الفئدددات األخدددرى اادددتدعاء
اد د الصدددفة ال يعدددم و دددود أخطددداء قواعديدددة يف ال ندددام إال أنددده اد د الطريقدددة ،وحد د
وددددددو دون ت فيددددد املفسحددددددر هلددددد الطريقددددددة ،ويف الواقددددددع ميكددددددك القددددددو أن الوظيفددددددة
األاااددددية للمفسحددددر اددد ت فيددد الطريقددددة .mainفددد حالددددة غيدددداب الطريقددددة mainوددددو
ذلدددك دون ت فيد د ال ندددام .ولكدددك غياب دددا ال ميثدددل خطًد دا وإادددا اخلطد د يف حماولدددة ت فيد د
دددد ذات دددا برنا ًد دا ت فيد د يا بد دل برندددام ك د د ا ،إذ قدددد حنتدددا لرتمدددة ئدددة ال تشدددكل
ع صرا تستمدمه تطبيقات وبر يات أخرى.
لدددد ا مع دددددع أكثدددددر تعقيددددددا ادددد رت تورددددديحه إىل صدددددو الحقدددددة. أمدددددا الصدددددفة static
ئددد ًة Java دددب أن يتةدددمك أع تطبيددد يددد مدددا ادددب وبشدددكل عدددام ميكدددك تلمدددي
واحد ًة علع األقل:
ذتلدددك كدددل ريقدددة سدددما يبدددد بددداحملر «{» الددد ع وددددد بدايدددة كتلدددة الطريقدددة،
ا الكتلة باحملر «}». و ب أن ت ت
يشددددكل سددددم الطريقددددة ،mainواددددو يتدد د ل ا ددددا مددددك ااددددتدعاء السددددطر اخلددددام
لطريقددددة مددددع وادددديط ا ،واددد الطريقددددة printlnالدددديت ت خددد وادددديطًا مددددك الددد ما السددددلة
ددددرى اخلددددر القياادد د مسددددبوقًا مبحددددر االنتقددددا إىل حمر يددددة لتظ ددددر قيمتدددده علددددع
اطر ديد ،ويكتب وايا ا الطريقة ب القوا )(.
دددب وردددع السالادددل احملر يدددة أو العبدددارات ال صدددية بد د عالمددديت اقتبدددام ملحوظي ي ي
مادو ت "" للداللة علع أن ا القيمة ا السلة حمر ية ابتة.
ددددب أن نر ددددد إلي ددددا ،إذ يسددددتطيع مفسددددر Javaااددددتمدام الطريقددددة println ولكددد
ال ميكددددك أن تتوا ددددد ددددرق Javaإال رددددمك كائ ددددات ،Objectsالدددديت ميكددددك أن تكددددون
ئددددةً أو أمثدددداالً instancesمددددك ئددددات ،والطريقددددة printlnت تمدددد للفئددددة outالدددديت ت تمدددد
بدوراا إىل الفئة .System
ميكددددك ايصددددو علددددع معلومددددات كاملددددة عددددك ئددددات Javaالقيااددددية بددددالر وع إىل
باللغددددددة ،وذلددددددك بفددددددتح امللددددد index.htmlاملو ددددددود يف اجمللددددددد دددددداء التو يددددد اخلددددددا
،docs/apiويب الشكل التال عررا لتو ي معلومات) الفئة :System
انت ددددع بدددداحملر «;» اصددددلة م قو ددددة ،والدددديت ددددب مالحظددددة أن السددددطر اخلددددام
تشدددري إىل انت ددداء التعليمدددة ،وتعتد د الفاصدددلة امل قو دددة ردددرورية ددددا بعدددد كدددل تعليمدددة يف
برام .Javaويىلدع غياب ا إىل إظ ار خط قواعدع أ اء الرتمة.
ترمجة الربنامج:
قبددددل ت فيددد ال نددددام السدددداب ،البددددد مددددك ترمتدددده أوالً ،ويددددتم ذلددددك بتشددددغيل املرت ددددم
javaبكتابة األمر:
javac Welcome1.java
java Welcome1
باللغدددة Javaلكتابدددة الد د ام ،ادددتظ ر بعد د خدددا ع دددد اادددتمدام حمدددرر نصدددو
يدددداة ،كدددداللون األزرق للكلمددددات املفتاحيددددة للغددددة ،Javaواألخةددددر الكلمددددات بدد د لوان
للتعليقدددددات وغريادددددا ،ويسددددداعد حمدددددرر اللغدددددة علدددددع إكتشدددددا األخطددددداء اإلمالئيدددددة دددددور
حدو ا.
لرتمدددة ال ندددام بعدددد حفظددده باالمتدددداد java.قدددم بدددال قر علدددع األمدددر « »compileمدددك
القائمددددة « »Buildأو الةددددغا علددددع املفتددددا « »F7يددددتم الرتمددددة لتظ ددددر الراددددالة التاليددددة يف
حالة خلو ال نام مك األخطاء:
الفاصددددلة أمددددا يف حالددددة و ددددود أخطدددداء تظ ددددر راددددالة كالتاليددددة والدددديت تعددد عددددك حددد
امل قو ة مك السطر اخلام :
ميكددددك باعددددة العبددددارة السددددابقة بعدددددة ددددرق ،علددددع اددددبيل املثددددا ال نددددام التددددال
ال ع يستمدم التعليمت :print, println
Welcome
to
Java
Programming !
يعددد د ايدددددر « »\nعدددددك «السدددددطر اذديدددددد» وتسدددددمع اددد د ال وعيدددددة مدددددك احملدددددار
السلسددددلة بددددد«االاددددل اهلددددروب» ،فدددد كددددل مددددرة تظ ددددر ي ددددا السلسددددلة « »\nيف ندد د
املطلددددوب باعت ددددا ،يددددتم ورددددع املىل ددددر يف بدايددددة السددددطر التددددال .للحصددددو علددددع اددددطر
ددددارو ،نقددددوم بكددددل بسددددا ة بااددددتمدام حددددريف «اددددطر ديددددد» خلدد د بعةدد د ما الددددبع .
ا ورد ا ا بعةا مك االال اهلروب الشائعة يف اللغة:
وظيفتها س س ة اهلروب
اطر ديد ،ورع املىل ر يف بداية السطر التال \n
ريددددك املىل ددددر مسددددا ة 5مسددددا ات ارغددددة مسددددا ة اذدولددددة األ قيددددة،
\t
لألمام
االنتقا إىل صفحة ديدة \f
إعددددادة املىل ددددر ،carriage returnورددددع املىل ددددر علددددع بدايددددة السددددطر
\r
ايال دون التقدم للسطر التال
كاندددر الد د ام السددداب تتعامدددل مدددع دددرق اخلدددر األااادددية اخلاصدددة بال ظدددام واد د
»Characterوادددو نظدددام صدددية User Interface CUI مدددا تسدددمع بدددد«وا دددة املسدددتمدم ال
يسددددتمدم ا ددددة اددددوداء نصددددية إلدخددددا األوامددددر إىل الكمبيددددوتر واددددو نظددددام غددددري مددددريح
ألنه ال يو ر أع اذبية للتطبي .
Graphical User ذتلددددك لغددددة Javaنظامدد دا كخددددرا واددددو «وا ددددة املسددددتمدم الراددددومية
موعدددة مدددك األدوات تتددديح للمسدددتمدم التفاعدددل مدددع ال ندددام »Interfaceيسدددتمدم GUI
موعدددة مثدددل ال وا د د والقدددوائم واألزرار .ولب ددداء وا دددة املسدددتمدم الرادددومية GUIحنتدددا
خمتلفددددة مددددك األدوات ،وادد د تطرق ا ددددا إلنشدددداء وا ددددات GUIبااددددتمدام مكتبددددة أدوات
الددددددد ،Swingإذ ا سددددددتمدم أداة صددددد ادي الراددددددائل ،JOptionPaneالدددددديت تقددددددوم بإظ ددددددار
توع نصا حندد مسبقًا .واملثا التال لتوريح ذلك: مربع حوار تظ ر يه راالة
JOptionPane.showMessageDialog( null,
;) "!"Welcome\nto\nJava\nProgramming
دددا قم دددا التوضي ي تسدددتمدم تعليمدددة importالادددترياد مكتبدددة ئدددات معي دددة ،فددد برنا
باادددددددترياد الفئدددددددة JOptionPaneمدددددددك ايامدددددددة Packageاملسدددددددماة javax.swingوبددددد د لك
ميك ددددددددا الوصددددددددو إىل كددددددددل ددددددددرق الفئددددددددة javax.swing.JOptionPaneدون ايا ددددددددة
السدددداب ولكددددك دون لتحديددددد مسددددار الوصددددو كددددامالً .ال نددددام التددددال وقدد د نفدد د
ايا ة الاتمدام التعليمة :import
javax.swing.JOptionPane.showMessageDialog( null,
الواددديا الثالدد ادددو ع دددوان مربدددع ايدددوار والواددديا الرابدددع عبدددارة عدددك رقدددم يعدد عدددك ندددوع
مربع ايوار واذدو التال يورح بعةا مك اياالت:
JOptionPane.showMessageDialog(null, "2",
"titel",JOptionPane.INFORMATION_MESSAGE );
JOptionPane.showMessageDialog(null, "3",
" titel",JOptionPane.WARNING_MESSAGE );
JOptionPane.showMessageDialog(null, "4",
" titel",JOptionPane.QUESTION_MESSAGE );
JOptionPane.showMessageDialog(null, "5",
" titel",JOptionPane.PLAIN_MESSAGE );
System.exit( 0 );
}
}
:حجز املواقع يف الذاكرة وختصيص قيم هلا
كدددرة ح دددا مواقدددع يف الد د اكرة لتمدددايك قددديم معي دددة عدددك يسدددتمدم ال ندددام التدددال
كمددددا وتددددوع ال نددددام علددددع،»Variables )ريددد مددددا يسددددمع بالددددد«املددددتغريات املتحددددوالت
:رق إدخا بيانات مك املستمدم لتماي ا
import javax.swing.JOptionPane;
public class Addition {
public static void main( String args [] )
{
int number1; // first number to add
int number2; // second number to add
// add numbers
sum = number1 + number2;
// display result
JOptionPane.showMessageDialog( null, "The sum is " +
sum, "Results", JOptionPane.PLAIN_MESSAGE );
int؛ عدددددك ريقدددددة التصدددددريح عدددددك املدددددتغري number1الدددد ع السدددددطر number1 يعدددد
ادددديحمل بيانددددات مددددك الدد د ما intأع عدددددد صددددحيح .واملددددتغري Variableعبددددارة عددددك ااددددم
مكان لتمايك البيانات يف ذاكرة الكمبيوتر.
يدد د ديددددد مورددددع يف الدد د اكرة نقصددددد بعبددددارة «التصددددريح عددددك املددددتغري» عمليددددة
التصددددريح صدد د ميكددددك أن خنددددان يدددده قيمددددة ليددددتم ااددددتمدام ا مددددك قبددددل ال نددددام .
التال :
;int number1
;int number2
دددان بياندددات نصدددية أع االادددل حمر يدددة مثدددل يعد د عدددك مدددتغريات ادددو ما String الد د
العبارة «.»welcome
ميكدددددك الادددددم املدددددتغري أن يتكددد دوحن مدددددك أع عددددددد مدددددك األحدددددر واألرقدددددام •
دددر السدددطر دددر .كمدددا ميكدددك أن يبددددأ بالعالمدددة البدددد أن يبددددأ االادددم •
الدددة األحدددر ، حالدددة األحدددر ،كمدددا علم دددا ادددابقًا دددإن لغدددة Javaتتد د ر •
كمدددا ميكدددك أن تتوا دددد التصدددروات يف أع مكدددان مدددك سدددم الطريقدددة بشدددرط أن
يدددتم التصدددريح عدددك املدددتغري قبدددل اادددتمدامه .تو دددد أاددداط كدددثرية للبياندددات ادددو نتطدددرق
هلا بعد توريح املثا ايال .
العبارة التالية:
(firstNumber = JOptionPane.showInputDialog
;) ""Enter first integer
اي ددددا يف مربددددع حددددوار يطلددددب مددددك املسددددتمدم إدخددددا قيمددددة مددددا ليددددتم تسددددتمدم لعددددر
املتغري.
دددايك القيمدددة املدخلدددة علدددع أن دددا السدددلة نصدددية Stringولدد لك نالحدددرب أن ندددوع املدددتغري يدددتم
الد د ع يسدددب إ دددارة اإلاد د اد =) ادددو مدددك الد د ما .Stringيف حالدددة إاد د اد قيمدددة مدددك ادددا
معددد إىل مددددتغري مددددك اددددا كخددددر ددددإن املرت ددددم يعتددد ذلددددك خطًدددا ويقددددوم بإصدددددار راددددالة
دددايك القيمدددة املدخلدددة يف املدددتغري املسد د د إليددده. اخلطًد دا .بعدددد ال قدددر علدددع الدددار « »Okيدددتم
علمد دا بد د ن البياندددات اد د بياندددات نصدددية أع ال ميكدددك إ دددراء العمليدددات ايسدددابية علي دددا.
ددددايك ادد د البيانددددات علددددع مددددتغريات صددددحيحة ليددددتم إ ددددراء ولدد د لك إن ددددا حنتددددا إألى
العمليدددات ايسدددابية علي دددا ،ولكد د خندددان ادد القددديم يف مدددتغري صدددحيح إن دددا حنتدددا إىل
« »7يددددتم ويددددل البيانددددات ال صددددية إىل مقابلدد د ا الصددددحيح ،مددددثالً الدد د إ ددددراء عمليددددة
ويله إىل الرقم .7وإل راء عملية التحويل نستمدم العبارة التالية:
تقددددددوم اددددد الطريقددددددة parseIntواملو ددددددودة رددددددمك الفئددددددة Integerب خددددد قيمددددددة نصددددددية
اي ددددا يف املددددتغري و ويلدد د ا إىل املقابددددل الصددددحيح هلددددا وتعيددددد القيمددددة الصددددحيحة ليددددتم
ي ميك ا إ راء العمليات ايسابية علي ا. الصحيح ،number1
تقوم التعليمة:
و ددددر اإل دددارة ا دددا إىل اادددتمدام الرمدددا )+للدددربا بدددك السالادددل ال صدددية أو مدددا يسدددمع
عملية الوصل.
موعددددة مددددك أنددددواع البيانددددات األاااددددية ا ورددددح ا يف اذدددددو ذتلددددك لغددددة Java
التال :
ا جم يف القيمة
الن اق املسموح به النوع
الذاكرة اا رتا ية
8 bit's مك 128-إىل 127 0 byte
16 bit's مك 32768-إىل 32767 0 short
32 bit's مك 2147483647-إىل 2147483648 0 int
مددددددددددددددك 9.223.372.036.854.775.808-إىل
64 bit's 0l long
9.223.372.036.854.775.807
NaNوقددددديم ن ائيدددددة )(Not-a-Number
اددددددددددددددددددددددالبة وال ن ددددددددددددددددددددددائ اددددددددددددددددددددددالب
32 bit's )NEGATIVE_INFINITYوصدددددددددفر ادددددددددالب 0.0f float
وصددفر مو ددب وقدديم ن ائيددة مو بددة وال ن ددائ
مو ب )POSITIVE_INFINITY
ا جم يف القيمة
الن اق املسموح به النوع
الذاكرة اا رتا ية
مك ±1.4E-45إىل ±3.40282347E38
NaNوال ن ددددائ اددددالب وقدددديم ن ائيددددة اددددالبة
وصددددفر اددددالب وصددددفر مو ددددب وقدددديم ن ائيددددة
64 bit's مو بة وال ن ائ مو ب 0.0d double
مددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددك ±4.9E-324إىل
±1.797931348623157E308
مددددددددددك 0إىل 65535أو مددددددددددك ' '\u0000إىل
16 bit's ''\u0000 char
''\uffff
1 bit falseوtrue false boolean
0 bit void
كمدددددا أ دددددرنا ادددددابقًا دددددإن الطريقدددددة القياادددددية للتصدددددريح عدددددك املدددددتغريات تكدددددون
بالشكل التال :
;]]…typename varname1[,varname2[,
;varname1 = value
;iCounter = 1
;fSalary = 3.121
;bTest = false
;'cTime = 'a
كمدددا تو دددد حالدددة خاصدددة لتمدددايك املعلومدددات يف املدددتغري واددد وقدددر التشدددغيل واددد
ايالددة تعتمددد علددع وظددائ التمددايك مثددل الدديت تعرردد ا هلددا يمددا اددب والكددثري الكددثري
غرياا:
(firstNumber = JOptionPane.showInputDialog
;) ""Enter first integer
العمليات احلسابية :Arithmetic
طريقة الت بري حسب طريقة الت بري ا ربي الرمك اسم ال م ية
Java ا سابي
x + y x+y + اذمع
m - 6 m-6 - الطر
2 * x 2x * الةرب
x
x / 3 x÷3 or or x/3 / القسمة
3
6 % 2 6 mod 2 % باق القسمة
الصحيحة
تقدد ديم يف ال ايددددة ،إذا و دددددت عدددددة عمليددددات م ددددا علددددع نفدد د + or
اذمع أو الطر -
املستوى إن ا تقيم مك اليسار إىل اليم .
اادددتع ا،قدددم بت فيدد ادد ا ال ندددام الدد ع يوردددح اادددتمدام عمليدددات املسددداواة واملقارندددة
: واو نتطرق إلي ا بالتفصيل يف الفصو التاليةif يف ا ا ال نام بالعبارة
import javax.swing.JOptionPane;
public class Comparison {
public static void main( String args [] )
{
String firstNumber; // first string entered by user
String secondNumber; // second string entered by user
String result=""; // a string containing the output
int number1; // first number to compare
int number2; // second number to compare
if ( number1 == number2 )
result = result + number1 + " == " + number2;
if ( number1 != number2 )
result = result + number1 + " != " + number2;
// Display results
JOptionPane.showMessageDialog( null, result,
"Comparison Results",
JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
}
}
،دددرع علي مدددا عمليدددات املقارندددة دددم يطلدددب م دددك ال ندددام السددداب إدخدددا قيمدددت
: مثالً التال،ليطبع يف ال اية توريح ياالت املقارنة ال اجتة
;"s = s + "abc
;x = x + 5
املددددتغري ،مددددثالً إذا وادد د عبددددارة عددددك عمليددددة إادد د اد قيمددددة إىل القيمددددة اياليددددة يف نفدد د
اعت نا املثا التال :
;int x = 1
;x = x + 5
دددإن املدددتغري xاددديحمل القيمدددة ،6ألن دددا زدندددا علدددع قيمتددده املقددددار 5دددم خاندددا ال دددات يف
يع عك عملية الوصل. املتغري ،xالرما +ع د التعامل مع ال صو
وادددد اختصدددددار لعمليدددددات إادددد اد قيمدددددة لقيمدددددة املدددددتغري نفسددددده واملوردددددحة يف الفقدددددرة
السابقة:
;"s = s + "abc
;x = x + 5
مددددثالً ادد د ايددددالت ميكددددك التعددددبري ع مددددا يف حالددددة عمليددددات اإلادد د اد املمتصددددرة
كالتال :
;"s += "abc
;x += 5
تقدددوم العمليدددة = +بإردددا ة قيمدددة التعدددبري املو دددود علدددع ميي دددا إىل قيمدددة املدددتغري املو دددود
دددان ال تي دددة يف املدددتغري املو دددود علدددع اليسدددار .بشدددكل عدددام ميكدددك علدددع يسددداراا دددم
كتابة أع تعليمة مك الشكل التال إىل تعليمة إا اد خمتصر:
ويوردددددح اذددددددو التدددددال عمليدددددة اإلادددد اد ايسدددددابية مدددددع أمثلدددددة علي دددددا و دددددروح ا.
أن لدي ا: بفر
;c += 5
;) System.out.println( c
;c -= 2
;) System.out.println( c
;c *= 4
;) System.out.println( c
;c /= 8
;) System.out.println( c
;c %= 3
;) System.out.println( c
}
}
8
6
24
3
0
عمليات الزيادة واإلنقاص بواحد :Increase & Decrement Operators
;c = 5
;) " " System.out.print( c +
;) " " System.out.print( ++c +
;) " " System.out.print( c +
;)(System.out.println // skip a line
;c = 5
c = 5;
System.out.print( c + " " );
System.out.print( --c + " " );
System.out.print( c + " " );
}
}
5 5 6
5 6 6
5 5 4
5 4 4
متارين الفصل الثاين:
كلمة يف اطر.
د قيمة حاصل ررب املتغرييك xو yإىل املتغري z اا •
التصريح عك متغرييك حقيقي xو yيس د للمتغري األو القيمة 3.5 •
. 6أكتدددب برندددام ي خددد مدددك املسددددتمدم عددددديك ،ددددم يطبدددع األكددد بي مدددا علددددع
يطبع العبارة «.»there numbers are equal الشا ة .أما إذا كانا متساوي
أكتدددب برندددام ي خد د مدددك املسدددتمدم ال دددة أعدددداد صدددحيحة ،دددم يقدددوم بطباعدددة . 7
داءاا وقيمة أصغر عدد وقيمة أك عدد بي ا. موع ا ومتواط ا ونات
. 8أكتدددب برنا ًد دا يقدددرأ مدددك املسدددتمدم نصد د قطدددر الددددائرة دددم يطبدددع قيمدددة قطدددر
الدائرة ،حميط ا ومساحت ا.
أكتددددب برنا ًدددا يقددددرأ مددددك املسددددتمدم عدددددديك ددددم يطبددددع يمددددا إذا كددددان العدددددد. 11
.الثان مك مةاعفات األو أم ال
xVal = JOptionPane.showInputDialog(
"Enter first integer:" );
yVal = JOptionPane.showInputDialog(
"Enter second integer:" );
zVal = JOptionPane.showInputDialog(
"Enter third integer:" );
x = Integer.parseInt( xVal );
y = Integer.parseInt( yVal );
z = Integer.parseInt( zVal );
result = x * y * z;
JOptionPane.showMessageDialog( null,
"The product is " + result );
System.exit( 0 );
}
}
األااادددديت يف بددددرام .Javaكمددددا الحظ ددددا يمدد دا اددددب ،تعتدد د تطبيقددددات Javaأ ددددبه
بتطبيقدددات ادددطح املكتدددب العاديدددة املعرو دددة ،علدددع الدددرغم مدددك أن دددا تتطلدددب و دددود بيئدددة
وقدددر التشدددغيل اخلاصدددة بلغدددة Javaليدددتم اادددتمدام ا كمدددا ادددو ايدددا يف ال مي يدددات،
يدددتم تصدددميم ا للعمدددل مدددك ال مي يدددات ،appletsدددإن تطبيقدددات Java وعلدددع ال قدددي
يددددات applets علددددع اإلنرتنددددر أو ليددددتم تشددددغيل ا علددددع ددددبكة الويددددب .ت تصددددميم ال مي
يد د يدددتم تشدددغيل ا ك ددداء مدددك صدددفحة الويدددب .وهلد د ا ،يدددتم للتعامدددل علدددع الشدددبكات
ددداءا ال اإل دددارة إلي دددا علدددع أن دددا حمتويدددات قابلدددة للت فيد د .وعلدددع الدددرغم مدددك أن دددا تعتد د
يت ددداأ مدددك صدددفحات الويدددب مثدددل أع حمتويدددات أخدددرى مو دددودة يددده ،إال أن دددا تعتدد مبثابدددة
برام صغرية ميكك تشغيل ا مثل غرياا.
Netscape تتطلدددددب ال مي يدددددات متصدددددفحا ميك ددددده التعامدددددل مدددددع لغدددددة Javaمثدددددل
بدايدددة Navigatorبدايدددة مدددك اإلصددددار رقدددم 2ومدددا يليددده) أو املتصدددفح Internet Explorer
دددب أن يدددتم ت ايلددده مدددك علدددع اإلنرتندددر إلراددداله إىل مدددك اإلصددددار رقدددم 3ومدددا يليددده) ألنددده
بيئة وقر التشغيل اخلاصة بد Javaاخلاصة باملتصفح ليتم تشغيل ا.
تتطلددددب ال مي يددددات الدددديت تسددددتفيد مددددك السددددمات اذديدددددة اخلاصددددة بددددد ملحوظي ي ي ي
Javaمثدددددل وا دددددات االادددددتمدام الرادددددومية )Swingبدددددرام ملحقدددددة 2
ددددوارق ناجتددددة عددددك بيعددددة ال مي يددددات ،مددددك حيددد أن ددددا ت فددد انطالقًدددا مددددك •
صفحات الويب.
موعددددة مددددك األعمددددا اددد ورد ا ددددا بعةدددا مددددك ال مي يددددات الدددديت ت تصددددميم ا ألداء
ددددا نورددددح لعبددددة Tic-Tac-Toe املت وعددددة لتتةددددح مدددددى أاميددددة وإمكانيددددات ال مي يددددات ،ا
ت تصميم ا ك مي :Java
التوض ي اهلدددد األااادد مدددك ادد ا الدد مي ادددو باعدددة عبدددارة الرتحيدددب .يف البدايدددة قم دددا
بااددددترياد الفئددددة Graphicsمددددك ايامددددة java.awtحيدد د تسددددتمدم ادد د الفئددددة يف عمليددددة
الرام والتلويك علع الشا ة.
وااددددددترياد الفئددددددة JAppletمددددددك ايامددددددة javax.swingوذلددددددك ألن ددددددا ادددد د عل برمي ددددددا
أع مشتقًا م ا). كامتداد للفئة JApplet
موعددددة مددددك البيانددددات والعمليددددات املو ددددودة يف الفئددددة أع أن ادد د الفئددددة اتشددددتمل علددددع
موعدددات الفئدددات الددديت تسدددمح بتشدددغيل كدددل appletداخد دل تدددوع علدددع JAppletوالددديت
صفحة الويب.
ريقدددددة تدددددابع) واحددددددة ادددد paintوالددددديت ذتلدددددك واددددديطًا ميتلدددددك الدددد مي السددددداب
واحدددددا واددددو كددددائك مددددك الفئددددة .Graphicsتعتدد د ادد د الطريقددددة ادد د األداة الرئيسددددية يف
إرددددا ة احملتددددوى علددددع السددددطح .إن كددددائك ئددددة الراددددومات Graphicsاملُمددددرر إىل الطريقددددة
إىل إ ددددار الدد د مي .تعدد درح الفئددددة Graphicsأوامددددر ملعاذددددة paintواملسددددمع gاددددو مقددددب
الصدددور ،كددداألمر ،drawstringيدددتم إرادددا نتائ دددا إىل اإل دددار مبا دددرة .كمدددا يتةدددمك
كائك الراومات معلومات عك اإل ار أيةا ،كح مه ومورعه ونوع خطه...
ا لدددددددة الحدددددددرب أن الطريقدددددددة paintال تكتدددددددب علدددددددع الشا دددددددة باادددددددتعما دالدددددددة
لددددد ،printlnبددددل تراددددم بااددددتعما الطريقددددة drawstringمددددك الفئددددة ،Graphicsكمددددا قم ددددا
بتوريحه يف ال مي الساب :
الواددددديا األو هلددد د الطريقدددددة ادددددو السدددددلة نصدددددية ،بي مدددددا الثدددددان والثالددد د امدددددا
اإلحددددددا يات األ قدددد xوالعمدددددودع yالددددديت يدددددتم رادددددم السلسدددددلة ع دددددداا .اإلزاحدددددة xادددد
مقيدددام البعدددد عدددك ايا دددة اليسدددرى لإل دددار .واإلزاحدددة yاددد مقيدددام البعدددد عدددك حا دددة
أعلع اإل ار.
)(0, 0 احملور X
)(x, y
احملور Y
تنفيذ الربميجيات:
بعدددد حفدددرب الكدددود السددداب يف ملد د قدددم برتمتددده كمدددا عمل دددا ادددابقًا) ليدددتم إنشددداء
تددددا إىل إنشدددداء صددددفحة ملدددد class.بلغددددة .bytecodeلت فيدددد الدددد مي مددددك املتصددددفح،
).HTML (HyperText Markup Language
><html
"<applet code = "WelcomeApplet.class" width = "300
>"height = "45
></applet
></html
يف الواقدددددع ،ميك دددددك اددد د املدددددرة باالادددددم WelcomeApplet.html احفدددددرب اددد د ا امللددد د
املددددا كددددان ي ت دد د باالمتدددددادhtml.؛ مددددك غددددري الةددددرورع أن ااددددتعما أع ااددددم تريددددد
يتطاب اام صفحة htmlمع اام الفئة).
الويدددب لدددديك والدددداعم للدددد Javaواددديكون قدددم بتشدددغيل اد د ا امللد د يف برندددام مسدددتعر
املظ ر كالتال :
تو دددد ريقددددة أخدددرى لتشددددغيل الددد مي بددددون ايا ددددة ملتصددددفح الويدددب وذلددددك باالاددددتعانة
باألداة ،AppletViewerبعد كتابة مل htmlأكتب السطر التال :
appletviewer WelcomApplet.html
ذتلدددددك اددد د ال ا ددد د ة قائمدددددة تسدددددمع Appletوتسدددددتمدم ألداء األعمدددددا اخلاصدددددة ب ددد د ا
ال مي ميك ا ااتمدام األمر Quitإلغالق ال ا ة مثالً.
توضي ي بال سدددبة مللد د HTMLالسددداب ال يتطلدددب م دددك خد د ة يف لغدددة HTMLولد د ا ا وردددح
األ دددياء اهلامدددة الددديت تع ي دددا ا دددا :يشدددري الوادددم العالمدددة) > <htmlإىل بدايدددة دددفرة بعد د
إلرددددا ة تعليمددددات لت فيدد د بددددرمي Javaرددددمك مسددددت د htmlعلي ددددا كتابددددة اددددطر ددددبيه
بالتال :
اددددو ااددددم امللدددد ايدددداوع علددددع الشددددفرة البايتيددددة للدددد مي املطلددددوب applet.class حيدددد
ددددددب االنتبددددددا لواددددددم ال ايددددددة > .</appletإن الواددددددائا األاااددددددية الثال ددددددة تشددددددغيله،
امل كورة يف السطر الساب هلا وظائ حمددة ا :
ال مي ولكك بااتمدام كائك الع وان :Label وا ا مثا كخر علع نف
;import java.awt.Label
;import java.applet.Applet
وتددددوع الددد مي علددددع ددددرق methodsيددددتم ااددددتدعاااا تلقائيدددا مددددك قبددددل املتصددددفح،
الع اصددددر الدد ديت ادد د مددددك ئددددة مكونددددات وا ددددات مددددثالً إذا أراد املدد د م إرددددا ة بعدد د
دددددداا مدددددك كتابدددددة الطريقدددددة )(init البدددددد ع User Interface املسدددددتمدم Components
ددددة حيدد د اددددتحتوع علددددع القدددديم البدائيددددة هلدد د الع اصددددر .ويددددتم ت فيدد د ادد د أ دددداء ال
الطريقدددددة يف بدايدددددة عمدددددل الددد د مي ،كمدددددا تو دددددد الطريقدددددة )( startوالددددديت ت فددد د بعدددددد
الطريقدددة )( initمبا دددرة ،ويف كدددل مدددرة ي تقدددل ي دددا الد د مي مدددك ايالدددة غدددري الفعالدددة إىل
ايالة الفعالة يتم ت في الطريقة )(.start
ع دددددد اادددددتمدام ال ندددددام appletviewerلت فيددد د الددد د مي ،ع دددددد القيدددددام توض ي ي ي
يدددددخل الدد د مي يف حالددددة عدددددم الفاعليددددة ولكددددك بتصددددغري نا دد د ة العددددر
ع دددد اادددتعادة ال ا د د ة تكبريادددا) اددديعود الد د مي إىل ايالدددة الفعالدددة .أمدددا
يف حالدددة اإلنرتندددر قدددد يدددرت املسدددتمدم إحددددى الصدددفحات الفعالدددة حاليد دا
ويد د اب إىل أخدددرى ويف اد د ايالدددة يكدددون الد د مي املو دددود يف الصدددفحة
السدددابقة قدددد دخدددل يف حالدددة الال عاليدددة ولكدددك ع دددد العدددودة إلي دددا ايت شدددا
ال مي مرة أخرى.
ومدددك الطدددرق أيةد دا الطريقدددة )( stopالددديت ميكدددك وردددع ا ردددمك الشدددفرة يف حدددا
ويلددددة .كمددددا يددددتم ت فيدد د ادد د الطريقددددة يرغددددب املدد د م أن تكددددون دورة حيدددداة الدد د مي
)(init
)(start )(start
)(paint
)(stop
)(destroy
)(x1, y1
)(x2, y2
احملور Y
مدددع عددددديك صدددحيح ادددو ك دددا يف الفصدددل السددداب قدددد تعررد د ا لتطبيد د يقدددوم
الوظيفة ولكك علع عدديك حقيقي : نقوم ا ا بعمل برمي ألداء نف
String secondNumber;
// second string entered by user
// add numbers
sum = number1 + number2;
} // end method init
: وع د ت في ال مي يظ ر التال
التوردددددديح :يف ادددد د ا الدددد د مي ت ااددددددترياد ايامددددددة javax.swingألن ددددددا ا سددددددتمدم
الوظيفددددددة showInputDialogاملو ددددددودة رددددددمك الفئددددددة JOptionPaneلقددددددراءة بيانددددددات مددددددك
املستمدم.
ميدددل الددد مي ويليددده يدددتم اادددتدعاء يدددتم اادددتدعاء الوظيفدددة )( initتلقائيدددا ع دددد بددددأ
الطريقدددددة )( paintلرادددددم اإل دددددار مدددددع حمتوياتددددده .وقدددددد اادددددتمدم ا ا دددددا وظيفدددددة رادددددم
(x,ميثدددل األولد د إحددددا يات أربعدددة وادددائا )y, w, h املسدددتطيل drawRectوالددديت ت خد د
و و املستطيل بالبكسل. نقطة بداية الرام ،والتالي ميثالن قيمة عر
)(x, y
(width,
احملور Y
)height
الطرق اخلاصة برام األ كا اهل داية: والشكل التال يورح كرة بع
تتطلدددب الطريقدددة الددديت اادددتمدم ااا إنشددداء ملد د HTMLمدددك أ دددل كدددل بدددرمي نريدددد
دددل نوعد دا مدددا دددإذا ك دددر تسدددتمدم برندددام appletviewerميك دددك ت فيد د ،وادددو أمدددر
HTML االعتمددداد علدددع إحددددى خواصددده لتسدد يل عملدددك ،مدددا ي دددم ادد ا ال ندددام مدددك امللدد
ادددو الوادددم > <appletويت اادددل كدددل د د ء مدددا عددددااا ،والادددتمدام اد د امليددداة ميك دددك
أن تةددددع يف بدايددددة برمي ددددك اددددطر تعليقددددات يتةددددمك كددددل واددددومات HTMLالةددددرورية
كما يف املثا التال :
// <applet code = "myApp" width = "200" height = "150">
// </applet>
public class myApp extends java.applet.Applet {
public void init() {
add( new java.awt.Label("Hi Jabr") );
}
}
appletviewer myApp.java
ع ددددد إراددددا ددددة قددددا ولددددي ددددب االنتبددددا إىل أن اددد الطريقددددة تسددددتمدم أ دددداء ال
.ال مي للمستمدم
إنددددده يدددددتم اادددددتدعاء الطدددددرق التاليدددددة...................: ع دددددد بدايدددددة تشدددددغيل الددد د مي •
و ...................و....................
تسددددددتمدم الكلمددددددة ...................لتعريدددد د مددددددتغري حقيقدددد د مفددددددرد الدقددددددة ،أمددددددا •
ملفات .)HTML
قددددم بكتابددددة بددددرمي يطلددددب مددددك املسددددتمدم إدخددددا أربعددددة أرقددددام ذثددددل . 4
،)x2,ددددم يقددددوم الدد د مي براددددم خدد دا مسددددتقيم y2 )x1,و y1 إحدددددا يات نقطددددت
و كل مستطيل ب اء علع ا اإلحدا يات.
قدددم بكتابدددة بدددرمي يطلدددب مدددك املسدددتمدم إدخدددا رقمد د حقيقدددي ،دددم . 5
موع مددددا وحاصددددل دددددائ ما ومتواددددط ما ،وأي مددددا أكددد وأي مددددا سدددداب يقددددوم
أصغر.
x, قدددم بكتابدددة بدددرمي يطلدددب مدددك املسدددتمدم إدخدددا إحددددا يات نقطدددة . 6
)yكمركددا لدددائرة ددم يدددخل ق يمددة نصدد قطددر الدددائرة .يقددوم ادد ا الدد مي براددم
،)drawOval(x,دددم يقدددوم y, w, )h ادد الددددائرة اادددتمدم الوظيفدددة
ساب اآلت :
دددددب أن يتدددددو ر لددددددي ا مددددا دددددامالً قبدددددل كتابدددددة أع برندددددام يدددددل مسدددد لة مدددددا،
ددددب علي ددددا ددددم يدددا للحددددل .وع ددددد كتابددددة ال نددددام ، للمسددد لة املطروحددددة وأاددددلوبا م
ددددب علي ددددا ااددددتمدام مبددددادجم و ددددرق مددد اك بيعددددة وأنددددواع األقسددددام املىللفددددة لدددده كمددددا
علي دددا مسدددبقًا .ادددو نتطدددرق يف اد د ا الفصدددل -بدددإذن اهلل -مل اقشدددة ميدددع القةدددايا
ددددة امل يكلددددة .والددددديت تفيددددد يف عمليددددة دددددم املتعلقددددة باملبددددادجم والطددددرق اخلاصدددددة بال
ة كائ ية التو ه. رق ال وت في
اخلوارزميات :Algorithms
دددرع حدددل أع مسددد لة بر يدددة مددددك خدددال ت فيددد السددددلة مدددك األ عددددا و ددد ترتيددددب
معدد د .نطلدد د تسددددمية اخلوارزميددددة Algorithmعلددددع أيددددة إ رائيددددة يددددل مسدد د لة مددددا تقددددوم
بتحديد:
ديدددد الرتيدددب الوا دددب إتباعددده مدددك أ دددل ت فيددد األ عدددا ويتةدددح يف اد د ا املثدددا أاميدددة
املرتبطة مبس لة ما.
لغددددة اخلوارزميددددات ادددد عبددددارة عددددك لغددددة مصددددط عة وغددددري متعددددار علي ددددا تسدددداعد
علددددع تطددددوير اخلوارزميددددات .تشددددبه لغددددة اخلوارزميددددات لغددددة التما ددددب العاديددددة املدد د
لغة مبسطة ومف ومة ولك ا ليسر لغة بر ة علية. مثل اللغة العربية
ال ميكدددددك ت فيدددد الدددد ام املكتوبدددددة بلغدددددة اخلوارزميدددددات علدددددع اياادددددب ،لك دددددا
تساعد امل م علع التفكري ب نا ه قبل حماولة كتابته ب ية لغة بر ة.
موعددددة مددددك األحددددر والكلمددددات ،ميكددددك تتدد د ل لغددددة اخلوارزميددددات عددددادةً مددددك
املوا د د لددده بلغدددة مكتدددوب بع ايدددة بلغدددة اخلوارزميدددات بسد د ولة إىل الد د ويدددل أع نددد
Javaحيددددد ميكدددددك أن نسدددددتبد يف كدددددثري مدددددك ايددددداالت التعليمدددددات اخلاصدددددة بلغدددددة
اخلوارزميات مبكا ئت ا يف لغة .Java
يدددتم عددداد ًة ت فيد د تعليمدددات برندددام مدددا واحدددد ًة تلدددو األخدددرى حسدددب ترتيدددب ورودادددا يف
Sequential ال ندددددام .نسدددددم أاددد دلوب الت فيددد د اددد د ا بدددددد«الت فيددددد التسلسدددددل نددد د
.»Execution
ددددة مثددددل Javaالب يددددة التسلسددددلية حيدد د أن ايااددددب يقددددوم تتبددددع كا ددددة لغددددات ال
ال ندددام . بت فيدد تعليمدددات اللغدددة واحدددد ًة تلدددو األخدددرى ،حسدددب ترتيدددب كتابت دددا ردددمك ندد
يوردددددح خمطدددددا UMLالتدددددال ب يدددددة تسلسدددددلية لت فيددد د عمليدددددت حسدددددابيت متعددددداقبت .
تسددددمح ل ددددا لغددددة Javaبااددددتمدام أع عدددددد نريددددد مددددك األ عددددا رددددمك الب ددددع التسلسددددلية.
كمدددا أنددده ميك دددا أن نسدددتبد أع عدددل مب موعدددة مدددك األ عدددا ردددمك أع ب يدددة تسلسدددلية
كما ا ورح ذلك الحقًا.
تتةددددمك لغددددة UMLعددددددا قلدددديالً مددددك املفددددردات الب يويددددة الدددديت تسددددمح بت ائددددة ال ظددددام
ي ميكك تطوير بطريقة تكرارية تاايدية.
ددددداءا مدددددك لغدددددة .UML Activity شددددداط Diagrams تشدددددكل خمططدددددات العمدددددل أو ال
الددديت تسددددمع أيةدددا بال شدددداط )Activity Workflow األعمددددا ميثدددل خمطدددا العمددددل تدددد
املدروم. رمك اء مك أ ااء ال ظام ال
تتكددددون خمططددددات ال شدددداط مددددك رمددددوز خاصددددة ذات مع ددددع مثددددل رمددددا حالددددة الفعددددل
وادددو عبدددارة عدددك مسدددتطيل ذو دددانب مقواد د ميددديم ويسدددارع) action-state symbols
Transitionالدددديت assows ددددرع الددددربا بددد اددد الرمددددوز بوااددددطة أاددد م االنتقددددا
رمك ال شاط. ذثل ايركة والتد
كمدددا ادددو ايدددا مدددع لغدددة اخلوارزميدددات ،تسددداعد خمططدددات ال شددداط علدددع تطددددوير
وذثيددددل اخلوارزميددددات .ومددددك الوارددددح أن ادد د املمططددددات تظ ددددر ريددددان الددددتحكم بدد د
األ ااء املمتلفة املكونة لل ظام املدروم.
أمدددددددا بال سدددددددبة للمسدددددددتطيالت ذات الااويدددددددة العلويدددددددة اليم دددددددع املث يدددددددة ،تسدددددددمع
باملالحظددددات noteيف لغددددة UMLوادددد تفيددددد يف إيددددراد ددددرو إرددددا ية حددددو اهلددددد يف
و دددود الرمدددا يف املمطدددا .ميكدددك اادددتمدام املالحظدددات يف أع خمطدددا مدددك خمططدددات
خمططدددددات ال شددددداط قدددددا .اادددددتمدم ا املالحظدددددات يف املمطدددددا السددددداب UMLولدددددي
لتورددديح تعليمدددات لغدددة Javaاملقابلدددة الددديت تعد د عدددك ال شددداط .نالحدددرب أيةد دا و دددود خدددا
متقطع للربا ب املالحظة والرما ال ع تع ع ه.
نس سل
دددرط قد د ددداء معد د مدددك ال ندددام إذا ميثدددل اد د ا ال دددوع مدددك الب دددع عمليدددة ت فيد د
ما.
بال سددددبة لب ددددع االختيددددار إندددده يتددددو ر م ددددا يف لغددددة Javaال ددددة أنددددواع اددددو نقددددوم
بعرر ا يف ا ا الفصل وا :
)Single-selectionالددددديت تسدددددمح يدددددة وحيددددددة االختيدددددار structure الب يدددددة االختيدددددار if ب
بت فيددد أو اختيددددار) عددددل مددددا إذا كددددان الشددددرط املرا ددد هلددددا صددددحيحا ،وإال إن ددددا تقددددوم
بت اوز ذلك الفعل ،أع أن ا تسمح باختيار أو جتاال عل ما.
)Double-selectionالدددديت يددددة مةدددداعفة االختيددددار structure الب يددددة االختيددددار if/else وب
عدددل كخدددر خمتلد د يف عدددل إذا كدددان الشدددرط املرا د د صدددحيحا أو بت فيد د تسدددمح بت فيد د
عل خمتلف . ايالة املعاكسة ل لك ،أع أن ا تسمح باالختيار ما ب
Selection
switch statement
statement if (multiple
)(single selection )selection
t
break
t f
f
t break
ميثدددل اد د ا ال دددوع مدددك الب دددع عمليدددة إعدددادة ت فيد د أ دددااء مدددك ال ندددام عددددد معد د مدددك
ددددرط معدد د .وذتلددددك لغددددة Javaددددال ب ددددع تكراريددددة اددددو املددددرات أو حتددددع يتحقدد د
نتطرق إلي ا بالتفصيل الحقًا ا :
عدددل مدددا لعددددد حمددددد مدددك تسدددتمدم اددد الب يدددة لتكدددرار ت فيددد يدددة التكدددرار for ب
املرات.
عددددل مددددا عدددددد غددددري حمدد ددود مددددك املددددرات وب يددددة التكددددرار whileوتسددددتمدم لت فيدد د
ق الشرط املرا . بشرط
عدددل مدددا عددددد غدددري حمددددود مدددك املدددرات إىل والب يدددة التكراريدددة do/whileوالددديت ت فد د
أن ال يتحق الشرط املرا .
Repetition
for statement while statement do while statement
t
t f
t f
f
كدددم ادد :الب يدددة التسلسدددلية ،دددال تدددوع علدددع ادددبعة ب دددع وب د د ا دددإن لغدددة Java
يددددتم ب دددداء الدد د ام املكتوبددددة بلغددددة Javaمددددك خددددال مددددع عدددددد مددددك ب ددددع الددددتحكم
امل اادددبة خلوارزميدددة اد د ا ال ندددام .كمدددا الحظ دددا يف املمططدددات السدددابقة ت التعدددبري عدددك
ب ا. الب ع مبا يسمع املمططات الص دوقية وتبدأ بدائرة صغرية وت ت
تسدد ل ادد املمططدددات عمليدددة ب ددداء ال ندددام حيدد نقدددوم بوصدددل الب دددع بعةدد ا بدددبع
ع ددددما نصدددل نقطدددة ال ايدددة لب يدددة مدددا بقطدددة البدايدددة لب يدددة أخدددرى تاليدددة هلدددا .وتسدددمع اد د
ب ع التحكم .control-structure stacking العملية بعملية تكدي
حالة ل
.
حالة ل حالة ل
.
حالة ل
حالة ل
ميكن ااست ا ة عن أي ل ببنية ل تحكم (نس س ية،for ،switch ،if/else ،if ، . 3
:)do/while ،while
تطبي القاعدة
)3
حالة ل
ص أ صواب
ص أ صواب
ص أ صواب ص أ صواب
ميكن ن بيق القاعدنني ( )2و( )3قدر ما نشا ويف أي نرنيب نريد. . 4
موعددة مددك ديددد مسددار عددل مددا مددك ب د ددرع ااددتمدام ب يددة االختيددار مددك أ ددل
املسدددارات املتاحدددة .دددإذا كاندددر علدددع ادددبيل املثدددا ،در دددة ال دددا يف مدددادة مدددا تسددداوع 50
در ة ،ع داا إن تعليمة لغة اخلوارزميات التالية:
if student's grad is greater than or equal إذا كانر در ة الطالب أك مك أو تساوع
to 50 50
»print «Passed ا بع «نا ح»
يمدددا إذا كاندددر تقدددوم أوالً مدددك التحقد د مدددك صدددحة أو عددددم صدددحة الشدددرط الد د ع يفحد د
در ددددة الطالددددب أكددد مددددك أو تسدددداوع القيمددددة .50ددددم إذا كددددان الشددددرط حمققًدددا ع ددددداا
يددددتم باعددددة العبددددارة املطلوبددددة «نددددا ح »Passedوإال يددددتم ت فيدد د تعليمددددة لغددددة اخلوارزميددددة
يتحقدد د الشددددرط يددددتم جتااددددل التاليددددة حسددددب تسلسددددل ترتيددددب التعليمددددات ،أع أندددده إذا
تعليمة الطباعة ليتم ت في التعليمات التالية هلا.
ميكك ااتبدا تعليمة لغة اخلوارزميات السابقة بالتعليمة التالية بلغة :Java
) if ( condition
;statement
أو:
) if ( condition
{
;statement_1
;statement_2
...
;statement_n
}
ذعددددل عبددددارة ifذتلددددك أكثددددر مددددك عبددددارة بر يددددة البددددد مددددك حصددددر تلددددك العبددددارات بددد
القوا }{.
ادد ورد ا ددا برنا ًددا يطلددب مدددك املسددتمدم إدخددا در تدده ومدددك ددم يقددوم بطباعددة ندددا ح يف
ق الشرط: حا
;import javax.swing.JOptionPane
public class IfTest
{
) ][public static void main( String args
{
;float grade
(grade = Float.parseFloat
(JOptionPane.showInputDialog
;)) ""Enter grade Number:
System.exit( 0 );
}
}
if ( i % 2 == 0 ) {…}
boolean b = true;
if ( b ) {…}
* ي صدددح عددداد ًة بكتابدددة األقدددوام }{ حتدددع وإن اادددتمدمر عبدددارة واحددددة
يددد يكدددون ال ندددام أكثدددر اددد ولة يف القدددراءة والف دددم للتعليمدددة if
والتعديل.
* يفةدددل وردددع مسدددا ة قبدددل العبدددارة الددديت ت تمددد للتعليمدددة السدددابقة هلدددا
لتس يل عملية الف م والتعديل مثالُ التعليمة:
) if ( i % 2 == 0
;) "print( "bnvv
أ ةل مك التعليمة:
) if (i % 2 == 0
;) "print( "bnvv
تسدددمح اد د الب يدددة بتحديدددد ملدددة مدددك األ عدددا املمكدددك ت فيد د اا إذا كدددان الشدددرط
يكدددددك كددد د لك .علدددددع ادددددبيل املثدددددا ،تقدددددوم تعليمدددددة لغدددددة املرا ددد د صدددددحيحا أو إذا
اخلوارزميات التالية:
if student's grad is greater than or equal إذا كانر در ة الطالب أك مك أو تساوع
to 50 50
»print «Passed ا بع «نا ح»
Else وإال
»print «Failed ا بع «رااب»
ميكك كتابة تعليمة لغة اخلوارزميات السابقة بلغة Javaعلع الشكل التال :
) if ( condition
;statement
else
;statement
أو:
) if ( condition
} {...
else
{
statement_1;
statement_2;
...
statement_n;
}
يددة البددد مددك حصددر تلددك العبددارات بدد ذتلددك أكثددر مددك عبددارة برif/else ذعددل عبددارة
.if كما او ايا مع التعليمة،{} القوا
اددد ورد ا ددددا برنا ًدددا يطلددددب مددددك املسددددتمدم إدخددددا در تدددده ومددددك ددددم يقددددوم بطباعددددة
:نا ح أو رااب حسب القيمة
import javax.swing.JOptionPane;
public class IfTest {
public static void main( String args[] )
{
float grade;
grade = Float.parseFloat(
JOptionPane.showInputDialog(
"Enter grade Number:" ));
if ( grade >= 50 )
JOptionPane.showMessageDialog( null,
" Passed \ngarde is " + grade ,
"Results", JOptionPane.PLAIN_MESSAGE
);
else
JOptionPane.showMessageDialog( null,
" Failed \ngarde is " + grade ,
"Results", JOptionPane.PLAIN_MESSAGE
);
System.exit( 0 );
}
}
واد د عمليدددة ال يدددة ت خد د.if/else ?) واد د تشدددبه الب يدددة: يرمدددا هلد د ا العمليدددة بدددالرما
: ال ة واائا كالتال
if ( grad >= 50 )
System.out.println( "Passed" );
else
System.out.println( "Failed" );
: بالشكل التال
:والتعليمة
if ( y < 5 )
x = 4 * y;
else
x = 2 * y;
:بالشكل
x = ( y < 5 ) ? 4 * y: 2 * y;
يف حالدددة تعدددددت االحتمددداالت وزادت ايددداالت يفةدددل اادددتمدام عمليدددة تدددداخل التعليمدددات
:ً مثال.الشر ية
if ( grad >= 90 )
System.out.println( "Excellent" );
else if ( grad >= 80 )
System.out.println( "Very Good" );
else if ( grad >= 65 )
System.out.println( "Good" );
else if ( grad >= 50 )
System.out.println( "Pass" );
else
System.out.println( "Fail" );
ومددددك دددداءcase تتدد د ل ادد د الب يددددة مددددك السددددلة مددددك األ ددددااء الدددديت تبدددددأ بكلمددددة
:switch املثا التال لتوريح عملية ااتمدام التعليمة.default اختيارع او اذاء
import java.awt.Graphics;
import javax.swing.*;
]true[
b case b action(s) case break
]false[
]true[
z case z action(s) case break
]false[
action(s) default
ميكددددك.موعددددة مددددك التعليمددددات عدددددد مددددك املددددرات لتكددددرارfor تسددددتمدم الب يددددة
: علع الشكل التالfor صياغة الشكل العام للب ية
:أو
متغري
الكلمة األاااية التحكم القيمة ال ائية ملتغري التحكم
for
القيمة االبتدائية ملتغري التحكم رط االاتمرار زيادة قيمة متغري التكرار بواحد
import java.awt.Graphics;
import javax.swing.JApplet;
output="";
}
}
}
import java.awt.Graphics;
import javax.swing.JApplet;
import javax.swing.JOptionPane;
JOptionPane.showMessageDialog( null,
n + "! = " + fact );
System.exit( 0 );
}
}
import javax.swing.JOptionPane;
output += "\n";
}
System.exit( 0 );
}
}
output += "\n";
}
*
**
***
****
*****
والدددديت ال تقبددددل100 و0 ال ندددام التددددال يقددددوم بطباعددددة األعددددداد الاو يددددة احملصددددورة بددد
: بدون باق3 القسمة علع
import javax.swing.JOptionPane;
System.exit( 0 );
}
}
:100 و2 موع األعداد الاو ية احملصورة ب برنام يساب
JOptionPane.showMessageDialog( null,
"The sum is " + total,
"Total Even Integers from 2 to 100",
JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
}
}
10
2i − 5
sum =
i =1 i
import javax.swing.JOptionPane;
JOptionPane.showMessageDialog( null,
"sum = " + sum );
System.exit( 0 );
}
}
import java.awt.Graphics;
import javax.swing.*;
ددددرع تكراراددددا موعددددة مددددك األ عددددا تسددددمح ادد د الب يددددة التكراريددددة بتحديددددد
للب ية حمققًا .ويكون خمطا ا الب ية كالتال : املا ظلَّ الشرط املرا
القيمددددة 2كقيمددددة ابتدائيددددة .ع ددددد ن ايددددة الب يددددة التكراريددددة whileالتاليددددة اددددو حنصددددل
علع القيمة اليت نبح ع ا:
;int p = 2
)while ( p <= 1000
;p = 2 * p
pغدددري دددداا يكدددون الشدددرط <= 1000 تتاايدددد قيمدددة املدددتغري pإىل أن تكدددون 1024وع
متحققًا وع داا يتوق التكرار.
merge
decision
[]product <= 1000
double product value
دددإن التكدددرار ذع العدددداد يسدددتمدم للتكدددرار بعددددد معد د كمدددا علم دددا مدددك السددداب
ذات عدددددادwhile وميك ددددا كتابددددة عبددددارةfor مددددك املددددرات كمددددا اددددو ايددددا يف العبددددارة
: التاليةfor مثالً عبارة.for كيفية عبارة بف
initialization;
while ( loopContinuationCondition ) {
statement;
increment;
}
برنددددام يسددداب معددددد. ذات العددددادwhile وال ندددام التدددال لتوردددديح اادددتمدام العبددددارة
: الب يف ص10 در ات
import javax.swing.JOptionPane;
// increment counter
gradeCounter = gradeCounter + 1;
} // end while
// termination phase
average = total / 10; // integer division
برندددام يسددداب. ذات قيمدددة دددر يةwhile وال ندددام التدددال لتورددديح اادددتمدام العبدددارة
: معد در ات الب ص
total = 0;
gradeCounter = 0;
gradeString = JOptionPane.showInputDialog(
"Enter Integer Grade or -1 to Quit:" );
grade = Integer.parseInt( gradeString );
while ( grade != -1 ) {
total = total + grade;
gradeCounter = gradeCounter + 1;
gradeString = JOptionPane.showInputDialog(
"Enter Integer Grade or -1 to Quit:"
);
if ( gradeCounter != 0 ) {
JOptionPane.showMessageDialog( null,
"Class average is " +
twoDigits.format( average ),
"Class Average",
JOptionPane.INFORMATION_MESSAGE );
}
else
JOptionPane.showMessageDialog( null,
"No grades were entered",
"Class Average",
JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
}
}
بنية التكرار :do/while
تشددددبه ب يددددة do/whileالب يددددة whileحيدد د نقددددوم بالب يددددة whileبددددالتحق مددددك صددددحة
دددددرط االادددددتمرار بدددددالتكرار يف بدايدددددة ايلقدددددة قبدددددل ت فيددد د اا .أمدددددا يف حالدددددة الب يدددددة
سدددددم الب يدددددة سدددددم ايلقدددددة أوالً .أع يدددددتم ت فيددددد يدددددتم ذلدددددك بعدددددد ت فيددددد do/while
بالشكل:
do
;statement
;) while ( condition
أو:
action state
]true[
condition
]false[
import java.awt.Graphics;
import javax.swing.JApplet;
switch, for, while, do/while دددع ع دددد ت فيد د اا مدددع أحدددد البbreak تسدددبب التعليمدددة
اخلددرو املبا ددر مددك ادد الب يددة ويتددابع ال نددام بعددداا ت فيدد مددع أو تعليمددة تلدد الب يددة
:break ال نام التال يب ااتمدام التعليمة.مبا رة
import javax.swing.JOptionPane;
for, while, دددددعdo/while تسدددددبب التعليمدددددة continueع دددددد ت فيدددد اا مدددددع أحدددددد الب
جتددداوز مدددا تبقدددع مدددك التعليمدددات يف سدددم التكدددرار واملتابعدددة مدددع املدددرور التدددال يف ايلقدددة.
while,القيدددام بدددالتحق مدددك صدددحة دددرط اادددتمرار التكدددرار do/while يدددتم يف الب يدددت
مبا دددر ًة بعدددد ت فيد د التعليمدددة .continueأمدددا مدددع الب يدددة ،forيدددتم القيدددام بعمليدددة الايدددادة
ال نددددام التددددال يددددب ااددددتمدام.أوالً ددددم يبدددددأ بعددددداا تقيدددديم ددددرط ااددددتمرار التكددددرار
:continue التعليمة
import javax.swing.JOptionPane;
دددددب اادددددتمدام العمليدددددات لرتكيدددددب عبدددددارت أو أكثدددددر مدددددك العبدددددارات امل طقيدددددة
logicalالدددديت ذك ددددا مددددك تشددددكيل ددددروط معقدددددة مددددك خددددال طقيددددة operators امل
اذمدددع بددد عددددة دددروط بسددديطة .اددد العمليدددات اددد && :عمليدددة «و »Andامل طقيدددة)
»notامل طقيدددددة أو مدددددا يسدددددمع عمليدددددة و|| عمليدددددة «أو »Orامل طقيدددددة) و! عمليدددددة «لدددددي
ال ف ) .ميكك دم أع عبارت م طقيت بالشكل التال :
أو
اد د ا اذددددو بالعبدددارة التاليدددة« :تكدددون العبدددارة املركبدددة بالعمليدددة && ميكدددك تلمدددي
صددددحيحة قددددا يف حالددددة كانددددر كا ددددة العبددددارات صددددحيحة وتكددددون خا ئددددة يف حالددددة
كانر إحدى العبارات خا ئة».
اددد ا اذدددددو بالعبددددارة التاليددددة« :تكددددون العبددددارة املركبددددة بالعمليددددة || ميكدددك تلمددددي
صددددحيحة يف حالددددة كانددددر إحدددددى العبددددارات صددددحيحة وتكددددون خا ئددددة يف حالددددة كانددددر
كا ة العبارات خا ئة».
عددددل مددددا ع دددددما يكددددون ددددر ا تسددددتمدم الب يددددة ...................مددددك أ ددددل ت فيدد د •
عل كخر ع دما يكون ذلك الشرط غري حمققًا. حمققًا وتقوم بت في
موعدددددة مدددددك التعليمدددددات عدددددددا مدددددك املدددددرات بعمليدددددة تسدددددمع عمليدددددة تكدددددرار •
التكرار ذات....................
قدددددم بكتابدددددة برندددددام يقدددددوم بإ ددددداد ددد د رع املعادلدددددةax2+bx+c=0 : . 5
− b b 2 − 4ac
=.x حسب القانون:
2a
قددددم بكتابددددة برنددددام يقددددوم بطباعددددة كا ددددة األعددددداد األوليددددة احملصددددورة . 6
بد د العددددديك 0و .100العددددد األولد د ادددو العددددد الد د ع ال يقبدددل القسدددمة بددددون بددداق
إال علع نفسه وعلع الرقم .)1
مددددوع األعددددداد الصددددحيحة مددددك 1 سدددداب قددددم بكتابددددة برنددددام يقددددوم . 7
حتع .10ااتمدم الب ية .while
xمر وعددددة للقددددوة .)yااددددتمدم سدددداب xy قددددم بكتابددددة برنددددام يقددددوم . 8
علمدددد دا بدددد د ن xyتعددددددم أن العدددددددد xت رددددددربه يف نفسدددددده yمددددددك العبددددددارة do/while
املرات).
سدددددداب قيمددددددة العدددددددد πوذلددددددك بااددددددتمدام اكتددددددب برنا ًدددد دا يقددددددوم . 10
4 4 4
السلسلة التالية = 4 − + − + ... :
3 5 7
اكتب برنا ا يقوم بطباعة ال ماذ التالية واحدا تلو اآلخر: . 11
مقدمة:
إن معظددددم الددد ام الدددديت تت دددداو مسددددائل هلددددا عالقددددة بالعددددا ايقيقددد احملدددديا ب ددددا،
اد د بدددرام أكد د مدددك تلدددك الددديت ادددو نقدددوم بعررد د ا .ولقدددد برا دددر الت ربدددة علدددع أن
أ ةدددددل ريقدددددة لتطدددددوير وصددددديانة برندددددام كدددددبري ،تتمثدددددل يف عمليدددددة جتائتددددده إىل قطدددددع
وأ ددددااء أصددددغر modulesميكددددك الددددتحكم ب ددددا بسدد د ولة أكدد د مددددك ال نددددام األصددددل .
اد د ا الفصدددل .»divideيعدددر د درحق تسدددد and conquer تسدددمع اد د الطريقدددة بطريقدددة «
عددددددة إمكانيدددددات للغدددددة Javaمسددددداعدة يف عمليدددددة تطدددددوير وتصدددددميم وتشدددددغيل وصددددديانة
ال ام الكبرية.
موعددة غ يددة مددك الطددرق اخلاصددة Interfaceعلددع )«Java API» or Java class library
بت فيددد العمليدددات ايسدددابية الرياردددية الشدددائعة ،والعمليدددات اخلاصدددة بسالادددل ايدددرو
باإلرددددا ة إىل عمليددددات الدددددخل/اخلر وعمليددددات التحقدددد وكشدد د األخطدددداء والكددددثري
الكثري غرياا.
يسددددتطيع املدد د م كتابددددة ددددرق للقيددددام مب ددددام حمددددددة ميكددددك ااددددتمدام ا يف عدددددة
Programmer- ال ندددام .تسدددمع اددد الطدددرق أحياندددا «بطدددرق املددد م نقددداط ردددمك نددد
»Definedحيد د جتدددرع كتابدددة التعليمدددات املعر دددة للطريقدددة مدددرة واحددددة قدددا Methods
يدددتم اادددتدعاء أع ريقدددة مدددك الطدددرق الددديت كتب اادددا مدددك أ دددل إ ددداز امل مدددة اخلاصدددة
.methodتتةددددمك عمليددددة االاددددتدعاء ااددددم الطريقددددة ا Call ب ددددا) مددددك خددددال ااددددتدعائ
املسددددتدعاة واملعلومددددات الالزمددددة هلددددا للقيددددام بعملدد د ا علددددع ددددكل واددددطاء .)arguments
ددددة عمليددددة اإلدارة ذات التسلسددددل اهلرمدد د حيدد د يطلددددب رب تشددددبه ادد د العمليددددة يف ال
العمددددل الدد د ع يقددددوم بااددددتدعاء الطددددرق) مددددك عاملدددده الطريقددددة )methodالقيددددام مب مددددة
حمدددددة ددددم يعيددددد returnال تددددائ الدددديت حصدددل علي ددددا .ال تعددددر الطريقددددة املسددددتدعية رب
العمدددل) كيد د ادددتقوم الطريقدددة املسدددتدعاة العامدددل) بت فيد د امل مدددة امل ا دددة ب دددا .ميكدددك
ددددرق أخددددرى عمددددا كخددددريك) دون أن ت ددددتم الطريقددددة للطريقددددة املسددددتدعاة أن تسددددتدع
األاااية املستدعية رب العمل) ل لك.
worker4 worker5
تسددددمح ددددرق الفئددددة الريارددددية للمدد د م بالقيددددام بددددالكثري مددددك ايسددددابات الريارددددية
الشددددائعة .ادددد قوم بااددددتمدام عدددددددا مددددك الطددددرق الرياردددددية لتوردددديح املفدددداايم املتعلقدددددة
بالطرق وكيفية ااتمدام ا.
يددددتم اادددددتدعاء الطدددددرق عدددددادةً بدددد ن نكتدددددب ات دددددا متبوعددددا بقدددددوم يسدددددارع مفتدددددو
وواددديا أو قائمدددة مدددك الوادددطاء يفصدددل يمدددا بي دددا بواادددطة واصدددل« )»,دددم نةدددع أخدددريا
قددددوم ميدددديم .علددددع اددددبيل املثددددا ،يسددددتطيع مدد د م يرغددددب يف حسدددداب و باعددددة قيمددددة
اذ ر الرتبيع للقيمة ،3أن يكتب التعليمة التالية:
ميكدددددك لوادددددطاء الطريقدددددة أن تكدددددون وابدددددر ،مدددددتغريات ،أو حتدددددع تعدددددابري حسدددددابية.
مايل : ل فر
لعدددم و ددود الثوابددر ،وال وددد ادد ا مددك إمكانيددات ادد اللغددة الدديت تددو ر يف الواقددع كليددة
أ ةدددل ال تسدددمح باادددتمدام صددديو مشددداب ة للثوابدددر حسدددب بدددل تسدددمح أيةددا بتطبيدد ادد ا
املف وم علع ع اصر أخرى كالطرق أو الفئات.
ال مي كدددك تعدددديل قيمدددة مدددتغري بعدددد التصدددريح ع ددده بالصدددفة ،finalيلعدددب بددد لك دور
الثابدددر يف اللغدددات األخدددرى ،وتسدددتمدم اد د املدددتغريات غاليد دا لتمثيدددل القددديم الثابتدددة ،دددإذا
أردت علددددع اددددبيل املثددددا أن تسددددتمدم قيمددددة ) pi (πيف برنا ددددك مددددك غددددري احملتمددددل أن
تةطر لتعديل ا ،ل ا يفةل أن تطل علي ا الصفة :final
يددددو ر ااددددتمدام ادددد املددددتغريات ميددددات اددددامت ،مددددك ناحيددددة أوىل يدددداداد عامددددل
املرت ددددم أيددددة حماولددددة إلادددد اد قيمددددة ديدددددة للمددددتغري، األمددددان يف ال نددددام إذ اددددري
وتىلدع مثل ا احملاولة إىل توليد راالة اخلط التالية:
ومددددك ناحيددددة أخددددرى ،يتحسددددك مسددددتوى أداء ال نددددام إذ يولددددد املرت ددددم ترميدددداا أكثددددر
ديددددا عاليدددة ع ددددما يسدددتطيع أن وددددد أن قيمدددة مدددا لدددك يدددتم تغيريادددا .وبشدددكل أكثدددر
ايسدددابات يف وقدددر الرتمدددة بددددالً مدددك ت يلد د ا دددرع بعد د يسدددتطيع املرت دددم ع دئد د أن
إىل وقر الت في ،ع دما يصاد املرت م السطر:
;int x = a + 2
حيدد aادددو مدددتغري عدددادع ،لدددك يسدددتطيع إ دددراء ايسددداب دددورا ويسدددتبد ب دد ا السدددطر
،باملقابددددل إذا كددددان a اددددطر الرتميددددا املوا دد د ،ولددددك ت فدد د العمليددددة إال يف وقددددر الت فيدد د
مددددتغريا ن ائيددددا يعددددر املرت ددددم أن قيمتدددده لددددك تددددتغري ويسددددتطيع بدددد لك إ ددددراء ايسدددداب
مبا رة وإا اد القيمة امل اابة للمتغري .x
ميكدددك أن يتةدددمك ال ندددام ندددوع مدددك الثوابدددر :تلدددك الددديت تعدددر قيم دددا قبدددل ت فيدد
ديدددددد قيم دددددا إال ع دددددد ت فيددد د ال ندددددام ،ويدددددىلدع ال ندددددام ،وتلدددددك الددددديت ال ميكدددددك
سد د مسدددتوى األداء ب سدددبة وكليدددة خمتلفدددة .وال ميكدددك إ دددراء اادددتمدام كدددل ندددوع إىل
ايسدددددابات يف وقدددددر الرتمدددددة إال إذا كاندددددر قددددديم الثوابدددددر معرو دددددة مسدددددبقًا .وتعتمدددددد
وال ميكدددك اادددتمدام اد د املدددتغريات قبدددل أن تسد د د إلي دددا قيمدددة ابتدائيدددة ،ومدددك الشدددائع
يد د يقدددوم املرت دددم اادددتمدام اد د ا الد د ما مدددك املدددتغريات للتصدددريح عدددك وادددطاء الطدددرق
بتحس ترميا ا الطرق .وعليه ميكك أن نكتب:
ك دد دا تعديلدد د ما ي خدد د املددددتغريان قيم مددددا ع ددددد ااددددتدعاء الطريقددددة قددددا ،وال يعددددود
داخل الطريقة.
ال ظدددر عدددك ندددوع املدددتغري ،إنددده ميكدددك أن يدددتم تعريفددده كمدددتغري ن دددائ .final إذن دددبغ
وال ميكك تغيري أع متغري ت تعريفه كمتغري ن ائ finalمب رد تعي قيمة له.
أن يدددتم تسدددمية الثوابدددر بكلمدددات واردددحة ومعد د ة، دددرت العدددادة بد د املد د تلم
كمدددا دددرت العدددادة علدددع عدددل كا دددة األحدددر يف ايالدددة الكدددبرية مدددثالً االادددم
PIأ ةل مك piللداللة علع الثوابر.
:ال نام التال يورح ااتمدام مكتبة الطرق الريارية
} // end main
} // end class MathTest
: يكون خر ال نام كالتال
بااددددتمدام10 إىل1 سدددداب مربددددع األعددددداد الصددددحيحة مددددك يقددددوم الدد د مي التددددال
: املعر ة مك قبل امل مsquare الطريقة
// loop 10 times
for ( int counter=1; counter <= 10; counter++){
result = square( counter ); // method call
} // end for
م أنش نا اياوية:
متعدددددددة األادددددطر outputAreaعدددددك ريددد د إىل أداة مربدددددع الددد د يدددددتم إرادددددا الددد د
التعليمة التالية:
;) outputArea.setText( output
املمرر إلي ا إىل األداة ال صية. إذ تستمدم الطريقة setTextلورع ال
الشكل العام للتصريح عك الطرق املعر ة مك قبل امل م : ميكك تلمي
ددددا قم ددددا بكتابددددة الطريقددددة ،squareتتلقددددع ادد د الطريقددددة نسددددمة مددددك املددددتغري يف برنا
counterبوااددددددطة الوادددددديا yكمددددددا اددددددو مورددددددح يف ريقددددددة التعريدددد د واالاددددددتدعاء
السابقة:
الطريقدددددة square ال قطدددددة الددددديت ت ع دددددداا اادددددتدعاء الطريقدددددة .squareيظ دددددر تعريددد د
الواددديا .yتفيدددد الكلمدددة int كمدددا لدددو أن دددا ت تظدددر قيمدددة صدددحيحة تصدددل ا مدددك خدددال
ديدددد ادددا ال تي دددة املعدددادة مدددك قبدددل الطريقدددة .يف حد د الددديت تسدددب اادددم الطريقدددة يف
تسدددتمدم التعليمدددة returnمدددك أ دددل ذريدددر ال تي دددة إىل الطريقدددة األصدددلية الددديت ذدددر م دددا
عملية االاتدعاء.
;import java.awt.Container
;*import javax.swing.
public class SquareIntegers extends JApplet
{ ) public int square( int y
)(public void init {
{ ;return y * y
}
...
;) result = square( counter
...
}
}
ااتدعاء الطريقة
يو دددد ال دددة دددرق إلعدددادة الدددتحكم إىل ال قطدددة الددديت ت مدددك ع دددداا اادددتدعاء إحددددى
الطدددرق .إذا كاندددر الطريقدددة ال تعيدددد أع قيمدددة الطدددرق مدددك ال دددوع voidتسدددمع يف بعددد
األحيددددان اإل ددددراءات) ،ميكددددك إعددددادة الددددتحكم بكددددل بسددددا ة ع ددددد الوصددددو إىل قددددوم
الطريقة أو ع د ت في التعليمة: ب ال اية «}» اخلا
;return
;return expression
الدد ما علدددع الشدددكل * يدددىلدع القيدددام بالتصدددريح عدددك الوادددطاء مدددك نفدد ملحوظي ي ي ي
التددال مددثالً int x, y :بدددالً مددك int x, int y :إىل حدددو خط د أ دداء
ديدددد ادددا كدددل واددديا مدددك وادددطاء الطريقد دة دددب الرتمدددة ألنددده
علع حد .
x = Math.abs( y );
املعر دددددة مدددددك قبدددددل املدددد م مدددددك أ دددددلmaximum الدددد مي التدددددال الطريقدددددة يعدددددر
:ال ة قيم صحيحة ديد أك قيمة مك ب
import javax.swing.*;
String s2 = JOptionPane.showInputDialog(
"Enter second floating-point value" );
String s3 = JOptionPane.showInputDialog(
"Enter third floating-point value" );
// method call
double max = maximum(number1, number2,number3);
: ونات ت في ا ا ال مي كالتال
قسر الوسطاء :Argument Promotion or Coercion
يعددد اددد ا املصدددطلح عدددك إ بدددار الوادددطاء علدددع أن تصدددبح مدددك ادددا معددد م اادددب.
سددددب اذدددد ر علددددع اددددبيل املثددددا ،ميكددددك ااددددتدعاء الطريقددددة الريارددددية sqrtالدددديت
الرتبيعددد د مدددددع األعدددددداد الصدددددحيحة رغدددددم أن دددددا تقبدددددل الوادددددطاء مدددددك ال دددددوع doubleيف
تعريف ا ،أع أن التعليمة:
تعمدددل بشدددكل صدددحيح لتطبدددع القيمدددة 2حيد د يقدددوم ادددوذ الطريقدددة بإ بدددار املرت دددم
ويددددل القيمددددة الصددددحيحة 4إىل القيمددددة ايقيقيددددة 4.0قبددددل أن ميرراددددا إىل سددددم علددددع
الطريقددددة نفسدد د ا..واذدو التددددال يورددددح ايكليددددة قسددددر أادددداط البيانددددات اذدددداااة يف
لغة :Java
ما double تسددددددتمدم الطريقددددددة )( Math.randomلتوليددددددد أرقددددددام عشددددددوائية مددددددك الددددد
سددداب حمصدددورة بد د الدددرقم 0و .1وذعدددل املددددى يبعدددد إىل قيمدددة مدددا ولدددتكك mنقدددوم
القيمة التالية:
تعدد د ادد د التعليمددددة عددددك عمليددددة توليددددد أرقددددام عشددددوائية حمصددددورة بدد د الددددرقم 0و.m
ولتحريك املدى نقوم مثالً بكتابة التعليمة التالية:
لتوليدددد أرقدددام عشدددوائية حمصدددورة بد د الدددرقم mو .m+1ولب ددداء قاعددددة أااادددية ميكدددك
ااتمدام التعليمة التالية:
1ع دددد يدددتغري الوردددع ع ددددما نرغدددب يف توليدددد أرقدددام عشدددوائية صدددحيحة ،ع دددداا يد د ق
إ دددددراء عمليدددددة التوليدددددد و دددددب إردددددا ته لكدددد تكدددددون العمليدددددة صدددددحيحة ،أع تصدددددبح
التعليمة السابقة كالتال :
ال ندددددام التدددددال يوردددددح عمليدددددة اادددددتمدام الطريقدددددة randomيف عمليدددددة توليدددددد أرقدددددام
عشوائية:
;import javax.swing.JOptionPane
} // end for
ال ندددام التدددال يقدددوم باختبدددار احتماليدددة مدددرات تكدددرار ظ دددور إحددددى أو ددده ح دددر ال دددرد
:الستة
// Roll a six-sided die 6000 times.
import javax.swing.*;
// summarize results
for ( int roll = 1; roll <= 6000; roll++ ) {
face = 1 + ( int ) ( Math.random() * 6 );
case 2:
++frequency2;
break;
case 3:
++frequency3;
break;
case 4:
++frequency4;
break;
case 5:
++frequency5;
break;
case 6:
JOptionPane.showMessageDialog( null,
outputArea, "Rolling a Die 6000 Times",
JOptionPane.INFORMATION_MESSAGE );
دددداء ال نددددام الدد د ع نسددددتطيع رددددم ه ددددا الرايددددة املتعلدد د مبعدد د ذر مددددا يتحدددددد
التعامددل مددع ا د ا املُعددر .علددع اددبيل املثددا ع دددما نصددر عددك مددتغري حمل د رددمك كتلددة
يمكك التعامل معه قا رمك ا الكتلة.
++x;
x *= 10;
االادددم بشدددرط أن تتعامدددل مدددع وادددطاء تسدددمح لغدددة Javaبتعريد د عددددة دددرق هلدددا نفد د
Method هلدددددا أاددددداط خمتلفدددددة .تسدددددمع اددد د اإلمكانيدددددة « التحميدددددل الاائدددددد للطدددددرق
دددددإن املرت دددددم يقدددددوم باختيدددددار ريقدددددة مددددداادة overloaded .»Overloadingع دددددد اادددددتدعاء
الطريقددددة امل ااددددبة بعددددد التحقدد د مددددك عدددددد واددددا وترتيددددب الواددددطاء اخلاصددددة بعمليددددة
االادددتدعاء نفسدد ا .يدددتم اادددتمدام إمكانيدددة التحميدددل الاائدددد للطدددرق لب ددداء عددددة دددرق هلدددا
امل مة أيةا ولكك مع أااط خمتلفة للبيانات. االام وتقوم ب ف نف
الد د مي التدددال يسدددتمدم التحميدددل الاائدددد للطد درق مدددك أ دددل حسددداب مربدددع عددددد مدددك
ال ما intومك ال ما :double
تلدد الوادددائا الدد مي التدددال يوردددح أنددده ع دددد إ دددراء التحميدددل الاائدددد للطدددرق البدددد أن
:ب الطرق املاودة
1 error
االستدعاء الذايت (العودية) :Recursion
موعدددة مدددك الطدددرق الددديت تقدددوم تتد د ل الد د ام الددديت قم دددا بعررد د ا يمدددا ادددب مدددك
د د وبطريقدددة ارميدددة .لكدددك مدددك املفيدددد يف بعد د ب ادددلوب م باادددتدعاء بعةد د ا الدددبع
الطدددددرق باادددددتدعاء نفسدددد ا .نسدددددم الطدددددرق السدددددابقة بطدددددرق املسدددددائل ،أن تقدددددوم بعدددد
recursiveألن ددددا كمددددا قل ددددا تسددددتدع الطددددرق العوديددددة) methods االاددددتدعاء الدد د ات
ريقة أخرى. نفس ا بشكل مبا ر أو غري مبا ر مك خال
تتمتدددع أاددداليب ايدددل ملسدددائل تسدددتدع اادددتمدام عمليدددة االادددتدعاء الد د ات بعددددد مدددك
قدددا كيفيدددة حدددل املسدد لة الع اصدددر املشدددرتكة حيدد يدددتم اادددتدعاء ريقدددة عوديدددة تعدددر
يف أبسدددددا حاالت دددددا .نسدددددم اددد د ايالدددددة أو ايددددداالت البسددددديطة «بايالدددددة أو ايددددداالت
.»baseأع ع دددددد اادددددتدعاء الطريقدددددة مدددددع حالدددددة ابتدائيدددددة إنددددده يعيدددددد االبتدائيدددددة cases
ددددب علددددع نتددددائ ادددد اخلطددددوة أن ت ةددددم إىل نتددددائ اذدددداء األو الدددد ع returnألندددده
تعدددر الطريقدددة العوديدددة التعامدددل معددده مدددك أ دددل تكدددويك حدددل للمسددد لة املت اولدددة وإعدددادة
ال تي دددة إىل الطريقدددة املسدددتدعية .ولتورددديح ذلدددك اد د درم مثدددا علدددع االادددتدعاء الد د ات
واددددو حسدددداب املةددددروب factorialإذا كددددان لدددددي ا nعدددددد صددددحيح مو ددددب ،ددددإن القيمددددة
تقرأ مةروب العدد )nتساوع قيمة اذداء: !n
5*4! 5*4!
4!=4*6=24 إعادة القيمة
4*3! 4*3!
3!=3*2=6 إعادة القيمة
3*2! 3*2!
2!=2*1=2 إعادة القيمة
2*1! 2*1!
1 إعادة القيمة
1 1
وال نددددام التددددال يظ ددددر ااددددتمدام عمليددددة االاددددتدعاء الدد د ات يف حددددل ادد د ا ال ددددوع مددددك
:املسائل
0, 1, 1, 2, 3, 5, 8, 13, 21, …
مدددوع يسددداوع كدددل عددددد مدددك أعدددداداا: وتتمتدددع باخلاصدددية التاليدددة1 و0 مدددع القيمدددت
.العدديك السابق له
return 1 return 0
قددددا رددددمك سددددم الطريقددددة حيدد د ت التصددددريح ع دددده نسددددم املددددتغري املعددددرو •
بد....................
يسددداعد احملددددد ...................علدددع التصدددريح عدددك مدددتغريات قابلدددة للقدددراءة قدددا أو •
. 8اكتدددددب ريقدددددة ت خددددد عدددددددا صددددددحيحا وتعيدددددد أرقدددددام اددددد ا العددددددد بصددددددورة
معكواة .علع ابيل املثا ،إذا أعطي ا الطريقة الرقم 7354تعيد .4537
. 10اكتدددب ريقدددة تسدددتقبل مدددك املسدددتمدم عددددديك صدددحيح وتعيدددد رقمد دا عشدددوائيا
مك ال ما doubleحمصور ب ا يك العدديك.
السددددالبة ،والعشددددرية أع ميك ددددا يددد تدددددعم األاددد ددددور الطريقددددة myPow . 11
حساب myPow(2.0,-1) :و).myPow(4.0,0.5
n
4 4 4 4 (−1) n 4
= (−1) i = 4 − + − + ... +
i =0 2i + 1 3 5 7 2n + 1
الفقرة الثالثة :وضح الفرق بني كالً من( :مع التوضيح املطلوب) [ 5درجات]:
. 1تطبيقات ا ا و برمي يات ا ا ورح مبثا بسيا دا).
ب ية االختيار وب ية التكرار ورددددددح بااددددددتمدام ذثيل UMLيالة . 2
واحدة لكل ب ية).
السؤال الثاني [ 21درجة]:
الفقرة األوىل :اكتب تعليمة أو جمموعة تعليمات بلغة Javaللقيام باملهام التالية [ 7درجات]:
يئته بالقيمة A . 1التصريح عك املتغري cمك ال ما ايريف وت
. 2ذثيل املعادلة ايسابية التاليةy = sin(ln( x 7 )) :
100 (0,وبطو رلع مقدار قطة )0 . 3رام مربع يبدأ مك ال
ما doubleوبالقيمة 2.71828182 . 4التصريح عك الثابر Eمك ال
الفقرة الثالثة :وضح الفرق بني كالً من( :مع التوضيح املطلوب) [ 5درجات]:
ورح ذلك مبثا لكل م ما). .العبارة Forو العبارة Do/While 1
مثل )int . 2الطريقة اليت ذتلك اا البيانات voidواليت ذتلك نوع بيانات مع
ورح ذلك مبثا لكل م ما).
السؤال الثاني [ 21درجة]:
الفقرة األوىل :اكتب تعليمة أو جمموعة تعليمات بلغة Javaللقيام باملهام التالية [ 7درجات]:
يئته بالقيمة 123 . 1التصريح عك املتغري xمك ال ما "عدد صحيح ويل" وت
• Deitel, Harvey M. and Deitel, Paul J.: Java How to Program, 5th ed.
India: Pearson Education Pte. Ltd, 2004.
• Gosling, B. and Others: The Java Language Specification: Second
Edition. Web site: Java.sun.com.
• Jaworski, Jamie: Training Guide: Java 2 Certification, 1st ed. India:
Techmedia, 1999.
• SYBEX: Java 2, J2SE 1.4 Complete, 1st ed. India: BPB Publications,
2003.
وطريقة عمله.
اإلصدار .7,1
مميزاته.
إدارة امللفات واملجلدات واألقراص :برنامج مستكشف ويندوز ,العمليات الرئيسية على •
وفوائدها.
• نظرية املجموعات.
• التطبيقات.
• العمليات اجلربية.
• نظرية الزمر.
• احللقات واحلقول.