Professional Documents
Culture Documents
الجافا سؤال و جواب
الجافا سؤال و جواب
١
ﺑﺴﻢ ﺍﷲ ﺍﻟﺮﲪﻦ ﺍﻟﺮﺣﻴﻢ
ظﮭر اﻟﻐﯾب
٢
اﻟﻣﺣﺗوﯾﺎت
اﻟﺻﻔـﺣﺔ
اﻟوﺣدة اﻷوﻟﻰ :اﻷﺳﺎﺳﯾﺎت
٨ س : ١ﻟﻐﺔ ﺟﺎﻓﺎ ......................
٨ س : ٢ﻣﻣﯾزاﺗﮭﺎ ...................
٩ س : ٣اﺻداراﺗﮭﺎ ..................
٩ س : ٤اﻟوﻗت ﻣﻊ اﻟﺟﺎﻓﺎ ..............
١٠ س : ٥اﻧﺗﺷﺎر اﻟﺟﺎﻓﺎ ...................
١١ س : ٦اﻟﻛﻠﻣﺎت اﻟﻣﺣﺟوزة ................
١١ س : ٧اﻋﺎدة ﺗﺳﻣﯾﺔ ............... class
١١ س variable : ٨و................. value
١١ س : ٩اﻟﻛوﻧﺳﺗراﻛﺗر ...................
١٢ س : ١٠إﻧﺷﺎء ﻛﺎﺋن ﻣن ﻛﻼس ...........
١٢ س private & protected & public : ١١ﻟﻠﻣﺗﻐﯾرات ....
١٣ س : ١٢ﺗﺧزﯾن ﻗﯾﻣﺔ ﻓﻲ ﻣﺗﻐﯾر ...........
١٤ س : ١٣ﻣﺳﺎواة ﻣﺗﻐﯾر ﻓﻲ ﻣﺗﻐﯾر ....
١٤ س : ١٤إذا ﻟم ﺗﻌطﻰ اﻟﻘﯾﻣﺔ اﻹﺑﺗداﺋﯾﺔ ﻟﻠﻣﺗﻐﯾر ...
١٤ س : ١٥ﻗواﻋد ﺗﺳﻣﯾﺔ اﻟﻣﺗﻐﯾرات .........
١٥ س : ١٦اﻟﻌﻠﻣﯾﺎت اﻟرﯾﺎﺿﯾﺔ ﻋﻠﻰ اﻟﻣﺗﻐﯾرات .....
١٦ س : ١٧ﺿﺑط ﻗﯾﻣﺔ ﻟﻠﻣﺗﻐﯾر ......
١٦ س : ١٨اﻟﻣﺗﻐﯾر ﺑوﻟﯾﺎن ..... Boolean
٣
١٨ ............ if & else : ١٩ س
١٩ ........... Switch : ٢٠ س
٢١ ........ Methods أﻧواع اﻟـ: ٢١ س
٢٢ .......... Packages اﻟـ: ٢٢ س
٢٢ .... overriding & overloading : ٢٣ س
٢٢ ............ أﻧواع اﻟﻣﺗﻐﯾرات: ٢٤ س
٢٢ ...... escape sequence : ٢٥ س
٢٣ ..... static ﻣﻌﻧﻰ: ٢٦ س
٢٣ ....... java.lang.* ﺑﺎﻛﺞ: ٢٧ س
٢٣ ...... & و && ﻓﻲ ﺟﻣل اﻟﻣﻘﺎرﻧﺔ: ٢٨ س
٢٤ ..... toString() ( اﻟطرﯾﻘﺔ )اﻟداﻟﺔ: ٢٩ س
٢٧ ...... ﻟﻣﻠف ﺟﺎﻓﺎCompile ﻋﻣل: ٣٠ س
٢٧ .......... ﺗﺷﻐﯾل ﺑرﻧﺎﻣﺞ اﻟﺟﺎﻓﺎ: ٣١ س
٢٧ ........ Casting ﻣﺻطﻠﺢ: ٣٢ س
٢٨ ................. اﻟﺛواﺑت: ٣٣ س
٢٨ ... global & local & static & dynamic : ٣٤س
٢٩ ... String & StringBuffer : ٣٥ س
٢٩ .... GregorianCalendar ﻛﻼس: ٣٦ س
(Inheritance) اﻟوراﺛﺔ
٢٩ .... (inheritance) ﻣﻌﻧﻰ اﻟوراﺛﺔ:٣٧ س
٤
٣٠ س : ٣٨اﻟوﺻول إﻟﻰ اﻷب ﻣن اﻹﺑن ......
اﻹﺳﺗﺛﻧﺎءات )(Exceptions
٣٠ س : ٣٩اﻹﺳﺗﺛﻧﺎءات ...............
٣١ س : ٤٠ﺣﻣل اﻹﺳﺗﺛﻧﺎءات .............
٣١ س : ٤١أﻧواع اﻹﺳﺗﺛﻧﺎءات ...............
ﻋﺎم
٣٢ س : ٤٢اﻵﺳﻛﻲ ﻛود ...............
٣٣ س : ٤٣ﻣﺻطﻠﺢ ............ Deprecated
٣٣ س ............... Generic Class : ٤٤
٣٤ س ............... Interface : ٤٥
GUI
٣٤ س : ٤٦واﺟﮭﺔ اﻟﻣﺳﺗﺧدم اﻟرﺳوﻣﯾﺔ ....... GUI
٣٥ س .......... JFrame : ٤٧
٣٥ س : ٤٨طرق اﺳﺗﺧدام ......... JFrame
٣٥ س : ٤٩ﻋﻣل واﺟﮭﺔ ﻣرﺋﯾﺔ ﺑﺎﻟﻛود .......
٤٣ س .......... Swing : ٥٠
٤٤ س : ٥١ﻣﻛﺗﺑﺔ ........... SWT
٤٤ س ....... static & methods : ٥٢
٤٤ س : ٥٣ﻣﻛﺗﺑﺎت اﻟواﺟﮭﺎت .........
٤٦ س : ٥٤ﻛﻼس Colorواﻻﺧﺗﻼف ......
٥
٤٦ س : ٥٥ﻓﺗﺢ ﺻﻔﺣﺔ وﯾب ﻣﻌﯾﻧﺔ ...........
٤٧ س : ٥٦ﺗﻌدد ﻟﻐﺎت اﻟﺑرﻧﺎﻣﺞ .........
٤٧ س : ٥٧اﻟﻣﻠﻔﺎت ....... Properties
٤٨ س : ٥٨ﻓﺋﺔ ............. Locale
٤٨ س : ٥٩ﻓﺋﺔ ........... ResourceBuodle
٤٩ س : ٦٠ﻗراءة ﻣﺣﺗوى ﻣﻠف ﻧﺻﻲ .........
٥١ س : ٦١أﻣر اﻹﻗﻔﺎل داﺧل ...... finally
٥٢ س : ٦٢ﻗراءة ﻣﻠف ﺑﺎﺳﺗﻌﻣﺎل اﻟﻔﺋﺔ ...... Scanner
ﻋﺎم
٥٣ س : ٦٣اﻟـ .............. JPA
٥٣ س ........ JVM & JRE & JDK : ٦٤
Data Structure
س ٥٥ ... Databases & Data Structures : ٦٥
٦١ س ..... LinkedList & ArrayList : ٦٦
٦٣ س ..... LinkedList & List : ٦٧
٦٣ س : ٦٨ﺗرﺗﯾب ﻣﺻﻔوﻓﺔ ..........
ﻋﺎم
٦٤ س ...... Java Annotations : ٦٩
٦٨ س : ٧٠ﺑرﻣﺟﺔ ﺣواﺷﻲ ﺟدﯾدة .....
٧٣ س : ٧١ﻣﻌﺎﻟﺟﺔ اﻟﺣواﺷﻲ ........
٦
Databases
٨٢ س : ٧٢رﺑط ﻗﺎﻋدة ﺑﯾﺎﻧﺎت أﻛﺳس ﺑﺎﻟﺟﺎﻓﺎ ......
Graphics 2D
٩٦ س : ٧٣رﺳم أﺷﻛﺎل ھﻧدﺳﯾﺔ ................
ﻣﺷﺎرﯾﻊ ﺟﺎھزة
١٠٠ : ٧٤ﻋﻣل ﺑرﻧﺎﻣﺞ ﺷﺑﯾﮫ ﺑﺎﻟرﺳﺎم ...........
١١٩ capture : ٧٥ﺗﺻوﯾر اﻟﺷﺎﺷﺔ ..........
١٢٢ splash : ٧٦ﺟﺎري اﻟﺗﺣﻣﯾل .............
١٢٤ .......................... open net : ٧٧
١٢٥ count letter : ٧٨ﺣﺳﺎب ظﮭور اﻟﺣروف ....
١٢٧ draw Time : ٧٩رھﯾب ﺟدا ..........
١٣٣ Color : ٨٠ﺗﻠوﯾن اﻟﺧط وﺗﻐﯾﯾر ﻧوﻋﮫ ....
١٣٥ clac : ٨١ﺣﺎﺳﺑﺔ ﺑﺎﺳﺗﺧدام اﻟﺟﺎﻓﺎ .........
١٤٣ أﺳﻣﺎء اﻟﻣﺷﺎرﻛﯾن ﻓﻲ اﻟﻛﺗﺎب
٧
اﻷﺳﺎﺳﯾﺎت
س : ١ﻣﺎھﻲ ﻟﻐﺔ ﺟﺎﻓﺎ وﻣﺎ ھﻲ ﺑداﯾﺎﺗﮭﺎ ؟
ﺟﺎﻓﺎ ) (Javaھﻲ ﻋﺑﺎرة ﻋن ﻟﻐﺔ ﺑرﻣﺟﺔ اﺑﺗﻛرھﺎ ﺟﯾﻣس ﺟوﺳﻠﯾﻧﺞ ﻓﻲ ﻋﺎم ١٩٩٢م
أﺛﻧﺎء ﻋﻣﻠﮫ ﻓﻲ ﻣﺧﺗﺑرات ﺷرﻛﺔ ﺻن ﻣﯾﻛروﺳﯾﺳﺗﻣز ،وذﻟك ﻻﺳﺗﺧداﻣﮭﺎ ﺑﻣﺛﺎﺑﺔ اﻟﻌﻘل
اﻟﻣﻔﻛر اﻟﻣﺳﺗﺧدم ﻟﺗﺷﻐﯾل اﻷﺟﮭزة اﻟﺗطﺑﯾﻘﯾﺔ اﻟذﻛﯾﺔ ﻣﺛل اﻟﺗﯾﻠﻔزﯾون اﻟﺗﻔﺎﻋﻠﻲ ،وﻗد ﻛﺎﻧت
ﻟﻐﺔ اﻟﺟﺎﻓﺎ ﺗطوﯾرً ا ﻟﻠﻐﺔ اﻟﺳﻲ ﺑﻼس ﺑﻼس ) ،(++Cوﻋﻧد وﻻدﺗﮭﺎ أطﻠﻖ ﻋﻠﯾﮭﺎ ﻣﺑﺗﻛرھﺎ
"أواك" ﺑﻣﻌﻧﻰ ﺷﺟرة اﻟﺳﻧدﯾﺎن؛ وھﻲ اﻟﺷﺟرة اﻟﺗﻲ ﻛﺎن ﯾراھﺎ ﻣن ﻧﺎﻓذة ﻣﻛﺗﺑﮫ وھو
ﯾﻌﻣل ﻓﻲ ﻣﺧﺗﺑرات ﺻن ﻣﯾﻛروﺳﯾﺳﺗﻣز ،ﺛم ﺗﻐﯾر اﻻﺳم إﻟﻰ ﺟﺎﻓﺎ ،وھذا اﻻﺳم )ﻋﻠﻰ
ﻏﯾر اﻟﻌﺎدة ﻓﻲ ﺗﺳﻣﯾﺔ ﻟﻐﺎت اﻟﺑرﻣﺟﺔ( ﻟﯾس اﻟﺣروف اﻷوﻟﻰ ﻣن ﻛﻠﻣﺎت ﺟﻣﻠﺔ ﻣﻌﯾﻧﺔ أو
ﻣطوروا ھذه اﻟﻠﻐﺔ ﻟﯾﻧﺎﻓس اﻷﺳﻣﺎءّ ﺗﻌﺑﯾرا ﺑﻣﻌﻧﻰ ﻣﻌﯾن ،وﻟﻛﻧﮫ ﻣﺟرد اﺳم وﺿﻌﮫ
اﻷﺧرى ،وھﻰ اﺣدى ﻟﻐﺎت اﻟﺑرﻣﺟﺔ ،أي ﻣﺟﻣوﻋﺔ ﻣن اﻷواﻣر واﻟﺗﻌﻠﯾﻣﺎت اﻟﺗﻲ ﺗﻌطﻰ
ﻟﻠﺣﺎﺳب ﻓﻲ ﺻورة ﺑرﻧﺎﻣﺞ ﻣﻛﺗوب ﺑﻠﻐﺔ ﺑرﻣﺟﺔ ﻣﻌﯾﻧﺔ ﺑواﺳطﺔ ﻣﻌﺎﻟﺞ ﻧﺻوص،
وﯾﺗﻛون ﻣﺻدر اﻟﺑرﻧﺎﻣﺞ ﻣن ﻋدة ﺳطور وﻛل ﺳطر ﯾﻌﺗﺑر ﺟﻣﻠﺔ ،وﯾﺗﻌﺎﻣل اﻟﺣﺎﺳب ﻣﻊ
ﻛل ﺟﻣﻠﺔ ﺑﺗرﺗﯾب ﻣﻌﯾن ﻹﻧﺟﺎز اﻷﻣر اﻟذي ﺻﻣم اﻟﺑرﻧﺎﻣﺞ ﻟﺗﺣﻘﯾﻘﮫ.
٨
اﻟﻌﻧﻛﺑوﺗﯾﺔ ﻓﻘط ﺑل ﺗﻣﻛﻧﻧﺎ ﻣن إﻧﺷﺎء ﺑراﻣﺞ ﻟﻼﺳﺗﻌﻣﺎل اﻟﺷﺧﺻﻲ واﻟﻣﮭﻧﻲ ،ھذه
اﻟﺑراﻣﺞ ﺗﻧﺟز ﻋﺑر ﺟﻣﻠﺔ ﻣن اﻟﺑراﻣﺞ اﻟﺗﻲ ﺗﺳﮭل ﻛﺗﺎﺑﺔ اﻷواﻣر ﻛﺑرﻧﺎﻣﺞ
NetBeansو.Eclipse
Java EE
اﺻدار اﻹﻧﺗرﺑراﯾس ﺑﺎﻹﻧﺟﻠﯾزﯾﺔ )(Java Enterprise Editionھو ﯾﺧﺗﻠف
ﻋن اﻹﺻدار اﻟﻘﯾﺎﺳﻲ ﻓﻲ أﻧﮫ ﺧﺎص ﺑﺑرﻣﺟﺔ اﻟﺧوادم واﻟﺗطﺑﯾﻘﺎت اﻟﻣوزﻋﺔ
وﺑرﻣﺟﺔ اﻟوﯾب.
Java ME
اﺻدار اﻟﻣﺎﯾﻛرو ﺑﺎﻹﻧﺟﻠﯾزﯾﺔ ) (Java Micro Editionوھو إﺻدار ﺧﺎص
ﺑﺎﻟﺑرﻣﺟﺔ ﻋﻠﻰ اﻟﮭواﺗف اﻟﻣﺣﻣوﻟﺔ واﻷﺟﮭزة اﻟﻣﺣدودة ﻓﻲ اﻟﻣﺻﺎدر ﻋﻣوﻣﺎ
وﺗﻌﺗﺑر اﻟﺧﯾﺎر اﻷول ﻟﻣﺑرﻣﺟﻲ أﻟﻌﺎب اﻟﮭواﺗف اﻟﻣﺣﻣوﻟﺔ.
Java Fx
ﺗﻘﻧﯾّﺔ أﺧرى اﺻدرﺗﮭﺎ ﺻن ﻣﯾﻛروﺳﯾﺳﺗﻣز ﻟﺗطوﯾر ﺗطﺑﯾﻘﺎت ﻣن ﻧوع " "RIAأي
"."Rich Internet Applications
س : ٤ﻛم ﯾﺗطﻠب اﻟوﻗت ﻣن ﻣﻣﺎرﺳﺔ وﺗﻌﻠم اﻟﺟﺎﻓﺎ ﺣﺗﻰ ﺗﺻﺑﺢ ﻣﺣﺗرف ؟
اﻟﺟﺎﻓﺎ ﻟﻐﺔ ھﺎﺋﻠﺔ وﻛﺑﯾرة وطﺑﻌﺎ اﻟﻣدة ﺗﻛون ﺣﺳب ھﻣﺔ اﻟﺷﺧص وارادﺗﮫ وﻟﻛﻲ
ﺗﺻﺑﺢ ﻣﺣﺗرف ﻓﻲ اﻟﻠﻐﺔ ﻛوﻗت ﺗﻘرﯾﺑﻲ ﯾﺣﺗﺎج ﻟك ﺛﻼﺛﺔ إﻟﻰ ﺧﻣﺳﺔ ﺳﻧﯾن .
٩
س :٥ﻣﺎ ھو ﻣدى اﻧﺗﺷﺎر اﻟﺟﺎﻓﺎ ﺧﺻوﺻﺎ ﻓﻲ اﻟوطن اﻟﻌرﺑﻲ؟
ﻓﻲ اﻟﺣﻘﯾﻘﺔ اﻟﺟﺎﻓﺎ ﻣﻧﺗﺷرة ﻓﻲ اﻟدول اﻟﻣﺗﻘدﻣﺔ ﺑﺻورة ﻛﺑﯾرة ﺟدا و ﺧﺻوﺻﺎ ً ﻓﻲ
) اﻣرﯾﻛﺎ وﺑرﯾطﺎﻧﯾﺎ ( و ﻟﻛن ﻣﻊ اﻻﺳف ﻓﮭﻲ ﻋﺎﻟﻣﻧﺎ اﻟﻌرﺑﻲ ﻗﻠﯾﻠﺔ اﻻﻧﺗﺷﺎر و أن
ﻛﺎﻧت اﻟﺟﺎﻣﻌﺎت أدﺧﻠﺗﮭﺎ و ﻟﻛن ﻣﻧذ ﻣدة ﺑﺳﯾطﺔ ﻧﺳﺑﯾﺎ ً.
س : ٦ﻣﺎھﻲ اﻟﻛﻠﻣﺎت اﻟﻣﺣﺟوزة ﻓﻲ ﻟﻐﺔ ﺟﺎﻓﺎ اي اﻟﻛﻠﻣﺎت اﻟﺗﻲ ﻻ ﯾﺳﻣﺢ ﺑﺎﺳﺗﺧداﻣﮭﺎ إﻻ
ﻟﻠﻐرض اﻟذي اﻧﺷﺄت ﻣن اﺟﻠﮫ ؟
١٠
س : ٧ﻛﯾف ﯾﻣﻛن إﻋﺎدة ﺗﺳﻣﯾﺔ classﻣﻌﯾن ﻣن ﻋﻠﻰ أﺣد اﻟـ IDE؟
ﺗﺿﻐط ﻋﻠﻰ اﻟﻛﻼس ﺑﺎﻟزر اﻷﯾﻣن ﺛم ﺗﺿﻐط ﻣن اﻟﻘﺎﺋﻣﺔ ﻋﻠﻰ Refactorﺛم ﺗﺧﺗﺎر
renameوﺳوف ﯾﺗم ﺗﺣدﯾث اﻻﺳم ﻓﻲ اﻟﻛود ﺗﻠﻘﺎﺋﯾﺎ دون ﺗدﺧل ﻣﻧك
س : ٨ﻣﺎ ھو اﻟﻣﻘﺻود ﺑـ variableو valueﻓﻲ ﺟﺎﻓﺎ؟
: Variableھو اﻟﻣﺗﻐﯾر .
:Valueھو اﻋطﺎء او اﺳﻧﺎد ﻗﯾﻣﮫ ﻟذﻟك اﻟﻣﺗﻐﯾر .
١١
س : ١٠ﻛﯿﻒ اﻗﻮم ﺑﺈﻧﺸﺎء ﻛﺎﺋﻦ ﻣﻦ ﻛﻼس ﺑﺄﺷﻜﺎل ﻣﺨﺘﻠﻔﺔ )أي ﻋﻦ طﺮﯾﻖ ادراج
ﺑﺎراﻣﺘﺮات ﻣﺨﺘﻠﻔﺔ( ؟
ﯾﻜﻮن ھﺬا ﻋﻦ طﺮﯾﻖ اﻧﺸﺎء ﻋﺪد ﻣﻦ اﻟﻜﻮﻧﺴﺘﺮاﻛﺘﺮ ﻟﻨﻔﺲ اﻟﻜﻼس وذﻟﻚ ﺣﺴﺐ اﻟﺤﺎﺟﺔ
ﻟﮫ
ﻣﺜﺎل :
اﻧﺸﺎء اﻟﻜﻮﻧﺴﺘﺮاﻛﺘﺮ اﻻﻓﺘﺮاﺿﻲ }{)(public constructor
اﻧﺸﺎء اﻟﻜﻮﻧﺴﺘﺮاﻛﺘﺮ اﻻول ﺑﺒﺎراﻣﯿﺘﺮ واﺣﺪ }{)public constructor(int a
اﻧﺸﺎء اﻟﻜﻮﻧﺴﺘﺮاﻛﺘﺮ اﻟﺜﺎﻧﻲ ﺑﺒﺎراﻣﯿﺘﺮﯾﻦ public constructor(int a,int b){} ...
اﻟﺦ .
ﻛﻞ ﻣﺘﻐﯿﺮ ﻓﻲ ﻟﻐﺔ ﺟﺎﻓﺎ وﯾﺘﻤﯿﺰ ﺑﺨﺎﺻﯿﺔ ﻣﻦ اﻟﺨﻮاص اﻟﺜﻼﺛﺔ اﻟﻤﺬﻛﻮرة اﻋﻼه واﻟﺘﻲ
ﺗﺴﻤﻰ ﺑـ) ،(acces modefiresوھﺬه اﻟﺨﻮاص ھﻲ اﻟﺘﻲ ﺗﺴﻤﺢ ﺑﺈﻣﻜﺎﻧﯿﺔ اﻟﻮﺻﻮل اﻟﻰ
اﻟﻤﺘﻐﯿﺮ ﻣﻦ ﻋﺪﻣﮭﺎ .
ﺑﺮاﯾﻔﺖ ) :(privateو ھﻲ ﺧﺎﺻﯿﺔ ﺗﺸﻔﯿﺮ ﻣﺘﻜﺎﻣﻞ ﻟﻠﻤﺘﻐﯿﺮ ﺣﯿﺚ ﯾﻤﻨﻊ ﻣﻨﻌﺎ ﺑﺎﺗﺎ اﻟﻮﺻﻮل
اﻟﯿﮫ ﻣﻦ ﺧﺎرج اﻟﻜﻼس اﻟﻤﻌﺮف ﺑﺪاﺧﻠﮭﺎ ﻣﺒﺎﺷﺮة ) أي ﻋﻦ طﺮﯾﻖ اﺳﻤﮫ ( .
١٢
ﺑﺮوﺗﻜـﺘﺪ ) : (protectedوھﻲ ﺧﺎﺻﯿﺔ اﻗﻞ درﺟﺔ ﻣﻦ اﻟﺒﺮﯾﻔﺎﯾﺖ ﺣﯿﺚ ﺗﺴﻤﺢ ﻟﻠﻜﻼﺳﺎت
اﻟﻮارﺛﺔ ﻣﻦ اﻟﻜﻼس اﻻﺻﻠﻲ اﻟﺬي ﻋﺮف اﻟﻤﺘﻐﯿﺮ ﺑﺪاﺧﻠﮫ ﻣﻦ اﻟﻮﺻﻮل اﻟﯿﮫ ﺑﺴﮭﻮﻟﺔ ) أي
ﻋﻦ طﺮﯾﻖ اﻻﺳﻢ ،اﺳﻢ اﻟﻤﺘﻐﯿﺮ ﻣﺒﺎﺷﺮة ( .
ﺑﺎﺑﻠﯿﻚ ) : (publicھﻲ اﻟﺨﺎﺻﯿﺔ اﻟﺜﺎﻟﺜﺔ وھﻲ أﻟﯿﻦ اﻟﺨﻮاص ،ﺣﯿﺚ ﺗﺴﻤﺢ ﻟﻚ ﺑﺎﻟﻮﺻﻮل
ﻟﻠﻤﺘﻐﯿﺮ ﻣﻦ أي ﻣﻜﺎن ﺷﺌﺖ .
ﻣﻼﺣﻈﺔ :اذا ﻟﻢ ﻧﻘﻢ ﺑﺈدراج أي ﺧﺎﺻﯿﺔ ﻣﻦ ھﺬه اﻟﺨﻮاص ﻟﻠﻤﺘﻐﯿﺮ ﻓﺎن ﻟﻐﺔ ﺟﺎﻓﺎ ﺗﻘﻮم
ﺑﻤﻨﺤﮫ ﺧﺎﺻﯿﺔ Default Access Modifierاﻓﺘﺮاﺿﯿﺎ .
;int i = 500
ﻧﻼﺣظ أﻧﻧﺎ أﻧﺷﺄﻧﺎ ﻣﺗﻐﯾرا i
ھذا اﻟﻣﺗﻐﯾر ﯾﺣﺗوي ﻋﻠﻰ اﻟﻘﯾﻣﺔ اﻹﺑﺗداﺋﯾﺔ ، ٥٠٠وھﻛذا وﺑﻧﻔس اﻟطرﯾﻘﺔ ﯾﻣﻛﻧﻧﺎ إﻋداد اﻟﻣﺗﻐﯾرات
اﻟﻣﺧزﻧﺔ ﻟﻸﻋداد ..
١٣
وﯾﺧﺗﻠف اﻷﻣر ﺑﺎﻟﻧﺳﺑﺔ ﻟﻠﻣﺗﻐﯾرات اﻟﻣﺧزﻧﺔ ﻟﺳﻠﺳﻠﺔ ﻧﺻﯾﺔ ﺣﯾث ﯾﺟب وﺿﻊ ﻋﻼﻣﺎت اﻗﺗﺑﺎس
ﺣول اﻟﻘﯾﻣﺔ اﻟﻣراد ﺗﺧزﯾﻧﮭﺎ
;" String studentName = "Hamza
س : ١٣ھل ﯾﻣﻛن إﻋداد أﺣد اﻟﻣﺗﻐﯾرات ﻟﯾﺳﺎوي ﻗﯾﻣﺔ ﻣﺗﻐﯾر آﺧر ﻣن ﻧﻔس اﻟﻧوع ؟
ﻧﻌم ﯾﻣﻛﻧﻧﺎ إﻋداد ﻣﺗﻐﯾر ﻟﯾﺳﺎوي ﻗﯾﻣﺔ ﻣﺗﻐﯾر آﺧر ﻣن ﻧﻔس اﻟﻧوع ﻛﻣﺎ ﻧرى ﻓﻲ اﻟﻣﺛﺎل اﻟﺗﺎﻟﻲ
;int i = 500
; int k= i
س : ١٤ﻟﻛن ﻣﺎذا ﯾﺣدث إذا ﻟم أﺣدد ﻗﯾﻣﺔ اﺑﺗداﺋﯾﺔ ﻟﻠﻣﺗﻐﯾر؟
ھﻧﺎ ﯾﺣدث ﺧطﺄ وﯾظﮭر ﻣﺗرﺟم اﻟﺟﺎﻓﺎ رﺳﺎﻟﺔ ﺧطﺄ وﻟذﻟك ﯾﺟب ﺗﺣدﯾد ﻗﯾﻣﺔ أوﻟﯾﺔ ﻟﻠﻣﺗﻐﯾر
١٤
س : ١٦ﻣﺎذا ﻋن اﻟﻌﻣﻠﯾﺎت اﻟرﯾﺎﺿﯾﺔ ﻋﻠﻰ اﻟﻣﺗﻐﯾرات ؟
ﻛﻣﺎ ﻗﻠﻧﺎ ﺳﺎﺑﻘﺎ ﺗطﻠب اﻟﺑرﻣﺟﺔ ﻋﻣوﻣﺎ ﻗدرات رﯾﺎﺿﯾﺔ ﻣﻌﯾﻧﺔ وﻓﻛر رﯾﺎﺿﻲ ﻓﻲ اﻟﻣﺑرﻣﺞ وﻋﻠﻰ
اﻟرﻏم ﻣن ﻗﯾﺎم اﻟﺣﺎﺳب ﺑﻛل اﻟﻌﻣﻠﯾﺎت اﻟرﯾﺎﺿﯾﺔ اﻻ أﻧﮫ ﯾرﯾد ﺗﻌﻠﯾﻣﺎت وأواﻣر ﻣن اﻟﻣﺑرﻣﺞ ﺣﺗﻰ
ﯾﻘوم ﺑﮭﻛذا ﻋﻣﻠﯾﺎت وﺗﺳﻣﻰ اﻷواﻣر اﻟﺗﻲ ﺗﻌطﯾﮭﺎ ﻟﻠﺣﺎﺳب واﻟﺗﻲ ﺗﺣﺗﺎج اﻟﻰ ﻋﻣﻠﯾﺎت رﯾﺎﺿﯾﺔ
ﺗﻌﺎﺑﯾر وﯾﻣﻛﻧﻧﺎ
اﺳﺗﺧدام ھذه اﻟﺗﻌﺎﺑﯾر ﻟﻠﻘﯾﺎم ﺑﻌدة ﻣﮭﺎم ﻣﻧﮭﺎ ﺗﻐﯾﯾر ﻗﯾﻣﺔ ﻣﺗﻐﯾر واﺳﺗﻌﻣﺎل اﻟﻣﻌﺎدﻻت ﻓﻲ اﻟﺑرﻧﺎﻣﺞ
وﺗﺳﺟﯾل ﻋدد ﻣرات ﺣدوث ﻋﻣل ﻣﺎ ﻓﻲ اﻟﺑرﻧﺎﻣﺞ وﺗﺳﺗﻌﻣل ھذه اﻟﺗﻌﺎﺑﯾر اﻟﺟﻣﻊ واﻟطرح واﻟﺿرب
واﻟﻘﺳﻣﺔ وﺑﺎﻗﻲ اﻟﻘﺳﻣﺔ
ﯾﻌﻧﻲ ھذا أﻧﻧﺎ رﺟﻌﻧﺎ اﻟﻰ اﻟﻣرﺣﻠﺔ اﻻﺑﺗداﺋﯾﺔ واﻟﻰ ﻣدرس اﻟﺣﺳﺎب اﻟﯾس ﻛذﻟك
ﻣﺎ أﺟﻣل اﻟﻌودة اﻟﻰ ذﻛرﯾﺎت اﻟطﻔوﻟﺔ واﻟﻣرﺣﻠﺔ اﻷوﻟﻰ وﺗﻠك اﻷﯾﺎم اﻟﺧواﻟﻲ ﺣﯾث اﻟﺑراءة واﻷﺣﻼم
اﻟوردﯾﺔ ـ ﻣﺎ ﻋﻠﯾﻧﺎ ـ ﻧرﺟﻊ ﺑﺎﻟذاﻛرة اﻟﻰ أﯾﺎم ﻣدرس اﻟرﯾﺎﺿﯾﺎت ﻓﻲ اﻟﻣرﺣﻠﺔ اﻹﻋدادﯾﺔ وﻧﺳﺗرﺟﻊ
اﻟﻌﻣﻠﯾﺎت اﻷرﺑﻊ اﻟﺷﮭﯾرة ﻓﻲ اﻟﺣﺳﺎب اﻟﺟﻣﻊ واﻟطرح واﻟﺿرب واﻟﻘﺳﻣﺔ وﻋﻼﻣﺎﺗﮭﺎ اﻷرﺑﻊ
+اﻟﻣﻌروﻓﺔ
و -و * و /ھذه اﻟرﻣوز ﺗﺳﻣﻰ ﻣؤﺛرات وﺗﺳﺗﻌﻣل ھذه اﻟﻣؤﺛرات ﻓﻲ ﺑراﻣﺞ اﻟﺟﺎﻓﺎ ﻹﺟراء
اﻟﻌﻣﻠﯾﺎت اﻟرﯾﺎﺿﯾﺔ ﻋﻠﻰ اﻷرﻗﺎم طﺑﻌﺎ ﯾراودك ﺗﺳﺎؤل ﻋن اﻹﺧﺗﻼف ﺑﯾن * و × وﺑﯾن /و ÷
وﻟﻛن ﻛل أﻣر ﻧﺗﻔﻖ ﻓﯾﮫ ﻋﻠﻰ ﻗواﻋد ﻣن اﻟﺑداﯾﺔ ﯾﺳﮭل اﻷﻣور وھذا ﺑﻣﺛﺎﺑﺔ اﻟدﺳﺗور اﻟذي ﻧﻣﺷﻲ ﻋﻠﻰ
ﻣﻧﮭﺎﺟﮫ
operators ﻣﻌﺎﻣﻼت )ﻣؤﺛرات (
ﻧﺳﺗﻌﻣل اﻟﻌﻼﻣﺔ +ﻹﺟراء ﻋﻣﻠﯾﺔ اﻟﺟﻣﻊ
ﻧﺳﺗﻌﻣل اﻟﻌﻼﻣﺔ -ﻟﺗﻌﺑﯾر اﻟطرح
١٥
س : ١٧أﻻ ﺗرى أن اﻷﻣور ﻗد ﺑدأت ﻓﻲ اﻟﺗﻌﻘﯾد ﯾﻌﻧﻲ إذا ﻛﺎن ھﻧﺎك أﻛﺛر ﻣن ﻋﻣﻠﯾﺔ ﺣﺳﺎﺑﯾﺔ ﻓﻲ
اﻟﺑرﻧﺎﻣﺞ اﻻ ﯾﻧﺑﻐﻲ أن أﻋرف اﻟﺗرﺗﯾب اﻟذي ﯾﺗﺑﻌﮫ اﻟﺣﺎﺳب ﻹﻧﺟﺎز ھذه اﻟﻌﻣﻠﯾﺎت ﺣﺗﻰ ﯾﻣﻛﻧﻧﻲ
ﺿﺑط ﻗﯾﻣﺔ اﻟﻣﺗﻐﯾر ؟
أﺣﺳﻧت ھذا ﻣوﺿوع ھﺎم ﺟدا وﻧﺳﺗرﺟﻊ ﻣن اﻟدراﺳﺔ ﻓﻲ اﻟﻣرﺣﻠﺔ اﻟﺛﺎﻧوﯾﺔ ﻛﯾف ﻛﺎن ﻣدرس
اﻟرﯾﺎﺿﯾﺎت ﯾرﻛز ﻋﻠﻰ ھذا اﻷﻣر وﻣن ﯾﺗوزع ﻋﻠﻰ اﻵﺧر وﻣن ﯾﺳﺑﻖ ﻣن ﻓﻲ ھذه اﻟﻌﻣﻠﯾﺎت
اﻟرﯾﺎﺿﯾﺔ وﻓﻲ ﺑراﻣﺞ اﻟﺣﺎﺳب ﺗﺗم ھذه اﻟﻌﻣﻠﯾﺎت ﺣﺳب اﻟﺗرﺗﯾب اﻟﺗﺎﻟﻲ
ﯾﺗم أوﻻ اﻟزﯾﺎدة واﻟﻧﻘص ﺑﻣﻘدار واﺣد
س :١٨ھل ﯾرﺟﻊ اﻟﻣﺗﻐﯾر ﺑوﻟﯾﺎن اﻟذي ﯾﺳﺗﻌﻣل ﻟﺗﺧزﯾن ﻗﯾﻣﺗﯾن ﻓﻘط ھﻣﺎ ـ ﺻواب ،ﺧطﺄ ؟
ﻧﻌم ﯾﺎ ﺻدﯾﻖ اﻟﺟﻣﻠﺔ اذا ﺗﻌﻣل ﺑﻧﻔس اﻟﻣﺑدأ ﺣﯾث ﺗﺧﺗﺑر اﻟﺷرط ﻣن ﺣﯾث اﻟﺻواب أو اﻟﺧطﺄ وﻻ
ﺗﻘوم ﺑﺎﻟﻌﻣل إﻻ إذا ﻛﺎن اﻟﺷرط ﺻﺣﯾﺣﺎ
ﻣﺛﺎل ﺑﺳﯾط ﯾوﺿﺢ اﻷﻣور ﻟو ﺳﻣﺣت ؟
)if (hour < 12
;)"System.out.println("Good morning.
وﻧﻼﺣظ ھﻧﺎ أن ﺟواب اﻟﺷرط ﯾرﺗﺑط ﺑﻔﻌل اﻟﺷرط ﺑﻣﻌﻧﻰ أﻧﮫ اذا ﻟم ﯾﺗﺣﻘﻖ اﻟﺷرط ﻓﺎﻧﮫ ﻟن ﯾﺣدث
ﺷﻲء
وﻟﻛن ﻓﻲ ﺑﻌض اﻟﺣﺎﻻت أرﯾد أن أﻗﺎرن ﺑﯾن ﻗﯾﻣﺗﯾن ﻓﻣﺎذا أﻓﻌل ؟
اذا أردت أن ﺗﺧﺗﺑر ھل ﻗﯾﻣﺔ ﻣﻌﯾﻧﺔ ﺗﺳﺎوي أﺧرى أو أﻗل ﻣﻧﮭﺎ ﯾﻣﻛﻧك اﺳﺗﺧدام اﻟﻣؤﺛر أﺻﻐر ﻣن
١٦
=> أو ﯾﺳﺎوي
ﯾﺳﺗﺧدم ﻻﺧﺗﺑﺎر أﻛﺑر ﻣن أو ﯾﺳﺎوي =<
ﻧﻌم ﯾﻣﻛﻧك اﺧﺗﺑﺎر ﻣﺎ اذا ﻛﺎن ﻣﺗﻐﯾر ﻣﺎ ﯾﺳﺎوي ﻗﯾﻣﺔ ﻣﻌﯾﻧﺔ أو ﻻ وھل ﻣﺗﻐﯾر ﻣﺎ ﯾﺳﺎوي ﻣﺗﻐﯾر آﺧر
ﺑﺎﺳﺗﻌﻣﺎل اﻟﻣؤﺛر == وﻧﻼﺣظ أﻧﮫ ﯾﺗﻛون ﻣن ﻋﻼﻣﺗﻲ ﯾﺳﺎوي وﻧؤﻛد ﻋﻠﻰ أﻧﮫ ﻻ ﺗﺳﺗﻌﻣل ﻋﻼﻣﺗﻲ
اﻟﺗﺳﺎوي اﻻ ﻓﻲ اﻟﺟﻣل اﻟﺷرطﯾﺔ
طﯾب واﺧﺗﺑﺎر ﻋدم اﻟﻣﺳﺎوة ﻛﯾف ﯾﻛون ؟
ﻛﻼﻣك ﺻﺣﯾﺢ ﯾﺎﺻدﯾﻘﻲ ﻣﻌك ﺣﻖ وأﺑﺷرك أﻧك اﻵن ﻗد ﺑدأت ﺗﻧﺗﮭﺞ اﻟﻧﮭﺞ اﻟﺻﺣﯾﺢ ﻓﻲ اﻟﺑرﻣﺟﺔ
وھذه اﻟﻣﻠﺣوظﺔ ﺗﺄﺧذﻧﺎ اﻟﻰ اﻟﻐوص ﻓﻲ ﺑﺣر اﻟﺑرﻣﺟﺔ ﻟﻧﺑﺣث ﻋن اﻟدر ﻓﻲ ﺻدﻓﺎﺗﮫ
ﻟﻛﻲ ﺗﻧﺟز أﻛﺛر ﻣن ﻣﮭﻣﺔ ﻛﻧﺗﯾﺟﺔ ﻟﺗﺣﻘﻖ اﻟﺷرط ﻋﻠﯾك أن ﺗﻧﺷﺄ ﺟﻣل ﻛﺗﻠﯾﺔ ﺑواﺳطﺔ } { اﻟﺣﺎﺻرﺗﯾن
١٧
ﺑﺎﻟﻣﻧﺎﺳﺑﺔ اﻟﺟﻣل اﻟﻛﺗﻠﯾﺔ ھﻲ ﺟﻣل ﻣرﺗﺑﺔ ﻓﻲ اطﺎر ﻣﺟﻣوﻋﺔ
) (main
وھذه اﻟﻛﺗﻠﺔ ﺗﺑدأ ﺑﺣﺎﺻرة اﻟﻔﺗﺢ } وﺗﻧﺗﮭﻲ ﺑﺣﺎﺻرة اﻟﻐﻠﻖ { اذا ً ﻧﺳﺗﻌﻣل اﻟﺟﻣل اﻟﻛﺗﻠﯾﺔ ﻣﻊ ﻓﻌل
اﻟﺷرط ﻟﻛﻲ ﻧﺟﻌل اﻟﺣﺎﺳب ﯾﻘوم ﺑﺈداء ﻋدة ﻣﮭﺎم ﻛﻧﺗﯾﺟﺔ ﻟﺗﺣﻘﻖ اﻟﺟﻣﻠﺔ اﻟﺷرطﯾﺔ
{ )if (minute != 0
;)" " System.out.print(" " + minute +
;)"System.out.print( (minute != 1) ? "minutes" : "minute
;)"System.out.print(" past
}
س : ١٩ﻓﻲ ﺑﻌض اﻷﺣﯾﺎن ﻧرﯾد ﻣن اﻟﺣﺎﺳب اﻧﺟﺎز ﻋﻣل ﻣﺎ اذا ﻛﺎن اﻟﺷرط ﺻﺣﯾﺣﺎ واﻟﻘﯾﺎم ﺑﻌﻣل
آﺧر اذا ﻛﺎن ھذا اﻟﺷرط ﻏﯾر ﺻﺣﯾﺢ ﻓﻣﺎذا ﻧﻔﻌل أﺳﺗﺎذي اﻟﻌزﯾز ﻓﻲ ھذه اﻟﻣﺷﻛﻠﺔ ؟
ﻟﻛﻲ ﺗﻔﻌل ذﻟك ﻋﻠﯾك اﺳﺗﻌﻣل اﻟﺟﻣﻠﺔ
١٨
)'else if ( grade = = 'B
;)" ﻧﺎﺟﺢ ﺑﺗﻘدﯾر ﺟﯾد ﺟدا "(System.out.println
)'else if ( grade = = 'C
;)" ﻧﺎﺟﺢ ﺑﺗﻘدﯾر ﺟﯾد"(System.out.println
)'else if ( grade = = 'D
;)" ﻧﺎﺟﺢ ﺑﺗﻘدﯾر ﻣﻘﺑول"(System.out.println
else
;)" راﺳب وﺑﺎق ﻟﻼﻋﺎدة "(System.out.println
س :٢٠اﻟﺣﺎﻻت اﻟﺳﺎﺑﻘﺔ ﻓﯾﮭﺎ ﺷرطﺎن ﻓﻘط ﺑﺎﺳﺗﺛﻧﺎء اﻟﻣﺛﺎل أﻋﻼه اﻻ ﯾوﺟد طرﯾﻘﺔ أﺧرى ﻟﻠﺗﻌﺎﻣل
ﻣﻊ ﺷروط ﻣﺧﺗﻠﻔﺔ ﻣﺗﻧوﻋﺔ
ﯾوﺟد طرﯾﻘﺔ أﺧرى ﻻﺧﺗﺑﺎر ﻣﺟﻣوﻋﺔ ﻣﺗﻧوﻋﺔ ﻣن اﻟﺷروط واﻻﺳﺗﺟﺎﺑﺔ ﻟﻛل ﻣﻧﮭﺎ ﻣﻧﻔردا ھذه
اﻟطرﯾﻘﺔ ھﻲ اﺳﺗﻌﻣﺎل اﻟﺟﻣﻠﺔ
switch
----------------------------------------------------------
{ )switch (month
case (1):
;)"System.out.print("January
;break
case (2):
;)"System.out.print("February
;break
case (3):
;)"System.out.print("March
١٩
break;
case (4):
System.out.print("April");
break;
case (5):
System.out.print("May");
break;
case (6):
System.out.print("June");
break;
case (7):
System.out.print("July");
break;
case (8):
System.out.print("August");
break;
case (9):
System.out.print("September");
break;
case (10):
System.out.print("October");
break;
case (11):
System.out.print("November");
٢٠
;break
case (12):
;)"System.out.print("December
}
ﯾﺣدد اﻟﺳطر اﻷول ﻣن اﻟﺟﻣﻠﺔ ﺳوﯾﺗش اﻟﻣﺗﻐﯾر اﻟﻣراد اﺧﺗﺑﺎره وھو ھﻧﺎ ﻣﺗﻐﯾر اﻟﺷﮭر ﺛم ﻧﺗﺳﺗﻌﻣل
ﺑﻌد ذﻟك اﻟﺣﺎﺻرﺗﯾن ﻟﺗﻛوﯾن ﺟﻣﻠﺔ ﻛﺗﻠﯾﺔ
اﻟﺟﻣﻠﺔ case
ﺗﺧﺗﺑر ھذه اﻟﺟﻣﻠﺔ ﻗﯾﻣﺔ ﻣﺗﻐﯾر اﻻﺧﺗﺑﺎر اﻟﻣﺣدد ﻓﻲ اﻟﺟﻣﻠﺔ ﺳوﯾﺗش ﻣﻘﺎرﻧﺔ ﺑﻘﯾﻣﺔ ﻣﻌﯾﻧﺔ
٢١
س :٢٢ﻣﺎ ھﻲ اﻟـ packages؟
ھﻲ ﻣﺟﻣوﻋﺔ ﻣن اﻟﻛﻼﺳﺎت ﯾﺗم اﺳﺗدﻋﺎﺋﮭﺎ ﻋﻧد اﻟﺣﺎﺟﺔ إﻟﯾﮭﺎ .وﺗﺳﺗﺧدم ﻛﻠﻣﺔ import
ﻻﺳﺗدﻋﺎﺋﮭﺎ ،وﺗﻘوم ﺑﺎﺳﺗدﻋﺎء ﺟﻣﯾﻊ اﻟﻛﻼﺳﺎت ذات اﻟﻌﻼﻗﺔ ﻓﻲ اﻟﺑﺎﻛﺞ ﻋﻧد وﺿﻊ ﻋﻼﻣﺔ
اﻟﻧﺟﻣﺔ )*( .
٢٢
س :٢٦ﻣﺎ ﻣﻌﻧﻰ اﺳﺗﺧدام staticﻓﻲ اﻟـ methods & variables؟
ﻋﻧدﻣﺎ ﯾﺣﺗوي اﻟﻛﻼس ﻋﻠﻲ أي ﻣن static methods OR variablesﺗﻌﻧﻲ اﻧﮭﺎ
ﺗﺣﺗوي ﻋﻠﻰ ﻧﺳﺧﺔ واﺣدة ﻓﻘط ﻓﻲ اﻟﻛﻼس ﻟﻛل اﻻوﺑﺟﻛﺗز .
ﯾﺗم اﺳﺗﺧدام static variablesﻣﻊ اﻟﺛواﺑت او ﻋﻧد ﺗﻌرﯾف variableواﺣد ﻓﻲ ﻛل
اﻟﻛﻼﺳﺎت .
اﻟﻔرق ﺑﯾﻧﮭﻣﺎ:
اﻟﺣﺎﻟﺔ اﻷوﻟﻰ )&( :
ﻓﻲ ھذه اﻟﺣﺎﻟﺔ ﯾﻘوم اﻟﻣﺗرﺟم )اﻟﻛوﻣﺑﯾﻠر( ﺑﺎﻟﻧظر إﻟﻰ اﻟﻣدﺧل اﻷول ﻓﺈذا ﻛﺎن ﺧﺎطﺋﺎ ﻓﺈﻧﮫ
ﻻ ﯾﻔﺣص اﻟﻣدﺧل اﻟﺛﺎﻧﻲ .
ﻣﺛﺎﻟﮫ:
)(public void and
{
; int a = 10
; int b = 5
))if ((a == 22) & (++b == 5
;)"System.out.println("case one
;)System.out.println (b
}
٢٣
ﺑﺎﻟطﺑﻊ ﻟن ﯾﻘوم اﻟﻣﺗرﺟم ﺑطﺑﺎﻋﺔ )" ("case oneﻷن أﺣد اﻟﺷرطﯾن ﻟم ﯾﺗﺣﻘﻖ وﻟﻛن
ﻋﻧدﻣﺎ ﯾطﺑﻊ bﻓﺈﻧﮫ ﺳﯾطﺑﻌﮭﺎ ﻛﻣﺎ ھﻲ دون أن ﯾزﯾد ﻋﻠﯾﮭﺎ ﻷﻧﮫ ﻟم ﯾﻔﺣص اﻟﻣدﺧل اﻟﺛﺎﻧﻲ
..
ﻟذا ﺳﯾطﺑﻊ ﻟﻧﺎ .. ٥
{
; int a = 10
; int b = 5
))if ((a == 22) && (++b == 5
;)"System.out.println("case two
;)System.out.println (b
}
أﯾﺿﺎ ھﻧﺎ ﻟن ﯾﻘوم اﻟﻣﺗرﺟم ﺑطﺑﺎﻋﺔ )" ("case twoﻷن أﺣد اﻟﺷرطﯾن ﻟم ﯾﺗﺣﻘﻖ وﻟﻛن
ﻋﻧدﻣﺎ ﯾطﺑﻊ bﻓﺈﻧﮫ ﺳﯾزﯾد ﻋﻠﯾﮭﺎ ﻷﻧﮫ ﻗﺎم ﺑﻔﺣص اﻟﻣدﺧل اﻟﺛﺎﻧﻲ..
ﻟذا ﺳﯾطﺑﻊ ﻟﻧﺎ .. ٦
٢٤
String ھذه اﻟطرﯾﻘﺔ ﺗﻧﺗﺞ ﺻورة ﻧﺻﯾﺔ ﻟﻠﻛﺎﺋن ﻋﻠﻰ ﺷﻛل ﻛﺎﺋن
Returns a string representation of the object. In general, the toString method returns a string that "textually
represents" this object. The result should be a concise but informative representation that is easy for a person
to read. It is recommended that all subclasses override this method.
int age;
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
System.out.println(p);
٢٥
.Object اﻟﻣوروﺛﺔ ﻣنtoString لoverride ﺣﺻﻠﻧﺎ ﻋﻠﻰ ھذه اﻟﻧﺗﯾﺟﺔ ﻹﻧﻧﺎ ﻟم ﻧﻌﻣل
int age;
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
@Override
return firstName + " " + lastName + " is " + age + " years
old.";
٢٦
س :٣٠ﻛﯾف أﻋﻣل Compileﻟﻣﻠف javaﺑﺎﺳﺗﻌﻣﺎل ﺳطر اﻷواﻣر؟
ﻧﻛﺗب اﻷﻣر javacﻣﺗﺑوﻋﺎ ﺑﺎﺳم اﻟﻣﻠف
ﻣﺛﻼ
javac arabteam.java
٢٧
س :٣٣ﻣﺎ ھﻲ اﻟطرﯾﻘﺔ ﻟﺗﻌرﯾف اﻟﺛواﺑت ) (Constants؟
ﯾﺳﺗﺧدم ﻣﻊ اﻟﺛواﺑت ﻛﻠﻣﺔ finalﻟﻠدﻻﻟﺔ ﻋﻠﻰ اﻧﮭﺎ ﻗﯾﻣﺔ ﻧﮭﺎﺋﯾﺔ ﻏﯾر ﻗﺎﺑﻠﺔ ﻟﻠﺗﻐﯾﯾر .
ﻣﺛل final int s = 2 ; :
٢٨
س : ٣٥ﻣﺎ ھو اﻟﻔرق ﺑﯾن String and Stringbuffer؟
:Stringﯾﻌﺗﺑر ﻛﻧوع ﻟﺗﻌرﯾف ﻣﺗﻐﯾر ﻧﺻﻲ وﻻ ﯾﺣﺗﺎج إﻟﻰ newوﻻ ﯾﻣﻛن اﻟﺗﻌدﯾل ﻋﻠﯾﮫ
اﺛﻧﺎء ﺗﺷﻐﯾل اﻟﺑرﻧﺎﻣﺞ . RunTime
: Stringbufferﻟﺗﻌرﯾف ﻣﺗﻐﯾر ﻧﺻﻲ اﯾﺿﺎ وﻟﻛﻧﮫ ﯾﺣﺗﺎج إﻟﻰ newوﯾﻣﻛن اﻟﺗﻌدﯾل
ﻋﻠﯾﮫ ﻓﻲ أﺛﻧﺎء . RunTime
ھو ﻛﻼس ﻣﺣﺟوز ﻓﻲ ﻟﻐﺔ ﺟﺎﻓﺎ وﯾوﺟد ﻓﻲ داﺧﻠﮭﺎ ﻋده دوال ﻟﻠوﻗت واﻟﺗﺎرﯾﺦ وﺗﻐﯾر
اﻟوﻗت ﺣﺳب اﻟﻣوﻗﻊ .
اﻟوراﺛﺔ )(Inheritance
ھﻲ ﺑﻣﻔﮭوﻣﮭﺎ اﻟﺷﺎﺋﻊ ان ﯾرث اﻻﺑن ﻣن اﺑﯾﮫ ﺑﻌض او ﻛل ﺻﻔﺎﺗﮫ و ﺧﺎﺻﯾﺎﺗﮫ ،ﻓﻠﻐﺔ
ﺟﺎﻓﺎ ﺗوﻓر ﻟك ھذه اﻟﺧﺎﺻﯾﺔ ﻣن ﺧﻼل اﻣﻛﺎﻧﯾﺔ وراﺛﺔ ﻛﻼس ﻣن ﻛﻼس اﺧر ﺣﯾث ﯾﺻﺑﺢ
٢٩
اﻟﻛﻼس اﻟﺟدﯾد ﯾﻣﺗﻠك ﻛل ﺧواص اﻟﻛﻼس اﻻول )ﻣﺗﻐﯾرات ،دوال ...اﻟﺦ ( وﯾﺳﻣﻰ
اﻟﻛﻼس اﻟﺟدﯾد ﺑـ ﺳﺎب ﻛﻼس ).(SubClass
س : ٣٨ھل ﻧﺳﺗطﯾﻊ اﻟوﺻول اﻟﻰ ﻛل ﻣﺗﻐﯾرات اﻟﻛﻼس اﻻﺻﻠﻲ ﻣن اﻟﻛﻼس اﻟﺳﺎب
ﻛﻼس ) (SubClassﻋن طرﯾﻖ اﺳم اﻟﻣﺗﻐﯾر ﻣﺑﺎﺷرة
اذا ﻛﺎﻧت ﺑراﯾﻔت ؟؟
اﻟﺟواب :ﻻ ،ﻻ ﯾﻣﻛﻧك اﻟوﺻول اﻟﻰ اﻟﻣﺗﻐﯾرات ﺑﺻﯾﻐﺔ ﺑراﯾﻔت ﻋن طرﯾﻖ اﺳم
اﻟﻣﺗﻐﯾر ﻣﺑﺎﺷرة ﺑل ﻋن طرﯾﻖ اﻟﺳﯾت ) (setو اﻟﺟﯾت ) (getاﻟﺧﺎﺻﺔ ﺑﺎﻟﻣﺗﻐﯾر.
ﻣﻼﺣظﺔ :ﻣن اﻟﻣﺳﺗﺣﺳن ﺟﻌل اﻟﻣﺗﻐﯾر ﺑﺻﯾﻐﺔ ﺑروﺗﻛﺗد ﻓﻲ اﻟﻛﻼس اﻻﺻﻠﻲ ﻟﯾﺳﮭل
ﻋﻠﯾك اﻟوﺻول اﻟﯾﮫ ﻣن ﺧﻼل اﻟﻛﻼﺳﺎت اﻟوارﺛﺔ ﻣن ھذا اﻟﻛﻼس .
اﻹﺳﺗﺛﻧﺎءات )(Exceptions
س :٣٩ﻣﺎ ھﻲ اﻹﺳﺗﺛﻧﺎءات ؟
ھو ﺣدث ﯾظﮭر اﺛﻧﺎء ﺗﻧﻔﯾذ اﻟﺑرﻧﺎﻣﺞ وﯾﻌرﻗل ﺧط ﺳﯾر اﻟﺑرﻧﺎﻣﺞ اﻟطﺑﯾﻌﻲ وﯾﺗم ﺣﻣل ھذه
اﻻﺳﺗﺛﻧﺎءات ﻟﻠﺗﻌﺎﻣل ﻣﻊ اﻻﺧطﺎء اﻟﻣﺗوﻗﻌﺔ واﻟﻐﯾر ﻣﺗوﻗﻌﺔ .
اﻣﺛﻠﺔ ﻋﻠﻰ ﺑﻌض اﻻﺧطﺎء اﻟﻣﺗوﻗﻌﺔ :
ﺑرﻧﺎﻣﺞ ﯾﺣﺎول ﻗراءة ﻟﯾﻧك ﻏﯾر ﻣوﺟود
ﺑرﻧﺎﻣﺞ ﻣﺻﻣم ﻟﻘراءة ارﻗﺎم اﻧﺗﺟر ﻣن ﻣﻠف ﻓﯾﺟدھﺎ ﻣن ﻧوع ﺳﺗرﯾﻧﺞ .
٣٠
س :٤٠ﻣﺎ ھﻲ ﻋﻣﻠﯾﺔ ﺣﻣل اﻻﺳﺗﺛﻧﺎءات ) (Exception handle؟
-١ﻋﻧدﻣﺎ ﯾﺟد اﻟﺳﺳﺗم ﺧطﺄ ﯾﺗم إﯾﻘﺎف ﺗدﻓﻖ ﺗﻧﻔﯾذ اﻟﺑﯾﺎﻧﺎت ﻓﻲ اﻟﺑرﻧﺎﻣﺞ وﺗﺳﻣﻰ ﺑﻌﻣﻠﯾﺔ
ﻗذف اﻻﺳﺗﺛﻧﺎء . throw the exception
-٢ﯾﺗم ﺧﻠﻖ اوﺑﺟﻛت ﻣن ﻧوع ﺧﺎص ﯾﺳﻣﻲ exceptionوﯾﺣﻣل ﻣﻌﻠوﻣﺎت ﻋن اﻟﺧطﺄ
اﻟذي ﺣدث .
-٣ﺑﻌد ذﻟك ﯾﺗم اﻟﺗﻌﺎﻣل ﻣﻊ اﻟﺧطﺄ واﻟﺗﻘﺎطﮫ واﯾﺟﺎد ﺣل ﻣﻧﺎﺳب وﺗﺳﻣﻰ ﺑﻌﻣﻠﯾﺔ
. catch the exception
٣١
ﯾﺗم اﺳﺗﺧدام finally blockداﺋﻣﺎ ﯾﺗم ﺗﻧﻔﯾذه ﺑﻌد ال tryﺑﻠوك وﯾﺳﺗﺧدم ﻟوﺿﻊ ﻛود
ﻧظﯾف ﺧﺎﻟﻲ ﻣن اﻻﺳﺗﺛﻧﺎءات.
-٢ﺗﻌرﯾف اﻻﺳﺗﺛﻧﺎء exceptionﻓﻲ راس اﻟﻣﯾﺛود : in the method header
ﯾﺗم ﺗﻌرﯾف اﻻﺳﺗﺛﻧﺎء ﻓﻲ راس اﻟﻣﯾﺛود ﺑﺎﺳﺗﺧدام ﻛﻠﻣﺔ Throwsﯾﻠﯾﮭﺎ ﻧوع اﻻﺳﺗﺛﻧﺎء ..
public Boolean check format (String fileName) throws EO
Exception
ﻋﺎم
س System.out.print ('1'+1); : ٤٢
ﻟﻣﺎذا اﻵوت ﺑوت طﺑﻊ ٥٠؟!
ﻻن character 1
ﻗﯾﻣﺗﮫ ب اﻻﺳﻛﻲ ﻛود ٤٩
٣٢
وھذا ﺟدول آﺳﻛﻲ ﯾوﺟد ﻓﯾﮫ ﻛل charوﻗﯾﻣﺗﮫ ب اﻟـ Decemal
http://www.unfiction.com/dev/tutorial/ascii.html
طﺑﻌﺎ ﻟن ﺗﻘوم ﺑﻣﺳﺢ Class1ﻣﺑﺎﺷرة ،ﺑل أوﻻ ﺳﺗﻘوم ﺑوﺻﻔﮭﺎ ﺑﺄﻧﮭﺎ ،deprecated
أي أﻧﮭﺎ ﻣﺗﻘﺎدﻣﺔ)ﻗدﯾﻣﺔ أو ﻣﮭﻣﻠﮫ( ،ﺣﺗﻰ ﯾﻌرف اﻟﻣﺳﺗﻌﻣﻠون أن ھذه اﻟﻔﺋﺔ ﻣﺗﻘﺎدﻣﺔ وﯾﺟب
اﺳﺗﻌﻣﺎل .Class2ﺑﻌد ذﻟك ،ﻓﻲ اﻟﻧﺳﺦ اﻟﻘﺎدﻣﺔ ،ﯾﻣﻛﻧك ﺣذﻓﮭﺎ.
ﻓﻲ أﻛﺛر اﻷﺣﯾﺎن ﺗﺳﺗﺧدم اﻟـ Deprecatedﻟوﺻف اﻟطراﺋﻖ Methodsاﻟﻣﺗﻘﺎدﻣﺔ
واﻟﺗﻲ ﯾﻧﺻﺢ ﺑﻌدم اﺳﺗﺧداﻣﮭﺎ
ﻣﺛﺎل :ﻓﻲ JFrameاﻟطرﯾﻘﺔ Showھﻲ Deprecatedﺣﯾث ﺗم اﺳﺗﺑداﻟﮭﺎ ﺑﺎﻟطرﯾﻘﺔ
setVisible
٣٣
وھو ﺑﺎﺧﺗﺻﺎر اﻟﻘدرة ﻋﻠﻰ أﻧﻲ ارﺳل أو أﺑﻌث Typeﻛﺑراﻣﯾﺗر ،وال Genericاﻗدر
اﺳﺗﺧدﻣﮫ ﻣﻊ اﻟﻛﻼس أو اﻟﻣﯾﺛود ،ﯾﻌﻧﻲ ﻛﺄﻧﻲ اﻗوﻟﮫ أن اﻟﻣﯾﺛود اﻟﻠﻲ اﺳﺗﺧدﻣت ﻣﻌﮭﺎ ال
Genericأﻧﮭﺎ راح ﺗﺎﺧذ Typeﻏﯾر ﻣﺣدده ﻓﻲ وﻗت إﻧﺷﺎﺋﻲ ﻟﻠﻛﻼس أو اﻟﻣﯾﺛود ،
طﯾب ﯾﻌﻧﻲ ﻣﺗﻰ ﺗﺣدد ﻟﮫ اﻟﻘﯾﻣﺔ ؟ راح ﺗﺣدده ﻟﮫ أﻧت أو اﻟﻣﺳﺗﺧدم وھو ﯾﺳﺗﺧدم اﻟﻛﻼس
أو اﻟﻣﯾﺛود ،ﻓﻌﺷﺎن ﻛذا ھذا ﯾﻌﺗﺑر أﻣر ﻟل Compilerأﻧﮫ ﯾﺷﯾّك ﻋﻠﻰ Compiler
Timeﻋﻠﻰ اﻟﻘﯾﻣﺔ أو ال Typeاﻟﻠﻲ ﻣرﺳﻠﮫ ﻟﮫ ،وطﺑﻌﺎ ھو ﻗﺳم ﻛﺑﯾر ﺟدا ﺑس ھذا
ﺷرح ﺑﺳﯾط ﻟﮫ .
GUI
س : ٤٦ﻣﺎ ھﻲ ) GUIواﺟﮭﺔ اﻟﻣﺳﺗﺧدم اﻟرﺳوﻣﯾﺔ( ﻓﻲ اﻟﺟﺎﻓﺎ؟
• ﻋﻧﺻر اﻟـ GUIھو ﻛﺎﺋن ﯾﺗﻔﺎﻋل ﻣﻌﮭﺎ اﻟﻣﺳﺗﺧدم ﻋن طرﯾﻖ ﻣﺎوس أو ﻟوﺣﺔ اﻟﻣﻔﺎﺗﯾﺢ،
أو أي ﻧوع آﺧر ﻣن اﻟﻣدﺧﻼت.
٣٤
• وﻣن اﻷﻣﺛﻠﺔ اﻟﻔﻌﻠﯾﺔ إذا ﺗﻌﺎﻣﻠﻧﺎ ﻣﻊ ﻛﻼس JOptionPaneﻣﺛﻼ ً ،ﻧﺳﺗﺧدم اﻟﻣﯾﺛود
)( showInputDialogﻟﻠﺣﺻول ﻋﻠﻰ ﻣدﺧﻼت ﻣن اﻟﻣﺳﺗﺧدم.
;))(Frame2.setLayout(new FlowLayout
;)"ﻋﻨﻮان اﻟﻔﺮﯾﻢ"(Frame2.setTitle
٣٥
Frame2.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
Frame2.pack();
Frame2.setVisible(true); // إﻇﮭﺎر اﻟﻔﺮﯾﻢ
Frame2.setLocation(200,60); // ﻟﺘﺤﺪﯾﺪ ﻣﻜﺎن ﻇﮭﻮر
اﻟﻨﺎﻓﺬة
Frame2.setResizable(false); // ﻟﻤﻨﻊ ﺗﻐﯿﯿﺮ ﺣﺠﻢ
اﻟﻨﺎﻓﺬة
Frame2.setBackground(Color.BLUE); vcvcvcvcvv
: أو ﻋن طرﯾﻖ اﻟوارﺛﺔ
public class MainClass extends JFrame {
public static void main(String[] args) {
new MainClass().setVisible(true);
}
أوﻻ ﻻﺑد ﻣﻌرﻓﺔ ﺣﺟم اﻟﺷﺎﺷﺔ: ﻛﯾﻔﯾﺔ ﺟﻌل اﻟﻧﺎﻓذة ﻓﻲ ﻣﻧﺗﺻف اﻟﺷﺎﺷﺔ
// import the libraries
import java.awt.Dimension;
import java.awt.Toolkit;
٣٦
Frame2.setLocation(x, y);
ﺗﻘوم ﺑـ ﺗﺣﺟﯾم اﻟﻔرﯾم ﺗﻠﻘﺎﺋﯾﺎ ﺑﻧﺎء ﻋﻠﻰ ﺣﺟم اﻟﻣﻛوﻧﺎت اﻟﻣوﺟودة ﻋﻠﻰ اﻟﻔرﯾم ﺑدﻻPack () ﻋﻣل اﻟداﻟﺔ
: ﻣن اﺳﺗﺧدام اﻟداﻟﺔ
Frame2.setSize(width, height);
: ﻓﻘط ﺳوف ﯾظﮭر ﻋﻧوان اﻟﻔرﯾم ﻛﻣﺎ ﻓﻲ اﻟﺻورةsetSize ﻷﻧﮫ إذا ﻟم ﻧﺳﺗﺧدم ھذه اﻟداﻟﺔ أو داﻟﺔ
Example :
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public Pack() {
super("pack() vs. setSize() method Example");
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
٣٧
contentPane.add(button3);
contentPane.add(button4);
contentPane.add(button5);
//this.setSize(450, 90);
this.pack();
}
setText() method ﺑﺎﺳﺗﺧدام اﻟداﻟﺔLabel ﯾﻣﻛن ﺗﻐﯾﯾر اﻟﻌﻧوان اﻟظﺎھر ﻋﻠﻰ اﻟـo
t1.setText("New Text"); // You can also use variables here
واﺳﺗدﻋﺎء داﻟﺔ اﻟﺑﻧﺎء ﻣﻊ إرﺳﺎل ﻟﮭﺎObject ﻛـButton ﻧﺗﻌﺎﻣل ﻣﻊ اﻟـFrame إﺿﺎﻓﺔ زر إﻟﻰ اﻟـ
اﻟﻌﻧوان اﻟذي ﺳوف ﯾظﮭر ﻋﻠﻰ اﻟزر
JButton button = new JButton("Title of Button");
٣٨
setText(String) أو إرﺳﺎل اﻟﻌﻧوان ﻓﻲ اﻟداﻟﺔo
button.setText("Title of Button ");
ﺛم ﯾﺗم إﺿﺎﻓﺗﮫ ھذا اﻟﻛﺎﺋن إﻟﻰ اﻟﻔرﯾم ﻗﺑل ﻣﺎ ﯾﺗم ﻋرض اﻟﻔرﯾم ﻣن ﺧﻼل اﻟداﻟﺔo
setVisible()
Frame2.add(b);
٣٩
String Stext = JTextField1.getText();
Frame2.add(tf3);
com = new JComboBox<Object>();
Frame2.add(com);
com.addItem(tf3.getText()); // add to CombBox from
JTextField
٤٠
ﻻﺑد اوﻻ ﺗﻌرﯾف اﻟـListModel class ﻣن ﺧﻼل اﻟﻛﻼسlist ﯾﻣﻛن إﺿﺎﻓﺔ ﻋﻧﺎﺻر ﻟﻠـo
DefaultListModel
addElement() method اﻵن ﻹﺿﺎﻓﺔ ﻋﻧﺎﺻر إﺿﺎﻓﯾﺔ ﻓﻲ أي وﻗت أﺛﻧﺎء ﺗﻧﻔﯾذ ﺑﺎﺳﺗﺧدامo
listModel.addElement("new item");
int index=3;
listModel.add(index, object);
ﻓﻲ اﻟواﻗﻊ ﯾﻣﻛن أن ﺗﺣﺗوي ﻋﻠﻰ أﻧواعJList ﻷنobject وﯾﻌرف ھذا اﻷﺳﻠوب ﯾﻌﯾد ﻛﺎﺋن
اﻟﺻور اﻟﺻﻐﯾرة ﺗﻌرف ﺑﺎﺳم اﻟرﻣوز،اﻟﻛﺎﺋﻧﺎت اﻷﺧرى ﻣن ﺳﻼﺳل )ﻋﻠﻰ ﺳﺑﯾل اﻟﻣﺛﺎل
٤١
: ﻟﮭﺎ أﻛﺛر ﻣن ﻗﯾﻣﺔListSelectionModel ﺣﯾث اﻟﺧﺎﺻﯾﺔ
// Append an item
int pos = list.getModel().getSize();
listModel.add(pos, "E");
٤٢
// Remove the first item
;pos = 0 // any index of item
;)listModel.remove(pos
oﻟﺣذف أﺧر ﻋﻧﺻر ﻓﻲ اﻟﻘﺎﺋﻣﺔ
٤٣
س : ٥١ﻣﺎ ھﻲ ﻣﻛﺗﺑﺔ SWT؟
ھﻲ ﻣﻛﺗﺑﮫ ﻟﻠـ GUIﻓﻲ ﻟﻐﺔ اﻟـ ، Javaوﺗﺳﻣﻰ . SWTﺗم ﺑرﻣﺟﺗﮭﺎ ﻓﻲ ﺷرﻛﺔ IBMو
اﻷن ھﻲ ﻣﺷروع ﻣﻔﺗوح اﻟﻣﺻدر ،ﻣدﻋﻣﮫ ﻣن ، IBMﺗﻌﺗﺑر اﻟـ SWTﻣﺛﺎل ﻟﻸدوات
اﻟﺛﻘﯾﻠﺔ ) ، ( Heavyweightوﺗﺳﻣﺢ ﺑﺎﺳﺗﻐﻼل أﺳﺎس ﻧظﺎم اﻟﺗﺷﻐﯾل ﻟﻌﻣل وﺟﮭﮫ
رﺳوﻣﯾﮫ ، GUIوﺗﻘوم ﺑﺈﻧﺷﺎﺋﮭﺎ ﺑﺎﺳﺗﺧدام اﻟواﺟﮭﺔ اﻷﺻﻠﯾﺔ ﻟﻠـ ، Javaﻣن ﻣُﻣَ ﯾزاﺗﮭﺎ
اﻟﺳرﻋﺔ و اﻟﺗﺄﺛﯾرات اﻟﺟﻣﯾﻠﺔ اﻟﺗﻲ ﯾ ُطﻠﻖ ﻋﻠﯾﮭﺎ أﺳم اﻟـ ، Look and Feelو ﻣن
ﺳﻠﺑﯾﺎﺗﮭﺎ ﻛﺛرة اﺣﺗﻣﺎﻻت اﻷﺧطﺎء ﺑﮭﺎ و أﻗل ﻛﻔﺎءه ﻣن اﻟـ ، Swingو اﻟـ SWTﺗﻣﺎﻣﺎ ً
ﻣﺛل ﻣﻛﺗﺑﺔ . Windows Centric
http://docs.oracle.com/javase/tutorial/uiswing/ swing
http://docs.oracle.com/javase/6/docs/technotes/guides/awt/
http://www.eclipse.org/swt/
http://www.gwtproject.org/overview.html
٤٤
. RIA ﺗﻘﻨﯿﺔ أﺧﺮى أﺻﺪرﺗﮭﺎ ﺻﻦ ﻣﺎﯾﻜﺮوﺳﯿﺴﺘﻤﺰ ﻟﺘﻄﻮﯾﺮ ﺗﻄﺒﯿﻘﺎت ﻣﻦ ﻧﻮعjavafx UI .5
http://docs.oracle.com/javafx/
qt-jambi وﺗﺴﻤﻲQT .6
http://qt-jambi.org/
GTK.7
http://java-gnome.sourceforge.net/
؟؟؟
٤٥
ﻟو ﺗﻼﺣظون ﻓﻲ اﻟﺻورة أن داﺧل ﻛﻼ اﻟﺛﺎﺑﺗﯾن ﻓﻲ ﻛﻼس Colorﻣﺎ ﻓﯾﮫ ﺑﯾﻧﮭم ﻓرق إﻻ
ﻓﻲ ﺣﺎﻟﺔ اﻷﺣرف ،وﻛﺎن ﻓﻲ اﻟﺳﺎﺑﻖ ﻻ ﯾوﺟد إﻻ اﻟﺛﺎﺑت (lowercase)orange
وﻟﻛن ﺑﻌد JDK 1.4ﺗﻣت اﺿﺎﻓﺔ ، (uppercase)ORANGEﻟﻛﻲ ﯾﻧﻔذوا ﻣﺻطﻠﺢ أن
اﻟﺛواﺑت داﺋﻣﺎ ﺗﻛون ) Upper_Caseاﺗﻔﺎﻗﯾﺔ ﺗرﻣﯾز اﻟﺛواﺑت(.
س : ٥٥ﻛﯾف ﯾﻣﻛن اﻟﻣﻧﺎداة ﻋﻠﻰ اﻟﻣﺗﺻﻔﺢ اﻹﻓﺗراﺿﻲ و ﻓﺗﺢ ﺻﻔﺣﺔ وﯾب ﻣﻌﯾﻧﺔ؟
اﻟﺟﺎﻓﺎ وﻣﻧذ ﻧﺳﺧﺗﮭﺎ اﻟﺳﺎدﺳﺔ ،ﺗﺗﯾﺢ إﻣﻛﺎﻧﯾﺔ اﻟﻣﻧﺎداة ﻋﻠﻰ اﻟﻣﺗﺻﻔﺢ اﻹﻓﺗراﺿﻲ ،وذﻟك
ﻋن طرﯾﻖ اﻟﻔﺋﺔ ) Desktop (classاﻟﺗﻲ ﺗوﻓر ﻟﻧﺎ اﻟـ ) Methodاﻟطرﯾﻘﺔ( browse
٤٦
{ try
//open the default browser using the method browse which take an URI
object representing the web page
;))"desktop.browse(new URI("http://arabteam2000-forum.com/
;)(ex.printStackTrace
}
ﻣﺎ ﻧرﯾده ھو إظﮭﺎر ﻛل رﺳﺎﺋل وﻧﺻوص اﻟواﺟﮭﺔ ﺣﺳب اﻟﻠﻐﺔ اﻟﺗﻲ ﯾﺗم اﺧﺗﯾﺎرھﺎ .إذن ﻟو ﻛﻧﺎ
ﺳﻧﺟﻌل ﺛﻼث ﻟﻐﺎت ﻣﺗوﻓرة ﻓﻲ اﻟﺑرﻧﺎﻣﺞ ،ﻓﺳﯾﻠزﻣﻧﺎ ﺛﻼث ﻧﺳﺦ ﻣن ﻛل ﻧص ورﺳﺎﻟﺔ ،ﻛل ﻧﺳﺧﺔ
ﺑﻠﻐﺔ ﻣﺧﺗﻠﻔﺔ .ﺳﻧﺿﻊ ﻛل ﻧﺳﺧﺔ ﻣن اﻟﻧﺻوص ﻓﻲ ﻣﻠف propertiesﻣﺳﺗﻘل ،ﻣﺎ ﯾﻌﻧﻲ أن
اﻟﺑرﻧﺎﻣﺞ ﻟن ﯾﺣﺗوي ﻋﻠﻰ أي ﻧص ،ﺑل ﻛل ﺷﻲء ﺳﯾﻛون ﻓﻲ اﻟﻣﻠﻔﺎت .properties
ﻋﻧد ﻛﺗﺎﺑﺔ ھذه اﻟﻣﻠﻔﺎت ،ﯾﺟب اﺣﺗرام ﻧﻣوذج ﻣﺣدد :أوﻻ إﺳم اﻟﻣﻠف ،ﻣﺛﻼ " ،"labelsﻣﺗﺑوﻋﺎ
ﺑﺎﻟرﻣز "_" ،ﻣﺗﺑوﻋﺎ ﺑﺎﻟرﻣز اﻟﺧﺎص ﺑﺎﻟﻠﻐﺔ ،ﻣﺛﻼ رﻣز اﻟﻌرﺑﯾﺔ ھو " ،"arرﻣز اﻟﻔرﻧﺳﯾﺔ ""fr
ورﻣز اﻹﻧﺟﻠﯾزﯾﺔ ھو " ."enإذن ﺣﺳب اﻟﻧﻣوذج ﻓﺈن إﺳم ﻣﻠف اﻟﻠﻐﺔ اﻟﻌرﺑﯾﺔ ﯾﺟب أن ﯾﻛون
ﻛﺎﻟﺗﺎﻟﻲ labels_ar.properties
٤٧
....
ﺑﺣﯾث أﻧﻧﺎ ﻧﺳﺗرﺟﻊ اﻟﻧص اﻟذي ﻧرﯾده ﺑواﺳطﺔ .key
ﻛﻣﺎ أﻧﮫ ﺗﺟدر اﻹﺷﺎرة إﻟﻰ أن اﻟﻣﻠﻔﺎت propertiesﺗﻘﺑل ﻓﻘط اﻟﺗرﻣﯾز ،ISO-8859-1أي
اﻟﺣروف اﻟﻼﺗﯾﻧﯾﺔ ﻓﻘط ،إذا أردﻧﺎ إﺿﺎﻓﺔ ﺣروف ﻋرﺑﯾﺔ ،ﯾﺟب أن ﻧﻛﺗب اﻟرﻣز unicode
اﻟﻣرادف ﻟﻛل ﺣرف.
ھذه اﻟﻔﺋﺔ ﺗﻣﻛﻧﻧﺎ ﻣن ﺗﺣدﯾد اﻟﻣﻧطﻘﺔ اﻟﺟﻐراﻓﯾﺔ أو اﻟﺛﻘﺎﻓﯾﺔ اﻟﺗﻲ ﻧرﯾد .ﻓﺑﻣﺎ أﻧﻧﺎ ﻧرﯾد أن ﻧﻐﯾر ﻟﻐﺔ
واﺟﮭﺔ ﺑرﻧﺎﻣﺟﻧﺎ ،ﻓﯾﻠزﻣﻧﺎ وﺳﯾﻠﺔ ﻟﺗﺣدﯾد ھذه اﻟﻠﻐﺔ ،وھﻧﺎ ﺗظﮭر ﻓﺎﺋدة اﻟﻔﺋﺔ .Localeﻣﺛﻼ إذا أردﻧﺎ
إﻧﺷﺎء Localeﺧﺎص ﺑﺎﻟﻌرﺑﯾﺔ ،ﻓﺈﻧﻧﺎ ﻧﻣرر رﻣز اﻟﻠﻐﺔ اﻟﻌرﺑﯾﺔ ﻟل. constructor
ھذه اﻟﻔﺋﺔ ھﻲ اﻟﺗﻲ ﺗﻘوم ﺑﺗﺣﻣﯾل ﻣﻠف ال propertiesاﻟﺧﺎص ﺑﺎﻟﻠﻐﺔ اﻟﺗﻲ ﻧﺣددھﺎ ،وﺑﺎﻟطﺑﻊ ﺗﺣدﯾد
اﻟﻠﻐﺔ ﯾﻌﻧﻲ إﻧﺷﺎء ﻛﺎﺋن Localeﺧﺎص ﺑﮭﺎﺗﮫ اﻟﻠﻐﺔ .ﺑﻌد ﺗﺣﻣﯾل اﻟﻣﻠف ﻓﺈﻧﻧﺎ ﻧﺳﺗطﯾﻊ اﻟوﺻول ﻟﻠﻘﯾم
اﻟﻣوﺟودة ﺑداﺧﻠﮫ ﻋن طرﯾﻖ getStringاﻟﺗﻲ ﻧﻣرر ﻟﮭﺎ ﻗﯾﻣﺔ ال.key
٤٨
Locale currentLocale = new Locale("ar");
Java I/O
//...
٤٩
وﻧﻘوم ﺑﻌد ذﻟك،String ﺑﻘراءة ﺳطر ﻣن اﻟﻣﻠف وﺗﺧزﯾﻧﮫ ﻓﻲ ﻣﺗﻐﯾر ﻣن ﻓﺋﺔloop ﺛم ﻧﻘوم داﺧل
.ﺑطﺑﺎﻋﺔ ﻗﯾﻣﺔ ھذا اﻟﻣﺗﻐﯾر
ﻣﻣﺎ ﯾﻌﻧﻲ أﻧﻧﺎ وﺻﻠﻧﺎ إﻟﻰ ﻧﮭﺎﯾﺔ،null )( اﻟﻘﯾﻣﺔreadLine ﺗﺗوﻗف ﻋﻧدﻣﺎ ﺗﻌﯾد اﻟطرﯾﻘﺔloopال
.اﻟﻣﻠف
String line;
System.out.println(line);
:اﻟﻜﻮد ﻛﺎﻣﻼ
try {
String line;
System.out.println(line);
ex.printStackTrace();
} finally {
try {
if (reader != null) {
reader.close();
٥٠
}
}
}
س :٦١ﻣﺎذا وﺿﻌﻧﺎ أﻣر إﻗﻔﺎل readerداﺧل finally؟ ﻣﺎذا ﺳﯾﺣﺻل ﻟو وﺿﻌﻧﺎ أﻣر
اﻹﻏﻼق داﺧل ال ،try blockﺑﻌد اﻹﻧﺗﮭﺎء ﻣن ال ،loopﻛﻣﺎ اﻟﻛود اﻟﺗﺎﻟﻲ؟
//...
;String line
;)System.out.println(line
}
)(reader.close
//...
ﻟﻧﻔﺗرض ﻣﺛﻼ أن اﻟﺑرﻧﺎﻣﺞ ﻋﻧد ﺗﻧﻔﯾذ اﻷﻣر readLineواﺟﮫ ﻣﺷﻛﻠﺔ ﻓﻲ ﻗراءة اﻟﻣﻠف ،ﻣﻣﺎ ﺟﻌﻠﮫ
ﯾرﻓﻊ ،IOExceptionھذا ﯾﻌﻧﻲ أﻧﮫ ﺳﯾﺗﺟﺎھل ﻛل اﻟﻛود اﻟﻣوﺟود ﺑﻌد اﻟﺳطر اﻟذي رﻓﻊ اﻹﺳﺗﺛﻧﺎء
وﺳﯾﻧﻔذ ﻣﺑﺎﺷرة اﻟﻛود اﻟﻣوﺟود ﻓﻲ ،catch blocوﺑﺎﻟﺗﺎﻟﻲ ﻟن ﯾﻧﻔذ أﻣر اﻹﻏﻼق ،وﺳﯾﺑﻘﻰ
ال readerﻣﻔﺗوﺣﺎ ،وﺑﺎﻟﺗﺎﻟﻲ ﻟن ﯾﺗم ﺗﺣرﯾر اﻟذاﻛرة اﻟﺗﻲ ﯾﺳﺗﻌﻣﻠﮭﺎ.
اﻟﺣل إذن ھو وﺿﻊ إﻣر اﻹﻏﻼق داﺧل ،finally blocﻷن اﻟﻛود اﻟﻣوﺟود داﺧﻠﮫ ﯾﺗم ﺗﻧﻔﯾذه داﺋﻣﺎ،
ﺳواء ﺗم رﻓﻊ exceptionأو ﻻ.
٥١
؟Scanner ﻛﯾف ﻧﻘرأ اﻟﻣﻠف ﺑﺎﺳﺗﻌﻣﺎل اﻟﻔﺋﺔ:٦٢ س
ﻟﻛن أوﻻ ﯾﺟب أن،()nexLine ﺑﻘراءة اﻟﻣﻠف ﺳطرا ﺳطرا ﺑواﺳطﺔ اﻟطرﯾﻘﺔloop ﺛم ﻧﻘوم داﺧل
. ﻧﺗﺣﻘﻖ أﻧﻧﺎ ﻟم ﻧﺻل إﻟﻰ ﻧﮭﺎﯾﺔ اﻟﻣﻠف
while (scanner.hasNextLine()) {
System.out.println(line);
scanner.close();
: اﻟﻛود ﻛﺎﻣﻼ
while (scanner.hasNextLine()) {
System.out.println(line);
scanner.close();
٥٢
ﻋﺎم
٥٣
)JDK (Java Development Kit
ﻳﻨﺪرج ﺗﺤﺘﻪ اﻻدوات اﻟﺨﺎﺻﺔ ﺑﻌﻤﻞ ﺑﺮاﻣﺞ ﺑﺎﺳﺘﺨﺪام ﻟﻐﺔ اﻟﺠﺎﻓﺎ ،
وھﺬه اﻻدوات ﺗﺤﺘﻮي أﻳﻀﺎ ﻋﻠﻰ Compilerاﻟﺨﺎص ﺑﻠﻐﺔ اﻟﺠﺎﻓﺎ
وﻟﺘﺸﻐﯿﻞ ھﺬه اﻟﺒﺮاﻣﺞ ﻋﻠﻰ اﻟﺠﮫﺎز اﻟﻤﺴﺘﺨﺪم ﻻﺑﺪ ﻣﻦ وﺟﻮد jre
٥٤
Data Structure
س :٦٥أول ﺳؤال ﻣﻣﻛن ﯾﻛون ﻋﻠﻰ ﺑﺎﻟك أن ھل اﻟـ Data Structureﻟﮭﺎ ﻋﻼﻗﺔ ﺑﺎﻟـ
Databaseام ﻻ ؟
أﻣﺎ ھﯾﺎﻛل اﻟﺑﯾﺎﻧﺎت ھﻲ اﻟﻠﻲ ﺗﺣﺗﺎﺟﮭﺎ ﻷداء ﺑرﻧﺎﻣﺞ ﺑﻛﻔﺎءة ﻋﺎﻟﯾﺔ ﻓﻲ وﻗت اﻟﺗﻧﻔﯾذ )ﺧﻼل
اﻟـ .(runtime
ﺑﻣﻌﻧﻰ أوﺿﺢ ﻗواﻋد اﻟﺑﯾﺎﻧﺎت أﻧت ﺗﺧزن ﻓﯾﮭﺎ اﻟﺑﯾﺎﻧﺎت ﻷﺟل أﻧك ﻟو أﻏﻠﻘت اﻟﻛﻣﺑﯾوﺗر
ﺗﺟﻲ اﻟﯾوم اﻟﺛﺎﻧﻲ ﺗﻠﻘﺎھﺎ ﻣوﺟودة .
ﻓﯾﮫ ﻓرق ﺑﯾن ﺗﺧزﯾن ﺑﯾﺎﻧﺎت وﺑﯾن ﺑﯾﺎﻧﺎت ﺣﯾﺔ ﻓﻲ اﻟذاﻛرة ﻟﻠﺗﻌﺎﻣل ﻣﻌﮭﺎ .
ﻓﻲ اﻟﺑرﻧﺎﻣﺞ ﻋﺎدة اﻟﻌﻣﻠﯾﺎت اﻟﺗﻲ ﺗﺗم ﻓﻲ RunTimeﺗﺗم ﻋﻠﻰ .Data Structure
ھﯾﺎﻛل اﻟﺑﯾﺎﻧﺎت ﺑﺎﺧﺗﺻﺎر ھﻲ ﺗﺣﻠﯾل ﺷﻛل اﻟﺑﯾﺎﻧﺎت ﺷﻠون ﺗﻛون داﺧل اﻻوﺑﺟﻛت
وﻧﺳﺗﺧدﻣﮭﺎ ﻟﺟﻣﻊ اﻟﺑﯾﺎﻧﺎت وﺗرﺗﯾﺑﮭﺎ وﺗﻧظﯾﻣﮭﺎ ...
٥٥
ﻓﻲ ﺟﺎﻓﺎ ﻓﯾﮫ اوﺑﺟﻛت ﺟﺎھزة ﻟك أﻧك ﺗﺳﺗﺧدﻣﮭﺎ ﻋﻠﻰ طول ﯾﻌﻧﻲ ﻣﺎ ﯾﺣﺗﺎج ﺗﻌﯾد ﻛﺗﺎﺑﺔ
ﻛل ﺷﺊ ﻣن اﻟﺻﻔر ﻣﺛل ﻣﺎ ھو ﻓﻲ Cو ، C++ﻛذﻟك ﻧﺗﻛﻠم ﻋن أن ھﯾﺎﻛل اﻟﺑﯾﺎﻧﺎت
ﯾﺄﺗﻲ ﻣﻌﮭﺎ ﺧوارزﻣﯾﺎت ﻟﻠﺗرﺗﯾب وإﻋﺎدة اﻟﺗرﺗﯾب وﺻﯾﺎﻏﺔ أﺟزاء اﻟﺑﯾﺎﻧﺎت اﻟﻣوﺟودة ،
وھذه اﻟﺧوارزﻣﯾﺎت ﻣوﺟودة ﻣﻊ اﻻوﺑﺟﻛت ﯾﻌﻧﻲ ﻣﺿﻐوطﺔ ﻣﻊ اﻻوﺑﺟﻛت او
اﻻﻧﺗرﻓﯾس اﻟﻠﻲ راح ﻧﺗﻛﻠم ﻋﻧﮫ اﻵن .
اﻟﺷﻛل اﻷﺳﺎﺳﻲ ﻟﻠـ Collection interfaceھو أﻧﮫ ﯾﺗﻔرع ﻣﻧﮫ اﺛﻧﯾن ﻣن اﻟـ
: interfaceوھﻲ Setو . List
أﯾﺿﺎ ﯾوﺟد اﻟـ Map Interfacaﻟﻛﻧﮫ ﻟﯾس ﻣن Collectionﻓﮭو ﺟﺳم ﺑرﻣﺟﻲ آﺧر
ﻋﺑﺎرة ﻋن دﻣﺞ ﺟﺳﻣﯾن ﻣﻊ ﺑﻌض .
ﻧﻘطﺔ ﻣﮭﻣﮫ أن ھذه اﻻﻧﺗرﻓﯾس Setو Listﻻ ﯾﻣﻛن اﻧك ﺗﺳوي ﻣﻧﮭﺎ اوﺑﺟﻛت ﯾﻌﻧﻲ ﻣﺎ
ﺗﻘدر ﺗﺳوي ﻣن ﻋﻧدھﺎ newﻣﺛﻼ new Setأو ، new List
ﻷﻧﮭﺎ ﻛﺄي اﻧﺗرﻓﯾس ﻻ ﺗﺳﺗطﯾﻊ ان ﺗﻧﺷﺄ ﻣﻧﮫ اوﺑﺟﯾﻛت واﻟدوال اﻟﻠﻲ ﻓﯾﮫ ﺗطﺑﻘﮭﺎ ﻛﻼﺳﺎت
ConCreteﯾﻌﻧﻲ اوﺑﺟﻛت ﺟﺎھزة ﻟﻼﺳﺗﺧدام ﻓﺗﺳﺗطﯾﻊ
إذا ﺗﺑﻲ :
٥٦
Setﺗﻘدر ﺗﺳﺗﻌﻣل أﻣﺎ HashSetأو TreeSetاﻟﻣطﺑّ ِﻘﺎن ﻟﮫ .
Treeﻣﻌﻧﺎﺗﮭﺎ Sortedﯾﻌﻧﻲ ﻣرﺗﺑﺔ ﺣﺳب ﺗرﺗﯾب ﻣﻌﯾن اﻧت ﺣددﺗﮫ ﺳﺎﺑﻘﺎ ً .
ﻣﻼﺣظﺔ :أﻧﻲ اﺗﻛﻠم اﻵن ﻋن اﻟﺷﻛل اﻷﺳﺎﺳﻲ أﻣﺎ اﻵن ﻓﻲ اﻟـ Collectionﻓﯾﮫ
اﻧﺗرﻓﯾس ﺟدﯾد Queueوﻓﻲ Setو Listﻛﻼﺳﺎت أﺧرى ﺟﺎھزة
ﻟﻼﺳﺗﺧدام ﻏﯾر اﻟﻠﻲ ذﻛرﺗﮭم .ﯾﻣﻛﻧك ﻣﺷﺎھدة اﻟﺻورة ﻓﻲ آﺧر اﻟﻣﻘﺎﻟﺔ وﺗﺷﺎھد
Collectionوﺗﻔرﻋﺎﺗﮫ .
ﻟو أﺧذﻧﺎ اﻟﺷﻛل اﻷﺳﺎﺳﻲ ﺑﺷﻛل ﻣﻛﺑر ﻗﻠﯾﻼ ً ﻧﺷوف أن Collectionﻣرﺗﺑط ﻓﻲ ﺷﺊ
اﺳﻣﮫ Iteratableو Iterateﯾﻌﻧﻲ اﻧﮫ ﻗﺎﺑل اﻧﮫ ﯾدور
واﯾﺿﺎ ً ﻋﻧدي ﻣن Iteratable Interfaceاوﺑﺟﻛت اﺳﻣﮫ Iterator <--وھذا
اﻻوﺑﺟﻛت اﻗدر اﺳﺗدﻋﯾﮫ ﻋن طرﯾﻖ اﻟﻛوﻧﺳﺗراﻛﺗر . Constructor
٥٧
boolean hasNext()
. Loop ﻷﺟل ﺗﺣدﯾد اﻟوﺟﮫ ﻟﻠوب
boolean next()
ﯾﻌطﯾك اﻷوﺑﺟﻛت اﻟﺗﺎﻟﻲ
void remove()
. اذا ﺗﺑﻐﻰ ﺗﺷﯾل )ﺗﺣذف( ﻛﺎﺋن
Iterator Iterator()
ﻋرﻓﻧﺎھﺎ ﻓوق
boolean isEmpty()
(true Or false) boolean ﻓﺎﺿﻲ وﯾرﺟﻊ ﻟﻧﺎcollection ھﻧﺎ ﻧﺳﺄل ھل اﻟﻛوﻟﻛﺷن
int size()
٥٨
. ﯾرﺟﻊ ﻟﻧﺎ اﻟﺣﺟم
boolean equals(Object o)
. ﻧﺳﺗﻌﻠﻣﮭﺎ ﻓﻲ اﻟﻣﻘﺎرﻧﺔ ﺑﯾن اﺛﻧﯾن ﻣن اﻟﻛوﻟﻛﺷن
int hashCode()
. ﯾرﺟﻊ ﻟﻧﺎ اﻟرﻗم اﻟﺧﺎص ﺑﺎﻻوﺑﺟﻛت
boolean remove(Object o)
. إذا اﺑﻐﻰ اﺣذف ﻛﺎﺋن
boolean contins(Object o)
. إذا اﺷﯾك ھل ﺗﺣﺗوي ﻋﻠﻰ
٥٩
)(Object[] toArray
إذا ﺧﻠﺻت ﻣن اﻷوﺑﺟﻛت واﺑﻐﻰ اﺣوﻟﮫ إﻟﻰ ِ◌. Arrays
)(void clear
راح ﯾﻧظف Aﯾﻌﻧﻲ راح ﯾﻔﺿﯾﮭﺎ ﻣن اﻟداﺧل.
٦٠
ھﻧﺎ ﻧﻘوﻟﮫ ﺣﺎﻓظ ﻋﻠﻰ اﻟﻠﻲ ﻣوﺟود ﻓﻲ Aو . B
٦١
ﺗﺗﻐﯾر ﺣﺟﻣﮭﺎ واﺿﺎﻓﺔarray كArrayList ﺗﺳﺗﻌﻣل ال، ﻣﺧﺗﻠف ﻟﻠﻌﻣﻠﯾﺎت اﻟﻣﺧﺗﻠﻔﺔ
اﯾﺿﺎ ﯾﻣﻛن اﻟوﺻول إﻟﯾﮭﺎ ﻣﺑﺎﺷرة ﻋن، ﻋﻧﺎﺻر ﺟدﯾدة وﯾزداد ﺣﺟﻣﮭﺎ ﺑﺷﻛل دﯾﻧﺎﻣﯾﻛﻲ
ﺗﺳﺗﻌﻣل أو ﺗﻧﻔذ ﻛﻘﺎﺋﻣﺔ ﻣزدوﺟﺔ ﻣرﺗﺑطﺔLinkedList وال، get وset طرﯾﻖ دوال
وﻟﻛن أدﺋﮭﺎ أﻓﺿل ﻓﻲ اﻻﺿﺎﻓﺔ واﻹزاﻟﺔget وset أداﺋﮭﺎ ﺳﺊ ﻟﻠدوال، ﻣﻊ ﺑﻌﺿﮭﺎ
.. وھﻧﺎك اﺧﺗﻼﻓﺎت أﺧرى.. arrayList أﻓﺿل ﻣن ال
: LinkedList وھذا ﻣﺛﺎل ﺑﺳﯾط ﻻﺳﺗﻌﻣﺎل
٦٢
ﻣﺎ ھو اﻟﻔرق ﺑﯾن: ٦٧ س
List<String> list = new LinkedList<String>();
و
LinkedList list<String> = new LinkedList<String>();
؟
ﻓﻲ اﻷﺳﻔل ﻟﻛن ﯾﻛون وﻗﺗﮭﺎ ﺗﺑﻐﻰLinkedList اﻟﻔرق اﻧك ﻣﻣﻛن ﺗﺣﺗﺎج ﻧﻔس ال
أو اﻧك ﺗﻛون ﺗﺑﻐﻰ ﺗﺣﺻل ﻋﻠﻰ اﻟﻘﯾم ﻣﺛل ﻣﺎ اﻧﺎ واﺿﻊ ﻓﻲArrayList ﺗﺳﺗﺧدﻣﮭﺎ ك
ھﻲ اﻷﻧﺳب وﻧﻔس اﻟﺷﺊ ﻟو ﻛﺎن اﻟوﻗتArrayList ﻓﺑﺎﻟوﻗت ھذا ﺗﻛون، اﻟﺷرح ﻓوق
أوLinkedList ﻓﺈﺳﻧﺎد ال، LinkedList إﻟﻰArrayList اﻧﺳب اﻧﻲ اﺳﺗﺑدل
.. ﻻﺟل اﻧﻲ ﻟو اﺑﻐﻰ اﺑدل ﺑﯾﻧﮭم ﻓﻲ وﻗت ﻻﺣﻖ، List interface إﻟﻰArrayList
Arrays.sort(array1);
واﻟﻨﺘﯿﺠﺔ ھﻲ ﻛﺎﻟﺘﺎﻟﻲ
٦٣
ﻣﻼﺣﻈﺔ :ﻳﺠﺐ أن ﺗﻜﻮن ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ إﻣﺎ primitive typesأو ﻓﺌﺎت ﺗﻌﻤﻞ
implementﻟﻠﻮاﺟﮫﺔ Comparableوﺗﻌﺮف اﻟﻄﺮﻳﻘﺔ compareTo
ﻋﺎم
س :٦٩ﻣﺎ ھو Java Annotations؟
ال ،Annotationأو )ﺣﺴﺐ ﻣﻌﺠﻢ (ArabEyesاﻟﺘﻌﻠﯿﻖ/اﻟﺤﺎﺷﯿﺔ ،ھﻮ
إﺿﺎﻓﺔ ﻣﻌﻠﻮﻣﺎت إﻟﻰ اﻟﺸﯿﻔﺮة .ﻟﻜﻦ اﻟﻔﺮق ﺑﯿﻨﮫﺎ وﺑﯿﻦ ال commentsأو
ال ،Javadocھﻮ أن ال annotationsﻳﻤﻜﻦ اﺳﺘﻌﻤﺎﻟﮫﺎ ﻣﻦ طﺮف
annotation processorﻟﻠﻘﯿﺎم ﺑﻌﻤﻠﯿﺎت ﻣﺨﺘﻠﻔﺔ :إﻧﺸﺎء ﻣﻠﻔﺎت ،إﻧﺸﺎء
ﺟﺪاول ﻓﻲ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ،اﻟﺘﺤﻘﻖ ﻣﻦ اﺣﺘﺮام اﻟﺸﯿﻔﺮة ﻟﻠﻤﻌﺎﻳﯿﺮ
اﻟﻤﺤﺪدة ،أو ﺣﺘﻰ إﺿﺎﻓﺔ أﺳﻄﺮ ﺟﺪﻳﺪة ﻣﻦ اﻟﻜﻮد ..وﻗﺪ ﺗﻤﺖ إﺿﺎﻓﺔ ال
annotationsإﻟﻰ اﻟﺠﺎﻓﺎ ﻓﻲ اﻟﻨﺴﺨﺔ اﻟﺨﺎﻣﺴﺔ .JavaSE 5
@Override
}
٦٤
}
Override@
error ١
public TestDeprecated() {
d.someMethod();
}
}
٦٥
class DeprecatedCode {
@Deprecated
System.out.println("I am so deprecated!!");
}
}
)(؛d.someMethod
warning ١
٦٦
public class TestSupressWarnings {
public TestSupressWarnings() {
}
}
ﻳﻜﻔﻲ إﺿﺎﻓﺔ، إذا ﻛﻨﺎ ﻣﺘﺄﻛﺪﻳﻦ ﻣﻤﺎ ﻧﻌﻤﻞ وأردﻧﺎ إزاﻟﺔ اﻹﻧﺬار،
@SuppressWarnings
compilation وﺳﺘﺘﻢ ﻋﻤﻠﯿﺔ ال،وﺗﺤﺪﻳﺪ ﻧﻮع اﻹﻧﺬار اﻟﺬي ﻧﺮﻳﺪ إزاﻟﺘﻪ
:ﺑﺪون أي إﻧﺬار
@SuppressWarnings("unchecked")
public TestSupressWarnings() {
٦٧
س :٧٠ﻛﯾﻔﯾﺔ ﺑرﻣﺟﺔ ﺣواﺷﻲ ﺟدﯾدة ؟
//meta-annotations
//Annotation attributes
}
ال meta-annotations
ال meta-annotationsھﻲ ﺣواﺷﻲ ﺗﻌطﻲ ﻣﻌﻠوﻣﺎت ﻋن اﻟﺣﺎﺷﯾﺔ اﻟﺗﻲ ﻧﺣن ﺑﺻدد ﻛﺗﺎﺑﺗﮭﺎ
).(annotating the annotation
اﻟﻔرق ﺑﯾﻧﮭﺎ وﺑﯾن اﻟﺣواﺷﻲ اﻟﻣﻌﯾﺎرﯾﺔ اﻟﺗﻲ ﺗﻛﻠﻣﻧﺎ ﻋﻧﮭﺎ ﺳﺎﺑﻘﺎ ) Override, @Deprecated,
(@@SuppressWarningsھو أن اﻟﺣواﺷﻲ اﻟﻣﻌﯾﺎرﯾﺔ ﺗﺻف اﻟﻛود ،ﺑﯾﻧﻣﺎ ال meta-
annotationsﺗﺻف اﻟﺣواﺷﻲ ﻓﻘط ،وﻻ ﺗﺳﺗﻌﻣل ﻟوﺻف اﻟﻛود.
٦٨
: وﯾﻣﻛن أن ﻧﻣرر ﻟﮭﺎ اﻟﻘﯾم اﻟﺗﺎﻟﯾﺔ، ﺗﺣدد ﻣﻛﺎن ﺗواﺟد اﻟﺣﺎﺷﯾﺔ:@Target
: ﺳﯾﻛون ﺷﻛﻠﮭﺎ ﻛﺎﻟﺗﺎﻟﻲ، ﻓﻘطconstructor ﻣﺛﻼ ﻟو أردﻧﺎ ﻛﺗﺎﺑﺔ ﺣﺎﺷﯾﺔ ﺧﺎﺻﺔ ﺑﺎل
@Target(ElementType.CONSTRUCTOR)
@Target({ElementType.CONSTRUCTOR, ElementType.METHOD})
٦٩
ﻋﻨﺪﻣﺎ ﻻ ﻧﺤﺪد@ ، Targetﻓﮫﺬا ﻳﻌﻨﻲ أﻧﻪ ﺳﯿﺘﻢ ﺗﻄﺒﯿﻖ اﻟﺤﺎﺷﯿﺔ ﻋﻠﻰ ﺟﻤﯿﻊ
اﻟﻌﻨﺎﺻﺮ اﻟﺘﻲ ﺗﻢ ذﻛﺮھﺎ ﻓﻲ اﻷﻋﻠﻰ .
)@Target(ElementType.CONSTRUCTOR
)@Retention(RetentionPolicy.SOURCE
:@Inheritﺗﺷﯾر إﻟﻰ أن ھذه اﻟﺣﺎﺷﯾﺔ ﯾﻣﻛن أن ﺗرﺛﮭﺎ اﻟﻔﺋﺎت اﻟﻔرﻋﯾﺔ ) (subclassesﻣن اﻟﻔﺋﺔ
اﻟﺗﻲ ﺗم ﺗطﺑﯾﻖ اﻟﺣﺎﺷﯾﺔ ﻋﻠﯾﮭﺎ .اﻟﺳﻠوك اﻹﻓﺗراﺿﻲ ھو ﻋدم اﻟﺗورﯾث.
:@Documentedﯾﻘول ﻟل javadocﺑﺈظﮭﺎر ھذه اﻟﺣﺎﺷﯾﺔ ﻓﻲ اﻟﺗوﺛﯾﻖ اﻟذي ﺳﯾﺗم ﺗوﻟﯾده.
٧٠
ﺧﺻﺎﺋص اﻟﺣﺎﺷﯾﺔ:
ﯾﻣﻛن أن ﺗﻛون اﻟﺣﺎﺷﯾﺔ ﺧﺎﻟﯾﺔ ﻣن أي ﺧﺎﺻﯾﺔ ،وﻓﻲ ھذه اﻟﺣﺎﻟﺔ ﺗﺳﻣﻰ .Markup Annotation
ﻣﺛﻼ:
}
أو ﯾﻣﻛن أن ﺗﺣﺗوي ﻋﻠﻰ واﺣدة أو ﻋدة ﺧﺻﺎﺋص .ھذه اﻟﺧﺻﺎﺋص ﺗﻛﺗب ﻋﻠﻰ ﺷﻛل طرق
) (methodﻓﺎرﻏﺔ.
ﻛل ﺧﺎﺻﯾﺔ ﯾﻣﻛن أن ﺗﺗوﻓر ﻋﻠﻰ ﻗﯾﻣﺔ اﻓﺗراﺿﯾﺔ .ﻗﯾﻣﺔ ھذه اﻟﺧﺻﺎﺋص ﯾﺟب أن ﺗﻛون ﻣن أﺣد ھذه
اﻷﺻﻧﺎف ﻓﻘط:
;)(int id
٧١
//ﺧﺎﺻﯿﺔ ﺗﻤﺘﻠﻚ ﻗﯿﻤﺔ اﻓﺘﺮاﺿﯿﺔ.
@AnAnnotation(id=1)
//...
أو
//...
٧٢
ﻣﻌﺎﻟﺟﺔ اﻟﺣواﺷﻲ ﯾﻣﻛن أن ﺗﺗم ﺑطرﯾﻘﺗﯾن :ﺑﺎﺳﺗﻌﻣﺎل ال reflectionأو ﺑﺎﺳﺗﻌﻣﺎل اﻵداة .apt
اﺳﺗﻌﻣﺎل ال reflection
اﻟﺣواﺷﻲ اﻟﺗﻲ ﯾﻣﻛن ﻣﻌﺎﻟﺟﺗﮭﺎ ﺑﺎﺳﺗﻌﻣﺎل ال reflectionھﻲ ﺗﻠك اﻟﺗﻲ ﯾﺗم ﺣﻔظﮭﺎ إﻟﻰ وﻗت
اﻟﺗﺷﻐﯾل :أي أﻧﻧﺎ أﻋطﯾﻧﺎ اﻟﻘﯾﻣﺔ RetentionPolicy.RUNTIMEإﻟﻰ .@Retention
ھذه اﻟطرﯾﻘﺔ ﺗﻌﯾد trueإذا ﻛﺎﻧت اﻟﺣﺎﺷﯾﺔ اﻟﻣُﻣَرﱠ رة ﻟﮭﺎ )اﻟﻣﻌطﻰ (annotationClassﻣُطَﺑﻘﺔ
ﻋﻠﻰ اﻟﻌﻧﺻر اﻟذي ﯾﻧﺎدي ﻋﻠﻰ ھذه اﻟطرﯾﻘﺔ )أﻗﺻد ﺑﺎﻟﻌﻧﺻر ،إﻣﺎ ﻓﺋﺔ ،constructor ،ﺣﻘل،
طرﯾﻘﺔ أو ﺣزﻣﺔ( ،و falseإن ﻟم ﺗﻛن اﻟﺣﺎﺷﯾﺔ ﻣوﺟودة .ھذه اﻟطرﯾﻘﺔ ﻣﻔﯾدة ﺧﺎﺻﺔ ﺑﺎﻟﻧﺳﺑﺔ ﻟل
. marker annotations
٧٣
ھذه اﻟطرﯾﻘﺔ ﺗﻧﺗظر ﻧوع اﻟﺣﺎﺷﯾﺔ اﻟﺗﻲ ﻧرﯾد اﻟﺣﺻول ﻋﻠﯾﮭﺎ ،ﺛم ﺗﻌﯾد ﻟﻧﺎ اﻟﺣﺎﺷﯾﺔ إذا ﻛﺎﻧت
ﻣوﺟودة ،أو nullﻓﻲ اﻟﺣﺎﻟﺔ اﻟﻣﻌﺎﻛﺳﺔ.
)(Annotation[] getAnnotations
ﺗﻌﯾد ھذه اﻟطرﯾﻘﺔ ﻣﺟﻣوع اﻟﺣواﺷﻲ اﻟﻣوﺟودة ،ﻋﻠﻰ ﺷﻛل ﻣﺻﻔوﻓﺔ .إن ﻟم ﯾﻛن ھﻧﺎك أي ﺣﺎﺷﯾﺔ،
ﻓﺈن اﻟطرﯾﻘﺔ ﺗﻌﯾد ﻣﺻﻔوﻓﺔ ﻓﺎرﻏﺔ.
)(Annotation[] getDeclaredAnnotations
ﺗﻌﯾد ھذه اﻟطرﯾﻘﺔ ﻣﺟﻣوع اﻟﺣواﺷﻲ اﻟﻣوﺟودة ﻓﻲ اﻟﻌﻧﺻر ،ﻣﻊ اﺳﺗﺛﻧﺎء اﻟﺣواﺷﻲ اﻟﻣوروﺛﺔ ﻣن
اﻟﻔﺋﺔ اﻷم.
ﻣﺛﺎل.
ﻟﻧﻔﺗرض أﻧﻧﺎ ﻧﻣﻠك ﻣﺟﻣوﻋﺔ ﻣن ال ،JavaBeansوﻧرﯾد إﻧﺷﺎء ﺟداول ﻓﻲ ﻗواﻋد ﻣطﺎﺑﻘﺔ ﻟﮭﺎ ﻓﻲ
ﻗﺎﻋدة اﻟﺑﯾﺎﻧﺎت.
ﻗﻠﻧﺎ ﺳﺎﺑﻘﺎ أن ال reflectionﺗﺳﺗﻌﻣل ﻓﻘط ﺑﺎﻟﻧﺳﺑﺔ ﻟﻠﺣواﺷﻲ اﻟﺗﻲ ﻧﻌطﻲ ﻓﯾﮭﺎ اﻟﻘﯾﻣﺔ
RetentionPolicy.RUNTIMEإﻟﻰ .@Retention
أﯾﺿﺎ ،ھذه اﻟﺣﺎﺷﯾﺔ ﺳﺗطﺑﻖ ﻓﻘط ﻋﻠﻰ ،JavaBeansأي اﻟﻔﺋﺎت ،وﺑﺎﻟﺗﺎﻟﻲ ﺳﻧﻌطﻲ اﻟﻘﯾﻣﺔ
ElementType.TYPEإﻟﻰ .@Target
اﻟﺣﺎﺷﯾﺔ ﻓﺎرﻏﺔ ،أي أﻧﮭﺎ .marker annotation
٧٤
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
ﺣﯾث ﻟﺳﻧﺎ ﺑﺣﺎﺟﺔ، ﻓﺎرﻏﺔ أﯾﺿﺎInt اﻟﺣﺎﺷﯾﺔ.VarChar وInt ،ﺳﻧﻛﺗب ﺣﺎﺷﯾﺗﯾن ﻟﻧوﻋﯾن ﻓﻘط
وھﻲ ﺗﻣﺛل طول،length ﻓﺗﻣﺗﻠك اﻟﺧﺎﺻﯾﺔVarChar أﻣﺎ اﻟﺣﺎﺷﯾﺔ،ﻷي ﻣﻌﻠوﻣﺎت ﺗﺧص اﻟﺣﻘل
.اﻟﻧص
.RetentionPolicy.RUNTIME أي،@ ﻟﮭﺎ ﻧﻔس ﻗﯾﻣﺔ اﻟﺣﺎﺷﯾﺔ اﻟﺳﺎﺑﻘﺔRetention ،طﺑﻌﺎ
أي أن اﻟﺣواﺷﻲ ﺗﻧطﺑﻖ ﻋﻠﻰ اﻟﺣﻘول،ElementType.FIELD ﻓﺳﺗﻛون ﻗﯾﻣﺗﮭﺎ،@Target أﻣﺎ
.ﻓﻘط
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
٧٥
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
٧٦
.Class أوﻻ ﻧﻌطﯾﮫ ﻣﺻﻔوﻓﺔ ﻣن اﻟﻛﺎﺋﻧﺎت ﻣن ﻓﺋﺔ
( ﻟﻣﻌرﻓﺔ إذاisAnnotationPresent(TableBean.class ﯾﻘوم اﻟﻣﻌﺎﻟﺞ ﺑﺎﻟﻣﻧﺎداة ﻋﻠﻰ اﻟطرﯾﻘﺔ
.@TableBean ﻛﺎﻧت اﻟﻔﺋﺔ ﺗﺣﺗوي ﻋﻠﻰ اﻟﺣﺎﺷﯾﺔ
. ﻓﺈﻧﮫ ﯾﻘوم ﺑﺎﺳﺗرﺟﺎع ﻛل اﻟﺣﻘول اﻟﻣوﺟودة ﻓﻲ اﻟﻔﺋﺔ،إذا وﺟد اﻟﺣﺎﺷﯾﺔ
@VarChar @ أوInt ﯾﻘوم ﺑﺎﻟﺗﺣﻘﻖ ﻣن وﺟود اﻟﺣواﺷﻲ،ﺑﺎﻟﻧﺳﺑﺔ ﻟﻛل ﺣﻘل
.Hashtable ( ﻓﻲVarChar أوInt) وﻧوﻋﮫ، ﻓﺈﻧﮫ ﯾﺧزن إﺳم اﻟﺣﻘل،إذا ﻛﺎﻧت ﻣوﺟودة
. SQL ﻓﺈن اﻟﻣﻌﺎﻟﺞ ﯾﻧﺷﺊ اﻹﺳﺗﻌﻼم،ﺑﻌد اﻟﻣرور ﻋﻠﻰ ﻛل ﺣﻘول اﻟﻔﺋﺔ
import java.lang.reflect.Field;
import java.util.Hashtable;
this.beansToProcess = beansToProcess;
٧٧
//A StringBuilder containing the result query
if (isTableBean(bean)) {
String tableName =
bean.getSimpleName().toLowerCase();
if (isVarChar(f)) {
int length =
f.getAnnotation(VarChar.class).length();
columns.put(f.getName(),
"VARCHAR(" + length + ")");
} else if (isInt(f)) {
columns.put(f.getName(), "INT");
٧٨
query.deleteCharAt(query.lastIndexOf(","));
query.append(");");
System.out.println(query.toString());
/*
*/
return c.isAnnotationPresent(TableBean.class);
return f.isAnnotationPresent(VarChar.class);
return f.isAnnotationPresent(Int.class);
ﺑﺴﯿﻂJavaBeans
٧٩
@TableBean
return age;
this.age = age;
return name;
this.name = name;
٨٠
public class Main {
Class[] c = {Person.class};
proc.process();
. وﻻ ﯾﺟب اﻹﻋﺗﻣﺎد ﻋﻠﯾﮫ ﻟﻠﺣﻛم ﻋﻠﻰ ﻓﺎﺋدة اﻟﺣواﺷﻲ ﻣن ﻋدﻣﮭﺎ،اﻟﻣﺛﺎل ﺑﺳﯾط ﺟدا
Databases
( ﺑﺎﻟﺟﺎﻓﺎ ؟access) ﻛﯾﻔﯾﺔ رﺑط ﻗﺎﻋدة ﺑﯾﺎﻧﺎت اﻛﺳس:٧٢ س
٨١
… .ﻧﺑدأ ﻋﻠﻰ ﺑرﻛﺔ ﷲ ….
٨٢
وﻧﻔﺗﺢ (Data Source (ODBC
ﻧﺿﻐط ﻋﻠﻰ زر addﻟﻛﻲ ﻧﺿﯾف ﻗﺎﻋدة اﻟﺑﯾﺎﻧﺎت اﻟﻲ اﻟﻧظﺎم ODBCوﯾﺗم اﻟﺗﻌرف ﻋﻠﯾﮭﺎ ﻣن
ﺧﻼل NetBeans
٨٣
ﻧﻘوم ﺑﻛﺗﺎﺑﺔ اﺳم ﻗﺎﻋدة اﻟﺑﯾﺎﻧﺎت واﻟذي ﺳﯾﻛون ﻛراﺑط ﻟﻘﺎﻋدة اﻟﺑﯾﺎﻧﺎت )اﻻﺳم ﯾﻛون ﻣﺣﻔوظ -١
ﻓﻲ ODBCوﻻ ﯾﺷﺗرط ان ﯾﻛون ﻧﻔس اﺳم ﻗﺎﻋدة اﻟﺑﯾﺎﻧﺎت اﻻﺻﻠﻲ(
…………………………………………..
٨٤
اوﻻ :طرﯾﻘﺔ اﺳﺗﯾراد ﺟدول واظﮭﺎره ﻛﺎﻣﻼ
*Import java.sql؛
٨٥
ﺑﻌد ذﻟك ﻧﻘوم ﺑﺎﺿﺎﻓﺔ اﻟداﻟﺔ ) ( Methodاﻟﺗﺎﻟﯾﺔ :
٨٦
– ٢٦ﻧﺳﺗﺧدم try – catchﻟﻠﺗﺣذﯾر ﻣن وﺟود اي ﺧطﺄ
Class -٢٧ھﻲ ﻣﻛﺗﺑﺔ ﺧﺎﺻﺔ ﺑﻠﻐﺔ اﻟﺟﺎﻓﺎ و forNameھﻲ ﺧﺎﺻﯾﺔ ﺗﺎﺑﻌﺔ ﻓﻲ اﻟﻛﻼس ﻧﺳﺗﺧدﻣﮭﺎ
ﻟﺗﻘوم ﺑﺎﺳﺗدﻋﺎء JBDCﻟﺗﺗم ﻋﻣﻠﯾﺔ رﺑط اﻟﺟﺎﻓﺎ ﺑﻘﺎﻋدة اﻟﺑﯾﺎﻧﺎت
– ٣٢ﻧﻌرف ﻣﺧزن ﻟﻠﺟدول وﺣﯾث ان اﻟﺟدول ﻻ ﯾﺗم ﺗﻌﺑﺋﺗﮫ اﻻ ﻋن طرﯾﻖ ﻣﺻﻔوﻓﮫ واﻟﻣﺻﻔوﻓﺔ
ﺗﺄﺧذ اﻟﺑﯾﺎﻧﺎت ﻣن DBوﺗﻘوم ﺑﺗﻌﺑﺋﺔ اﻟﺟدول
–٣٥& ٣٤ﻧﺿﯾف ﻋﻣودﯾن ف dtmواﻟذي ﺳﯾﻧﻘل اﻟﺑﯾﺎﻧﺎت اﻟﻰ اﻟﺟدول وﻧﺳﻣﻲ اﻻول ID
واﻟﺛﺎﻧﻲ Brand
– ٣٦ﺑﻌد ﺟﻠب اﻟﺑﯾﺎﻧﺎت ﻣن DBوﺣﻔظﮭﺎ ﻓﻲ rsاذا ﻛﺎن ھﻧﺎﻟك ﺳطر ﺗﺎﻟﻲ ﻧﻔذ اﻻﺗﻲ
٨٧
– ٣٩ﯾﻘوم ﺑﺎﻟﺑدأ ﻣن اﻟﺻف اﻻول
– ٥٦اﻟﺧروج ﻣن اﻟﺑرﻧﺎﻣﺞ
ﻋﻧد اﻟﺿﻐط ﻋﻠﯾﮫ ﯾﺗم اﺳﺗدﻋﺎء اﻟداﻟﺔ connDBوﺑدأ اﻻﺗﺻﺎل ﺑﻘﺎﻋدة اﻟﺑﯾﺎﻧﺎت
٨٨
ﻓﻲ ﺣﺎﻟﺔ ان اﻟﻣﺳﺗﺧدم ﯾرﯾد اﻟﺑﺣث ﻓﻲ اﻟﺟدول ﯾﻘوم ﺑﺎﻟﻛﺗﺎﺑﺔ ﻓﻲ اﻟﺣﻘل JTextField3وﺗﻧﻔﯾذ
اﻟﻣﺗﻐﯾر Search
٨٩
ﻛود اﻟزر >>
ﻛود زر <
ﻛود زر <<
٩٠
ﻟﻌرض أول ﻋﻣود ﻓﻲ اﻟﺟدول
ﻛود زر New
٩١
ﻛود زر Update
٩٢
ﻛود زر Delete
٩٣
ﺛﺎﻧﯾﺎ :طرﯾﻘﺔ اﺳﺗﯾراد ﻋﻣود ووﺿﻌﮫ ﻣﺣﺗواه ﻓﻲ ﻛوﻣﺑوﺑوﻛس
٩٤
ﻓﻲ ھذه اﻟداﻟﺔ ﻗﻣت ﺑﺗﻐﯾر ﻗﯾﻣﺔ اﻟﻣﺗﻐﯾر rsﺣﯾث ﺳﯾﻘوم ﺑﺟﻠب ﻓﻘط ﻋﻣود واﺣد ﻓﻘط وھو
BRAND
٩٥
Graphics 2D
ھذه اﻟطرﯾﻘﺔ ﺗرﺳم ﻣﺳﺗطﯾﻼ ﻓﺎرﻏﺎ x .و yﯾﻣﺛﻼن اﻹﺣداﺛﯾﺎت اﻟﺗﻲ ﺳﻧﺑدأ ﻣﻧﮭﺎ اﻟرﺳم width ،و
heightﯾﻣﺛﻼن اﻟﻌرض واﻟطول.
ھذه اﻟطرﯾﻘﺔ ﺗرﺳم ﻣﺳﺗطﯾﻼ ﻣﻣﻠوءً x .و yﯾﻣﺛﻼن اﻹﺣداﺛﯾﺎت اﻟﺗﻲ ﺳﻧﺑدأ ﻣﻧﮭﺎ اﻟرﺳم width ،و
heightﯾﻣﺛﻼن اﻟﻌرض واﻟطول.
ھذه اﻟطرﯾﻘﺔ ﺗرﺳم داﺋرة ﻓﺎرﻏﺔ x .و yﯾﻣﺛﻼن اﻹﺣداﺛﯾﺎت اﻟﺗﻲ ﺳﻧﺑدأ ﻣﻧﮭﺎ اﻟرﺳم width ،و
heightﯾﻣﺛﻼن اﻟﻌرض واﻟطول.
٩٦
وwidth ، ﯾﻣﺛﻼن اﻹﺣداﺛﯾﺎت اﻟﺗﻲ ﺳﻧﺑدأ ﻣﻧﮭﺎ اﻟرﺳمy وx .ھذه اﻟطرﯾﻘﺔ ﺗرﺳم داﺋرة ﻣﻣﻠوءة
. ﯾﻣﺛﻼن اﻟﻌرض واﻟطولheight
ﯾﻣﺛﻼن إﺣداﺛﯾﺎتy2 وx2 ، ﯾﻣﺛﻼن إﺣداﺛﯾﺎت ﺑداﯾﺔ اﻟﺧطy1 وx1 .ھذه اﻟطرﯾﻘﺔ ﺗرﺳم ﺳطرا
.اﻟﻧﮭﺎﯾﺔ
setColor(Color c)
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
frm.add(new PaintBoard());
frm.setSize(300, 400);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setVisible(true);
٩٧
}
@Override
super.paintComponent(g);
g.setColor(Color.RED);
g.setColor(Color.BLUE);
g.setColor(Color.GREEN);
g.setColor(Color.BLACK);
واﻟﻨﺘﯿﺠﺔ
٩٨
٩٩
ﻣﺷﺎرﯾﻊ ﺟﺎھزة
- ٧٤ﻋﻤﻞ ﺑﺮﻧﺎﻣﺞ ﺷﺒﯿﮫ ﺑـ "اﻟﺮﺳﺎم" .ﯾﻘﻮم اﻟﻤﺴﺘﺨﺪم ﺑﺘﺤﺪﯾﺪ اﻟﻠﻮن واﻟﺸﻜﻞ وﯾﻨﻘﺮ ﻋﻠﻰ
اﻟﺸﺎﺷﺔ ﻟﯿﺒﺪأ ﺑﺎﻟﺮﺳﻢ ،اﺳﺘﺨﺪام ﺷﺮح ﺗﻘﻨﯿﺎت اﻟﺒﻨﺎء ﻓﻲ اﻟﺼﻒ ﻟﺮﺳﻢ اﻟﺸﻜﻞ اﻟﻤﺤﺪد اﻧﻈﺮ
.ﻟﻠﺸﻜﻞ ﻓﻲ اﻷﺳﻔﻞ .
CLS C1 C2 C3 C4 C5 C6 C7
١٠٠
Colors
//Main :
package cgproject_4;
P.setDefaultCloseOperation(Paint.EXIT_ON_CLOSE);
P.setVisible(true);
//Classe:
package cgproject_4;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JButton;
١٠١
import javax.swing.JFrame;
import javax.swing.JPanel;
private Color c;
private JButton
bt1,bt2,bt3,bt4,bt5,bt6,bt7,bt8,bt9,bt10,bt11,bt12,bt13,bt14,bt15,bt16,bt17,bt1
8;
private Graphics2D g;
Paint()
super("Paint : Hekam");
setSize(900,680);
this.setLayout(null);
bt1=new JButton(){
@Override
١٠٢
protected void paintComponent(Graphics g){
super.paintComponent(g);
g2d.setColor(Color.BLACK);
g2d.drawLine(20,60,60,20);
};
bt1.setLocation(0,0);
bt1.setSize(80,80);
bt1.addActionListener(this);
this.add(bt1);
bt2=new JButton(){
@Override
super.paintComponent(g);
g2d.setColor(Color.BLACK);
g2d.drawRect(15,15,50,40);
};
bt2.setLocation(0,80);
١٠٣
bt2.setSize(80,80);
bt2.addActionListener(this);
this.add(bt2);
bt3=new JButton(){
@Override
super.paintComponent(g);
g2d.setColor(Color.BLACK);
g2d.drawOval(15,15,50,50);
};
bt3.setLocation(0,160);
bt3.setSize(80,80);
bt3.addActionListener(this);
this.add(bt3);
bt4=new JButton(){
@Override
super.paintComponent(g);
١٠٤
g2d.setColor(Color.BLACK);
g2d.drawOval(10,15,60,50);
};
bt4.setLocation(0,240);
bt4.setSize(80,80);
bt4.addActionListener(this);
this.add(bt4);
bt5=new JButton(){
@Override
super.paintComponent(g);
g2d.setColor(Color.BLACK);
g2d.drawLine(40,10,40,65);
};
bt5.setLocation(0,320);
bt5.setSize(80,80);
bt5.addActionListener(this);
this.add(bt5);
bt6=new JButton(){
١٠٥
@Override
super.paintComponent(g);
g2d.setColor(Color.BLACK);
g2d.drawLine(10,40,60,40);
};
bt6.setLocation(0,400);
bt6.setSize(80,80);
bt6.addActionListener(this);
this.add(bt6);
bt7=new JButton(){
@Override
super.paintComponent(g);
g2d.setColor(Color.BLACK);
g2d.drawRect(15,15,45,45);
};
bt7.setLocation(0,480);
bt7.setSize(80,80);
١٠٦
bt7.addActionListener(this);
this.add(bt7);
bt8=new JButton("CLS");
bt8.setLocation(0,560);
bt8.setSize(80,80);
bt8.addActionListener(this);
this.add(bt8);
bt9=new JButton();
bt9.setBackground(Color.black);
bt9.setLocation(80,560);
bt9.setSize(80,80);
bt9.addActionListener(this);
this.add(bt9);
bt10=new JButton();
bt10.setBackground(Color.red);
bt10.setLocation(160,560);
bt10.setSize(80,80);
bt10.addActionListener(this);
this.add(bt10);
١٠٧
bt11=new JButton();
bt11.setBackground(Color.yellow);
bt11.setLocation(240,560);
bt11.setSize(80,80);
bt11.addActionListener(this);
this.add(bt11);
bt12=new JButton();
bt12.setBackground(Color.orange);
bt12.setLocation(320,560);
bt12.setSize(80,80);
bt12.addActionListener(this);
this.add(bt12);
bt13=new JButton();
bt13.setBackground(Color.green);
bt13.setLocation(400,560);
bt13.setSize(80,80);
bt13.addActionListener(this);
this.add(bt13);
bt14=new JButton();
bt14.setBackground(Color.cyan);
bt14.setLocation(480,560);
bt14.setSize(80,80);
bt14.addActionListener(this);
١٠٨
this.add(bt14);
bt15=new JButton();
bt15.setBackground(Color.magenta);
bt15.setLocation(560,560);
bt15.setSize(80,80);
bt15.addActionListener(this);
this.add(bt15);
bt16=new JButton();
bt16.setBackground(Color.white);
bt16.setLocation(640,560);
bt16.setSize(80,80);
bt16.addActionListener(this);
this.add(bt16);
bt17=new JButton();
bt17.setBackground(Color.darkGray);
bt17.setLocation(720,560);
bt17.setSize(80,80);
bt17.addActionListener(this);
this.add(bt17);
bt18=new JButton("Exit");
bt18.setSize(80,80);
bt18.setLocation(800,560);
١٠٩
bt18.addActionListener(this);
this.add(bt18);
jpanel=new JPanel();
jpanel.setLocation(80,0);
jpanel.setSize(815,560);
jpanel.setBackground(Color.white);
jpanel.addMouseListener(this);
this.add(jpanel);
c =color;
int x = 0, y = r, s = 3-(2*r);
while(x<=y){
١١٠
g.drawLine(xc+y, yc-x, xc+y, yc-x);
if (s<0)
s += 4*x + 6;
else{
s += 4*(x-y) + 10;
y--;
x++;
double ct,st;
double xt;
double x,y;
double theta=2.0/(a+b);
ct=Math.cos(theta);
st=Math.sin(theta);
x=0; y=b;
while (y>=0)
١١١
{
PutPixel(g,(int)Math.round(x+xc),(int)Math.round(yc-y));
PutPixel(g,(int)Math.round(xc-x),(int)Math.round(yc-y));
PutPixel(g,(int)Math.round(xc-x),(int)Math.round(yc+y));
PutPixel(g,(int)Math.round(xc+x),(int)Math.round(yc+y));
xt=x;
x=(x*ct)+(a*1.0/b)*(y*st);
y=(y*ct)-(b*1.0/a)*(x*st);
g.drawLine(x, y, x, y);
@Override
if(e.getSource()==bt1){
ch=1;
else if(e.getSource()==bt2){
ch=2;
١١٢
}
else if(e.getSource()==bt3){
ch=3;
else if(e.getSource()==bt4){
ch=4;
else if(e.getSource()==bt5){
ch=5;
else if(e.getSource()==bt6){
ch=6;
else if(e.getSource()==bt7){
ch=7;
else if(e.getSource()==bt8){
repaint();
else if(e.getSource()==bt9){
setColor(Color.black);
else if(e.getSource()==bt10){
setColor(Color.red);
else if(e.getSource()==bt11){
١١٣
setColor(Color.yellow);
else if(e.getSource()==bt12){
setColor(Color.orange);
else if(e.getSource()==bt13){
setColor(Color.green);
else if(e.getSource()==bt14){
setColor(Color.cyan);
else if(e.getSource()==bt15){
setColor(Color.magenta);
else if(e.getSource()==bt16){
setColor(Color.white);
else if(e.getSource()==bt17){
setColor(Color.lightGray);
else if(e.getSource()==bt18)
System.exit(0);
١١٤
@Override
count++;
if(count==1){
x1=e.getX();
y1=e.getY();
else if(count==2){
x2=e.getX();
y2=e.getY();
paintComponent(g);
@Override
@Override
١١٥
}
g=(Graphics2D) jpanel.getGraphics();
if(ch==1){
g.setColor(c);
count=0;
if(ch==2){
if(x1>x2){
int temp ;
temp= x2;
x2 = x1;
x1 = temp;
if(y1>y2){
١١٦
y2 = y1;
y1 = temp;
g.setColor(c);
g.drawRect(x1, y1,x2-x1,y2-y1);
count=0;
if(ch==3){
r=(float) Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
g.setColor(c);
BCircle(g,x1,y1,Math.round(r));
count=0;
if(ch==4){
a=(float) Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
b=a/2;
g.setColor(c);
Ellipse(g,x1,y1,Math.round(a),Math.round(b));
count=0;
١١٧
if(ch==5){
g.setColor(c);
count=0;
if(ch==6){
g.setColor(c);
count=0;
if(ch==7){
if(x1>x2){
int temp ;
temp= x2;
x2 = x1;
x1 = temp;
if(y1>y2){
y2 = y1;
y1 = temp;
١١٨
}
;)g.setColor(c
;))g.drawRect(x1, y1,x2-x1,(x2-x1
;count=0
}
}
}
capture-٧٥
١١٩
* To change this license header, choose License Headers in Project
Properties.
*/
package javaapplication2;
import java.awt.AWTException;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
/**
١٢٠
* @author mohammed s
*/
static JFrame f;
/**
*/
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(600,600);
f.setVisible(true);
captur=new JButton("capture");
captur.setBounds(10,500,100,50);
f.add(captur);
captur.addActionListener(new ActionListener() {
@Override
try {
BufferedImage buffer=r.createScreenCapture(new
Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
١٢١
try {
ImageIO.write(buffer,"JPG",new
File("screen.jpg"));
ex.printStackTrace();
ex.printStackTrace();
});
splash-٧٦
وھﻲ ﻛﯾف ﺗﻌﻣل ﯾﻌﻧﻲ ﻓﻲ ﻣﻘدﻣﮫ اﻟﺑرﻧﺎﻣﺞ ﺻوره ﺟﺎري اﻟﺗﺣﻣﯾل وﺻوره ﻣﻌﺑره ﻋن
اﻟﺑرﻧﺎﻣﺞ ﺷﺎﺷﮫ ﻣدﺗﮭﺎ ﺧﻣس ﺛواﻧﻲ
// Splash.java
//
import javax.swing.*;
١٢٢
import java.awt.*;
class Splash {
showSplash(3000);
splash.setBounds(200,100,455,500);
copyrt.setForeground(Color.green);
١٢٣
content.add(label, BorderLayout.CENTER);
content.add(copyrt, BorderLayout.SOUTH);
content.setBorder(BorderFactory.createLineBorder(Color.blue, 20));
// display it
splash.setVisible(true);
splash.setVisible(false);
open net-٧٧
ﻣﺛﻼgoogle.com ﻛﯾف ﺗﻔﺗﺢ ﻣﺳﺗﻌرض اﻟﻧت ﻣن ﺑرﻧﺎﻣﺟك
import java.awt.Desktop;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
class mo{
١٢٤
public static void main(String[] args) {
try {
//open the default browser using the method browse which take
an URI object representing the web page
desktop.browse(new URI("http://google.com"));
ex.printStackTrace();
ex.printStackTrace();
}}
count letter-٧٨
ﻛﯾف ﺗﻌﻣل ﺑرﻧﺎﻣﺞ ﯾﺣﺳب ﻟك ﻋدد ظﮭور ﻛل ﺣرف ﻣن اﻟﺣروف اﻻﻧﺟﻠﯾزﯾﮫ ﺑطرﯾﻘﮫ
ﻣﺣﺗرﻓﮫ ﺟدا
import javax.swing.JOptionPane;
class CountEachLetter {
١٢٥
public static void main(String[] args) {
// Display results
if (counts[i] != 0)
JOptionPane.showMessageDialog(null, output);
١٢٦
if (Character.isLetter(s.charAt(i)))
counts[s.charAt(i) - 'a']++;
return counts;
draw time-٧٩
وھو اﻋﺗﺑره ﺑرﻧﺎﻣﺞ رھﯾب ﺟدا
ﻹﻧﮫ ﯾﻌطﯾك ﺣﻘﻠﯾن ﺣﻘل ﺗدﺧل ﻓﯾﮫ اﻟﺳﺎﻋﺔ وﺣﻘل ﺗدﺧل ﻓﯾﮫ اﻟدﻗﺎﺋﻖ وﺗﺿﻐط اﻟزر وھو
ﯾروح ﯾﻌﻣل ﻟﮭﺎ رﺳﻣﮫ ﻋﻠﻰ اﻟﻔورم
ﻣﻣﻛن ﺗﻌطﯾﮫ ﺗﺎﯾﻣر اﻟﺳﺎﻋﮫ ﺣﻖ اﻟوﯾﻧدوز وھو ﯾظل ﯾرﺳم ﻋﻠﻰ طول
import java.awt.* ;
import java.awt.event.* ;
import javax.swing.* ;
{ public MaFenetre ()
{ setTitle ("PENDULE") ;
١٢٧
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panControles.add (saisieHeures) ;
panControles.add (etiqHeures) ;
panControles.add (saisieMinutes) ;
panControles.add (etiqMinutes) ;
panControles.add (ok) ;
ok.addActionListener (this) ;
contenu.add (panPendule) ;
panPendule.setBackground (Color.yellow) ;
{ return minutes ;
{ return heures ;
١٢٨
public void actionPerformed (ActionEvent e)
if (e.getSource() == ok)
{ try
h = Integer.parseInt (chHeures) ;
saisieHeures.setText ("") ;
try
m = Integer.parseInt (chMinutes) ;
saisieMinutes.setText ("") ;
repaint() ;
{ heures = h ; minutes = m ;
١٢٩
}
else
{ saisieMinutes.setText (""+minutes) ;
saisieHeures.setText (""+heures) ;
private JButton ok ;
{ this.fen = fen ;
{ super.paintComponent(g) ;
// dessin du cercle
int rayon ;
١٣٠
if (panTropLarge) rayon = hauteur/2 - 2 ; else rayon = largeur/2 - 2 ;
(int)(xCentre+rayon*Math.cos(angle)),
(int)(yCentre-rayon*Math.sin(angle))) ;
(int)(xCentre+rayon/2.*Math.cos(angle)),
(int)(yCentre-rayon/2.*Math.sin(angle))) ;
class Pendule
fen.setVisible(true) ;
color-٨٠
١٣١
وھو ﻛﯾف ﺗﻠون اﻟﺧط وﻛﯾف ﺗﻐﯾر ﻧوع اﻟﺧط ﺑﺎﺳﺗﺧدام اﻟﺟﺎﻓﺎ
import java.awt.Color;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Action;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JColorChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public JFrame f;
JTextArea t;
mo n=new mo();
١٣٢
}
public mo()
f=new JFrame();
f.setVisible(true);
f.setSize(300,300);
f.setLayout(null);
c1=new JCheckBox("bold");
c2=new JCheckBox("italic");
t=new JTextArea();
c1.setBounds(10,20,100,30);
c2.setBounds(10,50,100,30);
s.setBounds(10,100,100,100);
g.add(c1);
g.add(c2);
f.add(c1);
f.add(c2);
f.add(s);
b1=new JButton("ch");
b1.setBounds(10,200,100,50);
b1.addActionListener(this);
f.add(b1);
c1.addActionListener(this);
١٣٣
c2.addActionListener(this);
if(e.getSource()==c1)
{String messg=t.getText();
t.setFont(new Font("",Font.BOLD,14));
t.setText(messg);
if(e.getSource()==c2)
{String messg=t.getText();
t.setFont(new Font("",Font.ITALIC,14));
t.setText(messg);}
if(e.getSource()==b1)
color=JColorChooser.showDialog(t,"choss",color);
t.setCaretColor(color);
t.setColumns(10);
t.setLineWrap(true);
// t.setBackground(color);
}}
١٣٤
calc -٨١
ﻛﯾف ﺗﻌﻣل اﻟﮫ ﺣﺎﺳﺑﮫ ﺑﺎﺳﺗﺧدام اﻟﺟﺎﻓﺎ
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.*;
import java.util.Currency;
import java.util.Set;
import javax.swing.*;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
public JFrame f;
private JButton p;
١٣٥
private Color red = Color.lightGray;
String op;
ali.method();
f=new JFrame("calc");
f.setVisible(true);
f.setBounds(20,20,1000,900);
f.setLayout(null);
f.setTitle(";)"اﻟﺔ ﺣﺎﺳﺒﺔ
//f.add(icon);
l1.setBounds(1,1,1000,900);
١٣٦
f.add(l1);
p1.setSelected(true);
p1.setForeground(Color.red);
p1.setBackground(Color.blue);
t1=new JTextField();
t1.setFont(new Font("",Font.PLAIN,18));
p15.addActionListener(this);
p1.addActionListener(this);
p2.addActionListener(this);
١٣٧
p3.addActionListener(this);
p4.addActionListener(this);
p5.addActionListener(this);
p6.addActionListener(this);
p7.addActionListener(this);
p8.addActionListener(this);
p9.addActionListener(this);
p10.addActionListener(this);
p11.addActionListener(this);
p12.addActionListener(this);
p13.addActionListener(this);
t1.setBounds(600,100,200,100);
p1.setBounds(20,100,100,100);
p2.setBounds(200,100,100,100);
p3.setBounds(380,100,100,100);
// p15.setBounds(450,100,60,20);
p4.setBounds(20,250,100,100);
p5.setBounds(200,250,100,100);
p6.setBounds(380,250,100,100);
p7.setBounds(20,400,100,100);
p8.setBounds(200,400,100,100);
p9.setBounds(380,400,100,100);
p15.setBounds(550,400,100,100);
١٣٨
p10.setBounds(20,550,100,100);
p11.setBounds(200,550,100,100);
p12.setBounds(380,550,100,100);
p13.setBounds(550,550,100,100);
// p14.setBounds(700,550,100,100);
l1.add(t1);
l1.add(p1);
l1.add(p2);
l1.add(p3);
l1.add(p15);
l1.add(p4);
l1.add(p5);
l1.add(p6);
l1.add(p7);
l1.add(p8);
l1.add(p9);
l1.add(p10);
l1.add(p11);
l1.add(p12);
l1.add(p13);
//f.add(p14);
if(e.getSource()==p1)
{//t1.setFont(new Font("",Font.BOLD,18));
١٣٩
t1.setText(t1.getText().concat("1"));
else
if(e.getSource()==p2)
{t1.setText(t1.getText().concat("2"));
//t1.setText("2");
if(e.getSource()==p3)
{t1.setText(t1.getText().concat("3"));
//t1.setText("3");
if(e.getSource()==p4)
{t1.setText(t1.getText().concat("4"));
// t1.setText("4");
if(e.getSource()==p5)
{t1.setText(t1.getText().concat("5"));
// t1.setText("5");
if(e.getSource()==p6)
{t1.setText(t1.getText().concat("6"));
// t1.setText("6");
if(e.getSource()==p7)
١٤٠
{t1.setText(t1.getText().concat("7"));
//t1.setText("7");
if(e.getSource()==p8)
{t1.setText(t1.getText().concat("8"));
// t1.setText("8");
if(e.getSource()==p9)
{t1.setText(t1.getText().concat("9"));
// t1.setText("9");
if(e.getSource()==p10)
{num1 = Double.parseDouble(t1.getText());
t1.setText("");
op="+";
if(e.getSource()==p11)
{min = Double.parseDouble(t1.getText());
t1.setText("");
op="-";
if(e.getSource()==p15)
١٤١
{num1=0.0;sum=0.0;
mult=0.0;
t1.setText("");
if(e.getSource()==p12)
{num1 = Double.parseDouble(t1.getText());
t1.setText("");
op="*";
if(e.getSource()==p13)
{if(op=="+"){
sum= Double.parseDouble(t1.getText());
sum+=num1;
t1.setText(sum.toString());}
if(op=="-")
{ num1= Double.parseDouble(t1.getText());
min=min-num1;
t1.setText(min.toString());}
if(op=="*")
{mult= Double.parseDouble(t1.getText());
mult*=num1;
t1.setText(mult.toString());
}}}
١٤٢
أﺳﻣﺎء اﻟﻣﺷﺎرﻛﯾن ﻓﻲ اﻟﻛﺗﺎب :
ﻋﺑد اﻟﻠطﯾف ﻋﺑد اﻟﻌزﯾز ﷴ ﺟﺎﻣﻊ
maisam alrawi
ﻣﯾﺎدة ﺣﻣود ﻋوض ﺣﺳن
ﷴ اﻣﯾن
Mai Kamel Amro
ﺣﻛم ﻣﺣﻣود ﻋﺑدﷲ اﺣﻣﯾدات
Mostafa Anter
Sabeel Akhras
راﻣﻲ ﻋﺑداﻟﻛرﯾم ﷴ اﻟﺣﻣﺎدي
ﺣﻣزة ﺑراھﻣﻲ
ﺑﺎﺳل ﺳﻌﯾد
ﷴ ﺳﻧﺎن ﻣﺣﺳن ﻣﺳﻌود
راﻛﺎن ﻓﺎﺿل