You are on page 1of 84

‫]‪March 25, 2013 [SOFYANY‬‬

‫‪C# Programming Language‬‬

‫ان ﻟﻐﺔ اﻟﺴﻰ ﺷﺎرب ﺗﺘﺒﻊ ﻣﺠﻤﻮﻋﺔ ﻟﻐﺎت ‪ .Net Frame Work‬وھﺬه اﻟﺒﯿﺌﮫ‬

‫ﺗﺤﺘﻮى ﻋﻠﻰ ﻋﺪة ﻟﻐﺎت ﻟﻜﻦ ﻛﻞ ﻣﻨﮭﻢ ﻟﮫ اﻟﻜﻮد اﻟﺨﺎص ﺑﮫ وﺗﻮﺟﺪ ﺑﮭﺎ ﻟﻐﮫ وﺳﯿﻄﯿﮫ‬

‫)‪ Microsoft Intermediate Language (MSIL‬وﺑﺎﻟﺘﺎﻟﻰ ھﻰ ﻟﻐﮫ ﻻ ﺗﻌﺘﻤﺪ‬

‫ﻋﻠﻰ اﻻﻟﮫ ﻓﮭﻰ ﺗﻌﻤﻞ ﻋﻠﻰ اى ﺟﮭﺎز‬

‫ان ‪ C#‬ﺗﻀﻢ ﻣﻤﯿﺰات ‪ C++ - VB‬ﺑﻤﺎ ﻟﮭﺎ ﻣﻦ ﺳﮭﻮﻟﺔ اﻟﺘﻌﺎﻣﻞ ﻓﻰ اﻟﻮاﺟﮭﺎت‬

‫اﻟﺮﺳﻮﻣﯿﮫ ﺑﺎﻻﺿﺎﻓﮫ اﻟﻰ ﻗﻮة اﻟﺒﺮﻣﺠﮫ ‪.‬‬

‫ان اﻟﻔﺎرق اﻟﺠﻮھﺮى ﺑﯿﻦ ‪ C#‬و ‪ C++‬ھﻮ ﻛﺎﻟﺘﺎﻟﻰ ‪:‬‬

‫‪C++‬‬ ‫‪C#‬‬
‫ھﻰ ﻟﻐﺔ ﺗﺴﺘﻄﯿﻊ ﺑﮭﺎ ان ﺗﺴﺘﺨﺪم ﻣﻔﮭﻮم‬ ‫ھﻰ ﻟﻐﮫ ﻣﺒﻨﯿﮫ ﺑﺎﻻﺳﺎس ﻋﻠﻰ ﻣﻔﮭﻮم‬
‫اﻟﺒﺮﻣﺠﮫ ﻛﺎﺋﻨﯿﺔ اﻟﺘﻮﺟﮫ‬ ‫اﻟﺒﺮﻣﺠﮫ ﻛﺎﺋﻨﯿﺔ اﻟﺘﻮﺟﮫ او‬
‫‪Object Oriented‬‬

‫‪© To Sofyany‬‬ ‫‪Page 1‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫اﻟﮭﯿﻜﻞ اﻟﺘﻨﻈﯿﻤﻰ ﻟﺒﺮﻧﺎﻣﺞ ‪: C#‬‬

‫ﻧﺄﺗﻰ ﻟﺘﻔﺴﯿﺮ اﻟﺘﻜﻮﯾﻦ اﻟﺮﺋﯿﺴﻰ ﻟﺒﺮﻧﺎﻣﺞ ‪C#‬‬

‫‪ Using‬ھﻰ ﻛﻠﻤﮫ ﻣﺤﺠﻮزه داﺧﻞ اﻟﻠﻐﮫ وﺗﺴﺘﺨﺪم ﻟﻠﻨﺪاء ﻋﻠﻰ اﺳﻢ ﻣﻌﯿﻦ ﻟﯿﺼﺒﺢ‬

‫ﺟﺰء ﻣﻦ اﻟﺒﺮﻧﺎﻣﺞ‬

‫‪ Namespace‬وﯾﻌﺮف ﻣﺠﺎزا ﺑﻔﻀﺎء اﻻﺳﻤﺎء وھﻮ ﻋﺒﺎره ﻏﻦ ﻣﺠﻠﺪ ﯾﺤﺘﻮى‬

‫ﺑﺪاﺧﻠﮫ ﻋﻠﻰ ‪ Classes‬ﺟﺎھﺰه ﻟﻠﻌﻤﻞ ﻋﻠﯿﮭﺎ وﻟﮭﺎ اﺳﻤﺎء ﻣﺤﺪده‬

‫وﻧﺴﺘﻄﯿﻊ اﻧﮫ ﻧﻤﺜﻠﮫ ﺑﺎﻟﺸﻜﻞ اﻟﺘﺎﻟﻰ ‪:‬‬

‫‪© To Sofyany‬‬ ‫‪Page 2‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫‪C#‬‬

‫‪Class‬‬

‫‪Namespaces‬‬

‫‪ Classes‬ھﻰ وﺣﺪات ﻣﺤﺠﻮزه داﺧﻞ اﻟﻠﻐﺔ وﺗﺤﺘﻮى ﻋﻠﻰ ﺟﺰﺋﯿﻦ رﺋﯿﺴﯿﻦ‪:‬‬

‫‪ Data Member -1‬وھﻰ اﻟﻤﺘﻐﯿﺮات واﻟﺘﻰ ﺗﺤﺘﻮى ﻋﻠﻰ ﺑﯿﺎﻧﺎت‬

‫‪ Function Member -2‬دوال ﺗﻘﻮم ﺑﺘﻨﻔﯿﺬ ﻋﻤﻠﯿﺎت ﻋﻠﻰ اﻟﺪوال اﻟﻤﺨﺰﻧﮫ‬

‫ان اى ﺑﺮﻧﺎﻣﺞ داﺧﻞ ‪ C#‬ﻗﺪ ﯾﺤﺘﻮى ﻋﻠﻰ اﻛﺜﺮ ﻣﻦ ‪ namespace‬ﻋﻠﻰ اﻻﻗﻞ‬

‫ﻻﺑﺪ ﻣﻦ وﺟﻮد واﺣﺪ ﻓﻘﻂ وﻗﺪ ﯾﺤﺘﻮى ﻋﻠﻰ اﻛﺜﺮ ﻣﻦ ‪ Class‬ﻟﻜﻦ ﻋﻠﻰ اﻻﻗﻞ‬

‫ﯾﺠﺐ ان ﯾﺤﺘﻮى ﻋﻠﻰ ‪ Class‬واﺣﺪ‬

‫وﺑﻌﺪ ‪ System‬ھﻮ ‪ namespace‬اﻟﺮﺋﯿﺴﻰ ﺑﺼﻔﺘﮫ ﯾﺤﺘﻮى ﻋﻠﻰ ‪classes‬‬

‫ﺗﺤﺘﻮى ﻋﻠﻰ دوال اﻟﺘﻮﺻﯿﻒ ﻟﻠﺪﺧﻞ واﻟﺨﺮج داﺧﻞ اى ﺑﺮﻧﺎﻣﺞ‬

‫‪© To Sofyany‬‬ ‫‪Page 3‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫ان وظﯿﻔﺔ اﻟﺪاﻟﮫ اﻟﺮﺋﯿﺴﯿﮫ )(‪ Main‬ان ‪ Compiler‬ﯾﺒﺪء داﺋﻤﺎ ﺑﺘﻨﻔﯿﺬ ﺧﻄﻮات‬

‫اﻟﺒﺮﻧﺎﻣﺞ ﻣﻦ ﻋﻨﺪھﺎ اﯾﺎ ﻛﺎن ﻣﻮﺿﻌﮭﺎ وﻻﺑﺪ ان ﺗﻜﻮن ﻣﻮﺟﻮده داﺧﻞ ‪class‬‬

‫اﻟﺮﺋﯿﺴﻰ ﻟﻠﺒﺮﻧﺎﻣﺞ واﻟﺬى ﯾﻌﻄﻰ اﺳﻢ اﻻﻓﺘﺮاﺿﻰ ‪ Program‬وﻣﻦ اﻟﻤﻤﻜﻦ‬

‫وﺿﻊ ﺗﻠﻚ اﻟﺪاﻟﮫ داﺧﻞ اى ‪ class‬وﺳﻌﻨﺘﺒﺮه اﻧﮫ اﻟﺮﺋﯿﺴﻰ اﻟﺬى ﯾﺤﺘﻮى ﻋﻠﻰ‬

‫ﺗﻠﻚ اﻟﺪاﻟﮫ‬

‫ان ﻟﻐﺔ ‪ C#‬ﺣﺴﺎﺳﮫ ﻟﺤﺎﻟﺔ اﻻﺣﺮف ﺑﻤﻌﻨﻰ اﻧﮫ ﯾﺠﺐ ان ﯾﺮاﻋﻰ ﻓﯿﮭﺎ ‪capital‬‬

‫او ‪small‬‬

‫ﺷﺮح اﻻواﻣﺮ اﻟﺒﺮﻣﺠﯿﮫ داﺧﻞ ﻟﻐﺔ ‪- : C#‬‬

‫اواﻣﺮ اﻟﻄﺒﺎﻋﮫ ‪:‬‬

‫ھﻨﺎك اﻣﺮان اﺳﺎﺳﯿﺎن داﺧﻞ ‪ C#‬وھﻤﺎ ﻛﯿﻔﯿﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﺪﺧﻞ واﻟﺨﺮج واﻟﺬى‬

‫ﻻﻏﻨﻰ ﻋﻨﮭﻢ داﺧﻞ اى ﺑﺮﻧﺎﻣﺞ وھﻤﺎ ﻣﻤﺜﻼن ﻓﻰ داﻟﺘﯿﻦ ﯾﺘﺒﻌﺎن ﻧﻔﺲ ‪class‬‬

‫‪© To Sofyany‬‬ ‫‪Page 4‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫دوال اﻟﺪﺧﻞ واﻟﺨﺮج واﻟﺘﻰ ﺗﺘﺒﻊ ﺟﻤﯿﻌﮭﺎ اﻟﺘﺼﻨﯿﻒ ‪Console‬‬


‫ھﺬه اﻟﺪاﻟﮫ ﺗﻘﻮم ﺑﻄﺒﺎﻋﺔ اﻟﺨﺮج وﯾﻈﻞ‬ ‫)(‪Write‬‬
‫اﻟﻤﺆﺷﺮ ﻓﻰ ﻣﻜﺎﻧﮫ‬
‫ھﺬه اﻟﺪاﻟﮫ ﺗﻘﻮم ﺑﻄﺒﺎﻋﺔ اﻟﺨﺮج وﯾﻨﺘﻘﻞ‬ ‫)(‪WriteLine‬‬
‫اﻟﻤﺆﺷﺮ اﻟﻰ ﺳﻄﺮ ﺟﺪﯾﺪ اﺳﻔﻞ اﻟﺨﺮج‬
‫ﺗﻘﻮم ھﺬه اﻟﺪاﻟﮫ ﺑﻘﺮاءة اﻟﻤﺪﺧﻼت وداﺋﻤﺎ‬ ‫)(‪ReadLine‬‬
‫ﻣﺎ ﺗﻌﺘﺒﺮ ﻟﻐﺔ اﻟﺴﻰ ﺷﺎرب ان ﺟﻤﯿﻊ‬
‫اﻟﻤﺪﺧﻼت ﻋﻠﻰ اﻧﮭﺎ ﻧﺼﻮص ﻟﺬﻟﻚ ﯾﺠﺐ‬
‫ﺗﺤﻮﯾﻞ اﻟﻤﺪﺧﻼت ﺑﻌﺪ ﻗﺮأﺗﮭﺎ‬

‫ﻣﻌﺎﻣﻞ ﺗﻨﻈﯿﻢ ظﮭﻮر اﻟﺨﺮج ﻋﻠﻰ اﻟﺸﺎﺷﮫ وﻣﺎ ﯾﻌﺮف ‪Replacement‬‬


‫‪Operator‬‬

‫‪© To Sofyany‬‬ ‫‪Page 5‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫اﻧﻮاع اﻟﯿﺎﻧﺎت داﺧﻞ ﻟﻐﺔ ‪: C#‬‬

‫اﻧﻮاع اﻟﺒﯿﺎﻧﺎت داﺧﻞ اﻟﺴﻰ ﺷﺎرب وﺳﻌﺔ ﻛﻼ ﻣﻨﮭﺎ‬


‫ﺳﻌﺘﮫ‬ ‫ﻓﯿﻤﺎ ﯾﺴﺘﺨﺪم‬ ‫اﻟﻨﻮع‬
‫‪ 0‬اﻟﻰ ‪bits 8‬‬ ‫ﻟﻼرﻗﺎم‬ ‫‪Byte‬‬
‫‪ bits16‬اﻟﻰ ‪2byte‬‬ ‫ﻟﻼرﻗﺎم‬ ‫‪Short‬‬
‫‪32byte to 4byte‬‬ ‫ﻟﻼرﻗﺎم‬ ‫‪Int‬‬
‫‪8byte for one char‬‬ ‫ﻟﻠﺤﺮوف‬ ‫‪Char‬‬
‫‪4byte‬‬ ‫ﻟﻠﻜﺴﻮر‬ ‫‪Float‬‬
‫‪True or false‬‬ ‫ﻟﻠﻘﯿﻢ اﻟﻤﻨﻄﻘﯿﮫ‬ ‫‪Boolean‬‬
‫‪Stream open of char‬‬ ‫ﻟﻠﻨﺼﻮص‬ ‫‪String‬‬
‫‪8byte‬‬ ‫ﻟﻼرﻗﺎم اﻟﺘﻰ ﺗﺤﺘﻮى‬ ‫‪Double‬‬
‫ﻋﻼﻣﺎت ﻋﺸﺮﯾﮫ‬

‫اﻟﻘﺎﻋﺪه اﻟﻌﺎﻣﮫ ﻟﺘﻌﺮﯾﻒ اﻟﻤﺘﻐﯿﺮات داﺧﻞ ‪: C#‬‬

‫داﺧﻞ ﻟﻐﺔ اﻟﺴﻰ ﺷﺎرب ﻻﺑﺪ ﻣﻦ اﻻﻋﻼن ﻋﻦ اﻟﻤﺘﻐﯿﺮات ﺻﺮاﺣﺔ وﺗﻌﺮﯾﻔﮭﺎ ﻗﺒﻞ اﺳﺘﺨﺪاﻣﮭﺎ‬

‫او اﻋﻄﺎؤھﺎ اى ﻗﯿﻤﮫ‬

‫‪© To Sofyany‬‬ ‫‪Page 6‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫دوال اﻟﺘﺤﻮﯾﻞ داﺧﻞ ﻟﻐﺔ اﻟﺴﻰ ﺷﺎرب ‪:‬‬

‫ﻗﻠﻨﺎ ﺳﺎﺑﻘﺎ ان اﻟﺴﻰ ﺷﺎرب ﺗﻌﺘﺒﺮ ﺟﻤﯿﻊ اﻟﻤﺪﺧﻼت ﻋﻠﻰ اﻧﮭﺎ ﻧﺼﻮص ﻓﻜﯿﻒ اذا ﻣﺎ ﺗﻢ‬

‫ادﺧﺎل ارﻗﺎم او اﻧﻮاع اﺧﺮى ﻓﮭﻨﺎك دوال ﻟﻠﺘﺤﻮﯾﻞ ﺑﯿﻦ اﻧﻮاع اﻟﺒﯿﺎﻧﺎت‬

‫دوال اﻟﺘﺤﻮﯾﻞ داﺧﻞ اﻟﺴﻰ ﺷﺎرب‬


‫‪Parse‬‬ ‫‪Convert‬‬

‫وﻟﺪﯾﻨﺎ اﻻﻣﺜﻠﮫ اﻟﺘﺎﻟﯿﮫ ‪:‬‬

‫‪© To Sofyany‬‬ ‫‪Page 7‬‬


March 25, 2013 [SOFYANY]

‫ﺗﺴﺘﻄﯿﻊ اﻻن اﺳﺘﺨﺪام ﻧﻔﺲ اﻟﺪاﻟﺘﯿﻦ ﻟﺘﺤﻮﯾﻞ ﺑﺎﻗﻰ اﻧﻮاع اﻟﺒﯿﺎﻧﺎت ﺣﯿﺚ اﻧﻚ ﻣﻀﻄﺮ‬

‫ﻻﺳﺘﺨﺪاﻣﮭﺎ ﻓﻰ ﺟﻤﯿﻊ اﻻﺣﻮال‬

: ‫اﻧﻮاع اﻟﻤﻌﺎﻣﻼت داﺧﻞ اﻟﺴﻰ ﺷﺎرب‬

Arithmetic ‫اﻟﻤﻌﺎﻣﻼت اﻟﺮﯾﺎﺿﯿﮫ‬


operators
Multiplication *
Addition +
Subtraction -
Module %
Dividing /
Increment by 1 ++
Decrement by 1 --

Competitive Operators ‫ﻣﻌﺎﻣﻼت اﻟﻤﻘﺎرﻧﮫ‬

Smaller than <

© To Sofyany Page 8
March 25, 2013 [SOFYANY]

Greater than >


Equal ==
Smaller than or equal <=
Greater than or equal =>
Not equal !=

Logical ‫اﻟﻤﻌﺎﻣﻼت اﻟﻤﻨﻄﻘﯿﮫ‬


operator
And &&
Or ||
not !

‫ﻣﻌﺎﻣﻼت اﻟﻤﺴﺎواه‬
Assignment
Assignment plus +=
Assignment minus -=

‫ان ﺟﻤﯿﻊ اﻟﻤﻌﺎﻣﻼت اﻟﺘﻰ ﺗﻢ ﺳﺮدھﺎ ﻓﻰ اﻟﺠﺪاول اﻟﺴﺎﺑﻘﮫ ﻟﮭﺎ اﻻﺳﺘﺨﺪام اﻻوﺳﻊ‬

‫داﺧﻞ اﻟﺴﻰ ﺷﺎرب وﺗﺪﺧﻞ ﻓﻰ ﻣﻌﻈﻢ اﻟﻌﻤﻠﯿﺎت اﻟﺤﺴﺎﺑﯿﮫ واﻟﻤﻨﻄﻘﯿﮫ‬

© To Sofyany Page 9
‫]‪March 25, 2013 [SOFYANY‬‬

‫اﺳﺘﺨﺪام اﻟﺪوال اﻟﺸﺮطﯿﮫ داﺧﻞ اﻟﻠﻐﮫ ‪: Flow Control – statements‬‬

‫اﻟﺪوال اﻟﺸﺮطﯿﮫ ﻣﻦ اﻟﺪوال اﻟﻮاﺳﻌﺔ اﻻﻧﺘﺸﺎر داﺧﻞ ﻟﻐﺎت اﻟﺒﺮﻣﺠﮫ ﺑﺼﻔﮫ ﻋﺎﻣﮫ‬

‫وذﻟﻚ ﻻھﻤﯿﺘﮭﺎ اﻟﻜﺒﯿﺮه ﻓﻰ اﻟﺘﺤﻜﻢ ﻓﻰ ﺳﯿﺮ اﻟﺒﺮﻧﺎﻣﺞ وﻟﺪﯾﻨﺎ اﻟﻌﺪﯾﺪ ﻣﻨﮭﺎ داﺧﻞ‬

‫اﻟﺴﻰ ﺷﺎرب ‪.‬‬

‫اﻟﻘﺎﻋﺪه اﻟﺸﺮطﯿﮫ ‪IF‬‬

‫اﻟﻘﺎﻋﺪه اﻟﻌﺎﻣﮫ ﻟﮭﺎ ‪:‬‬

‫ﺑﻤﻌﻨﻰ ﻟﻮ ﺗﺤﻘﻖ اﻟﺸﺮط ﺳﻮف ﯾﺘﻢ ﺗﻨﻔﯿﺬ اﻟﺠﻤﻞ اﻟﺒﺮﻣﺠﯿﮫ اﻟﺘﻰ ﺗﺘﺒﻊ اﻟﻘﺎﻋﺪه اﻟﺸﺮطﯿﮫ‬

‫‪© To Sofyany‬‬ ‫‪Page 10‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫اﻟﻘﺎﻋﺪه اﻟﺸﺮطﯿﮫ ‪: IF ELSE‬‬

‫اﻟﻘﺎﻋﺪه اﻟﻌﺎﻣﮫ ﻟﮭﺎ ‪:‬‬

‫ﺑﻤﻌﻨﻰ اﻧﮫ اذا ﺗﺤﻘﻖ اﻟﺸﺮط ﺳﯿﺘﻢ ﺗﻨﻔﯿﺬ اﻟﺠﻤﻞ اﻟﺘﺎﺑﻌﮫ ‪ IF‬واذا ﻟﻢ ﯾﺘﻢ ﺗﺤﻘﯿﻖ اﻟﺸﺮط ﺳﯿﺘﻢ‬

‫ﺗﻨﻔﯿﺬ اﻟﺠﻤﻞ اﻟﺘﺎﺑﻌﮫ ‪ELSE‬‬

‫‪© To Sofyany‬‬ ‫‪Page 11‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫اﻟﻘﺎﻋﺪه اﻟﺸﺮطﯿﮫ ‪: NESTEAD IF‬‬

‫اﻟﻘﺎﻋﺪه اﻟﺸﺮطﯿﮫ اﻟﻤﺘﺪاﺧﻠﮫ واﻟﺼﻮره اﻟﻌﺎﻣﮫ ﻟﮭﺎ ‪:‬‬

‫ﻻﺣﻆ داﺋﻤﺎ ﻓﻰ ﺣﺎﻟﺔ ‪ if‬اﻟﻤﺘﺪاﺧﻠﮫ ﻓﺎن ‪ else‬ﺗﺘﺒﻊ اﻗﺮب ‪ if‬ﻟﮭﺎ‬

‫‪© To Sofyany‬‬ ‫‪Page 12‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫اﻟﻘﺎﻋﺪه اﻟﺸﺮطﯿﮫ ‪: SWITCH CASE‬‬

‫اﻟﻘﺎﻋﺪه اﻟﻌﺎﻣﮫ ﻟﮭﺎ ‪:‬‬

‫ﯾﺘﻢ ﺗﻌﺮﯾﻒ اﻟﻤﺘﻐﯿﺮ ﺛﻢ ﻓﻰ ﻛﻞ ﻣﺮه اﻋﻄﺎؤه ﻗﯿﻤﮫ ﻣﻌﯿﻦ ﻣﻊ ﻛﻞ ﺟﻤﻠﺔ ‪ Case‬وﺗﻨﻔﯿﺬ اﻟﺠﻤﻠﮫ‬

‫اﻟﻤﻄﻠﻮﺑﮫ اذا ﻣﺎ ﺗﺴﺎوت ھﺬه اﻟﻘﯿﻤﮫ ﻣﻊ اى ﺣﺎﻟﮫ ﻣﻦ ﺗﻠﻚ اﻟﺤﺎﻻت وﻻ ﺣﻆ اﻧﮫ ﺑﻌﺪ ﻛﻞ ﺣﺎﻟﮫ‬

‫ﻻﺑﺪ ﻣﻦ وﺿﻊ اﻟﻜﻠﻤﮫ اﻟﻤﺤﺠﻮزه ‪ Break‬ﻟﺘﻔﺼﻞ ﻛﻞ ﺣﺎﻟﮫ ﻋﻦ اﻻﺧﺮى ﺛﻢ ﻓﻰ اﻟﻨﮭﺎﯾﮫ‬

‫وﺿﻊ اﻟﺤﺎﻟﮫ ‪ Default‬واﻟﺘﻰ ﺳﻮف ﺗﻨﻔﺬ ﺟﻤﻠﺘﮭﺎ اذا ﻟﻢ ﺗﺘﺤﻘﻖ اى ﻣﻦ اﻟﺤﺎﻻت اﻟﺴﺎﺑﻘﮫ‬

‫‪© To Sofyany‬‬ ‫‪Page 13‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫اﻟﺠﻤﻞ اﻟﺘﻜﺮارﯾﮫ ‪: LOOPS‬‬

‫ﺗﺴﺘﺨﺪم ھﺬه اﻟﺠﻤﻞ ﻓﻰ ﺗﻜﺮار ﺟﺰء ﻣﻌﯿﻦ ﻣﻦ اﻟﺒﺮﻧﺎﻣﺞ اذا ﻣﺎ ﺗﺤﻘﻘﺖ ﺷﺮوط ﻣﻌﯿﻨﮫ‬

‫ﺣﯿﺚ ﯾﻜﻮن اﻟﺘﻜﺮار ﻣﺤﺪود وﻟﮫ ﺿﻮاﺑﻂ وﻟﯿﺲ اﻟﻰ ﻣﺎﻻﻧﮭﺎﯾﮫ وﻟﮭﺎ اﻧﻮاع داﺧﻞ ﻟﻐﺎت‬

‫اﻟﺒﺮﻣﺠﮫ وﺳﻨﻮﺿﺢ اﻻن ﻛﻞ ﺟﻤﻠﮫ وطﺮﯾﻘﺔ ﻋﻤﻠﮫ‬

‫اﻟﺠﻤﻠﮫ اﻟﺘﻜﺮارﯾﮫ ‪: For Loop‬‬

‫اﻟﻘﺎﻋﺪه اﻟﻌﺎﻣﮫ ﻟﮭﺎ ‪:‬‬

‫‪© To Sofyany‬‬ ‫‪Page 14‬‬


March 25, 2013 [SOFYANY]

© To Sofyany Page 15
‫]‪March 25, 2013 [SOFYANY‬‬

‫اﻟﻘﺎﻋﺪه اﻟﺸﺮطﯿﮫ ‪: While Loop‬‬

‫وھﺬه اﻟﻘﺎﻋﺪه ﺗﺆﻛﺪ ﻋﻠﻰ اﺳﺘﻤﺮار ﺗﻨﻔﯿﺬ ﺟﺰء ﻣﻌﯿﻦ ﻣﻦ اﻟﻜﻮد طﺎﻟﻤﺎ ان اﻟﺸﺮط ﻣﺎزال‬

‫ﻣﺘﺤﻘﻘﺎ واﻟﻘﺎﻋﺪه اﻟﻌﺎﻣﮫ ﻟﮭﺎ ﻛﺎﻟﺘﺎﻟﻰ‬

‫‪© To Sofyany‬‬ ‫‪Page 16‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫اﻟﻘﺎﻋﺪه اﻟﺸﺮطﯿﮫ ‪: DO While‬‬

‫وھﺬه اﻟﻘﺎﻋﺪه ﻟﮭﺎ ﺧﺼﻮﺻﯿﮫ ﺣﯿﺚ اﻧﮫ ﯾﺘﻢ ﺗﻨﻔﯿﺬ اﻟﻜﻮد اول ﻣﺮه ﻗﺒﻞ اﺧﺘﺒﺎر اﻟﺸﺮط‬

‫ﺑﻤﻌﻨﻰ اﻧﮫ اول ﻣﺮه ﺳﯿﺘﻢ اﻟﺘﻨﻔﯿﺬ ﺣﺘﻰ ﻟﻮ ﯾﺘﺤﻘﻖ اﻟﺸﺮط وﺑﻌﺪ ذﻟﻚ ﯾﺨﺘﺒﺮ اﻟﺸﺮط ﻛﻞ‬

‫ﻣﺮه ‪ .‬اﻟﻘﺎﻋﺪه اﻟﻌﺎﻣﮫ ﻟﮭﺎ ‪:‬‬

‫ﻻﺣﻆ ان اﻟﺸﺮط وﺿﻊ ﻓﻰ ﻧﮭﺎﯾﺔ اﻟﺠﻤﻠﮫ ﺣﺘﻰ ﯾﺘﻢ اﻟﺘﻨﻔﯿﺬ ﻓﻰ اﻟﻤﺮه اﻻوﻟﻰ اذا ﻟﻢ ﯾﺘﺤﻘﻖ‬

‫ﻟﻜﻦ ﺑﻌﺪ ذﻟﻚ ﻓﺄﻧﮫ ﻟﻦ ﯾﺘﻢ اﻟﻨﻔﯿﺬ اﻻ اذا ﺗﺤﻘﻖ اﻟﺸﺮط‬

‫‪© To Sofyany‬‬ ‫‪Page 17‬‬


March 25, 2013 [SOFYANY]

© To Sofyany Page 18
‫]‪March 25, 2013 [SOFYANY‬‬

‫ﺟﻤﻠﺔ اﻟﺨﺮوج ﻋﻦ اﻟﺤﻠﻘﺔ اﻟﺘﻜﺮارﯾﮫ ﻋﻨﺪ اﻟﻮﺻﻮل اﻟﻰ ﻧﻘﻄﮫ ﻣﻌﯿﻨﮫ ‪: break‬‬

‫واﻟﺘﻰ ﺗﻘﻮم ﺑﺎﻧﮭﺎء اﻟﺤﻠﻘﮫ ﻋﻨﺪ اﻟﻮﺻﻮل اﻟﻰ ﻧﻘﻄﮫ ﻣﻌﯿﻨﮫ او ﺗﺤﻘﯿﻖ ﺷﺮط ﻣﻌﯿﻦ‬

‫اﻟﻘﺎﻋﺪه اﻟﻌﺎﻣﮫ ﻟﮭﺎ ‪ :‬ﺗﺴﺘﺨﺪم داﺧﻞ اى ﻣﻦ اﻟﺠﻤﻞ اﻟﺘﻜﺮارﯾﮫ اﻟﺴﺎﺑﻘﮫ وداﺋﻤﺎ ﺗﻮﺿﻊ‬

‫ﺑﻌﺪ اﺧﺘﺒﺎر اﻟﺸﺮط ﻛﻞ ﻣﺮه وﻟﺪﯾﻨﺎ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻰ ‪:‬‬

‫‪© To Sofyany‬‬ ‫‪Page 19‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫اﻣﺮ اﻻﺳﺘﻤﺮار داﺧﻞ اﻟﺤﻠﻘﮫ ﻋﻨﺪ ﺗﺤﻘﯿﻖ ﺷﺮط ﻣﻌﯿﻦ ‪: Continue‬‬

‫ھﺬا اﻻﻣﺮ ﯾﺨﺮج ﻣﻦ اﻟﺤﻠﻘﮫ ﺛﻢ ﯾﻌﻮد اﻟﯿﮭﺎ ﻣﺮه اﺧﺮى ﻋﻨﺪ ﺷﺮط ﻣﻌﯿﻦ ﺑﻤﻌﻨﻰ اﻧﮫ‬

‫ﯾﺘﺨﻄﻰ ﺗﻨﻔﯿﺬ ﺟﺰء ﻣﻌﯿﻦ ﻣﻦ اﻟﺤﻠﻘﮫ ﺛﻢ ﯾﻌﻮد ﻟﯿﻨﻔﺬ اﻟﺒﺎﻗﻰ‬

‫وﻟﺪﯾﻨﺎ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﺣﯿﺚ ﺳﯿﺘﺠﺎھﻞ اﻟﺒﺮﻧﺎﻣﺞ طﺒﺎﻋﺔ اﻟﺮﻗﻢ ‪ 5‬ﺛﻢ ﯾﻄﺒﻊ ﺑﺎﻗﻰ اﻻرﻗﺎم‬

‫اﻟﻘﺎﻋﺪه اﻟﻌﺎﻣﮫ ﻟﮭﺎ ‪ :‬اﻧﮭﺎ ﺗﻮﺿﻊ ﻓﻰ ﻧﻔﺲ ﻣﻜﺎن ‪break‬‬

‫‪© To Sofyany‬‬ ‫‪Page 20‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫‪ – 1‬اﻟﻤﺼﻔﻮﻓﺎت او ‪: Array‬‬

‫ﯾﺠﺐ ان ﯾﻜﻮن ﻛﻞ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﮫ ﻟﮭﺎ ﻧﻔﺲ ﻧﻮع اﻟﺒﯿﺎﻧﺎت وﻣﻤﻜﻦ ان ﺗﺨﺘﻠﻒ ﻓﻰ اﻟﻘﯿﻢ‬

‫وﯾﻮﺟﺪ ﻟﮭﺎ ﻧﻮﻋﺎن اﻟﻤﺼﻔﻮﻓﮫ اﺣﺎدﯾﺔ اﻟﺒﻌﺪ او ‪ one –D‬واﻟﻤﺼﻔﻮﻓﮫ اﻟﺜﻨﺎﺋﯿﺔ اﻟﺒﻌﺪ او‬

‫‪Tow – D‬‬

‫اﻟﻘﺎﻋﺪه اﻟﻌﺎﻣﮫ ﻟﺘﻌﺮﯾﻒ اﻟﻤﺼﻔﻮﻓﮫ اﻻﺣﺪاﯾﮫ ‪:‬‬

‫‪© To Sofyany‬‬ ‫‪Page 21‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫وﻣﻦ اﻟﻤﻤﻜﻦ ان ﺗﻌﻄﯿﮭﺎ ﻗﯿﻤﺎ اﺑﺘﺪاﺋﯿﮫ ﻋﻨﺪ اﻟﺘﻌﺮﯾﻒ ﻟﻜﻦ ﯾﺠﺐ اﻻﺗﺰﯾﺪ اﻟﻘﯿﻢ ﻋﻦ ﺣﺠﻢ‬

‫اﻟﻤﺼﻔﻮﻓﮫ‬

‫وﻣﻦ اﻟﻤﻤﻜﻦ اﯾﻀﺎ ﺗﺤﺪﯾﺪ ﺣﺠﻢ اﻟﻤﺼﻔﻮﻓﮫ ﻋﻦ طﺮﯾﻖ اﻟﻘﯿﻢ اﻻﺑﺘﺪاﺋﯿﮫ ﻟﻜﻦ ﻟﯿﺴﺖ ﻣﺴﺘﺤﺒﮫ‬

‫وﻣﻦ اﻟﻤﻤﻜﻦ اﻋﻄﺎء ﻗﯿﻤﺎ اﺑﺘﺪاﺋﯿﮫ ﻟﻠﻤﺼﻔﻮﻓﮫ ﻣﻦ اﻟﻤﺴﺘﺨﺪم وﻗﺖ ﺗﻨﻔﯿﺬ اﻟﺒﺮﻧﺎﻣﺞ‬

‫طﺮﯾﻘﺔ اﻻﺗﺼﺎل ﻣﻊ اﻟﻤﺼﻔﻮﻓﺎت اﻻﺣﺎدﯾﺔ ‪:‬‬

‫‪© To Sofyany‬‬ ‫‪Page 22‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫وﻣﻦ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﺳﻮف ﺑﺘﻜﻤﻠﺔ اﻟﺒﺮﻧﺎﻣﺞ ﻟﺤﺴﺎب اﻛﺒﺮ ﻗﯿﻤﮫ واﻗﻞ ﻗﯿﻤﮫ ﺗﻢ ادﺧﺎﻟﮭﺎ ﻣﻦ‬

‫اﻟﻤﺴﺘﺨﺪم ﻛﻤﺎ ﯾﻠﻰ ‪:‬‬

‫‪© To Sofyany‬‬ ‫‪Page 23‬‬


March 25, 2013 [SOFYANY]

© To Sofyany Page 24
‫]‪March 25, 2013 [SOFYANY‬‬

‫‪: For Each …..Loop‬‬

‫ھﻨﺎك ﻧﻮع اﺧﺮ ﻣﮭﻢ ﺟﺪا ﻣﻦ اﻟﺤﻠﻘﺎت اﻟﺘﻜﺮارﯾﮫ وﻏﺎﻟﺒﺎ ﻣﺎ ﯾﺴﺘﺨﺪم ﻣﻊ اﻟﻤﺼﻔﻮﻓﺎت‬

‫ﺣﯿﺚ ﯾﺴﺘﺨﺪم ﻓﻰ ﻗﺮاءة ﺑﯿﺎﻧﺎت اﻟﻤﺼﻔﻮﻓﮫ وﻻ ﯾﻤﻜﻦ اﺳﺘﺨﺪاﻣﮫ ﻓﻰ اﻟﻜﺘﺎﺑﮫ اﻟﯿﮭﺎ او‬

‫ﺗﻐﯿﺮ ﻗﯿﻤﮭﺎ‬

‫اﻟﻘﺎﻋﺪه اﻟﻌﺎﻣﮫ ﻟﮭﺎ ‪:‬‬

‫‪© To Sofyany‬‬ ‫‪Page 25‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫‪: Tow – D Array‬‬

‫اﻟﻤﺼﻔﻮﻓﺎت ﺛﻨﺎﺋﯿﺔ اﻻﺑﻌﺎد ھﻰ ﻋﺒﺎره ﻋﻦ ﻧﻮع ﻣﻦ اﻟﻤﺼﻔﻮﻓﺎت ﯾﺸﺒﮫ اﻟﺠﺪاول‬

‫ﺣﯿﺚ ﯾﺘﻜﻮن ﻣﻦ ﺻﻔﻮف واﻋﻤﺪه وﯾﻜﻮن اﻟﺨﻼﯾﺎ وھﺬه اﻟﺨﻼﯾﺎ ھﻰ ﻋﻨﺎﺻﺮ‬

‫اﻟﻤﺼﻔﻮﻓﮫ‬

‫اﻟﺘﻮﺻﯿﻒ اﻟﻌﺎم ﻟﮭﺎ ‪:‬‬

‫‪For example:‬‬

‫‪© To Sofyany‬‬ ‫‪Page 26‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫اﻋﻄﺎء ﺑﯿﺎﻧﺎت ﻟﻠﻤﺼﻔﻮﻓﮫ ﻣﻦ اﻟﻤﺴﺘﺨﺪم اﺛﻨﺎء ﺗﻨﻔﯿﺬ اﻟﺒﺮﻧﺎﻣﺞ ﻓﻰ ھﺬا اﻟﻤﺜﺎل ‪:‬‬

‫‪© To Sofyany‬‬ ‫‪Page 27‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫وﻟﻘﺮاءة ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﮫ ‪:‬‬

‫وﻟﻠﺘﻌﺪﯾﻞ ﻋﻠﻰ ﺑﯿﺎﻧﺎت اﻟﻤﺼﻔﻮﻓﮫ اﻟﺜﻨﺎﺋﯿﮫ ‪:‬‬

‫‪© To Sofyany‬‬ ‫‪Page 28‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫‪: Array Class Properties And Methods‬‬

‫اﻟﺨﺼﺎﺋﺺ واﻟﺪوال اﻟﺘﻰ ﯾﺘﻀﻤﻨﮭﺎ اﻟﻔﺼﯿﻞ ‪Array‬‬

‫‪Array Length – 1‬‬

‫وﻣﻨﮫ ﺗﻌﺮف طﻮل اﻟﻤﺼﻔﻮﻓﮫ ةﺗﻔﯿﺪك ﻓﻰ ﺣﺎﻟﺔ اذا ﻛﺎن ﻋﺪد اﻟﻌﻨﺎﺻﺮ ﻣﺠﮭﻮﻻ ﻟﻚ‬

‫ﺑﻤﻌﻨﻰ اﻧﮫ ﻋﻨﺪ ﺗﻌﺮﯾﻒ اﻟﻤﺼﻔﻮﻓﮫ ﻓﻠﻦ ﯾﺘﻢ ﺗﺤﺪﯾﺪ طﻮل ﻣﻌﯿﻦ ﺑﻞ ﺳﯿﻘﻮم اﻟﻤﺴﺘﺨﺪم‬

‫ﺑﺄدﺧﺎﻟﮫ وﻗﺖ اﻟﺘﻨﻔﯿﺬ‬

‫‪© To Sofyany‬‬ ‫‪Page 29‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫‪ – 2‬اﻟﺨﺎﺻﯿﮫ ‪: Rank‬‬

‫واﻟﺘﻰ ﻣﻨﮭﺎ ﺗﻌﺮف ﻧﻮع اﻟﻤﺼﻔﻮﻓﮫ اذا ﻛﺎﻧﺖ ﺛﻨﺎﺋﯿﺔ اﻻﺑﻌﺎد ام اﺣﺎدﯾﺔ اﻟﺒﻌﺪ‬

‫واﺳﺘﺪﻋﺎﺋﮭﺎ ﯾﻜﻮن ﻛﺎﻟﺘﺎﻟﻰ ‪:‬‬

‫‪© To Sofyany‬‬ ‫‪Page 30‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫‪ – 3‬اﻟﺨﺎﺻﯿﮫ اﻟﺘﻰ ﺗﺴﻤﺢ ﺑﺘﻐﯿﺮ ﺣﺠﻢ اﻟﻤﺼﻔﻮﻓﮫ ‪: Resize‬‬

‫ﺗﻐﯿﯿﺮ اﻟﺤﺠﻢ ﻣﻊ اﻻﺣﺘﻔﺎظ ﺑﺎﻟﻘﯿﻢ اﻟﻘﺪﯾﻤﮫ ﻟﮭﺎ واﻟﻘﺎﻋﺪه اﻟﻌﺎﻣﮫ ﻻﺳﺘﺪﻋﺎﺋﮭﺎ‬

‫‪ – 4‬ﺧﺎﺻﯿﺔ اﻟﺒﺤﺚ داﺧﻞ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﮫ ‪: Binary Search‬‬

‫وﺗﻘﻮم ھﺬه اﻟﺨﺎﺻﯿﮫ ﺑﺎﻟﺤﺒﺚ داﺧﻞ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﮫ ﻋﻦ ﻋﻨﺼﺮ ﯾﺤﺘﻮى ﻋﻠﻰ ﻗﯿﻤﮫ ﻣﻌﯿﻨﮫ‬

‫ﻻﺳﺘﺨﺪاﻣﮫ وﻟﻜﻦ ﺷﺮط ان ﺗﻜﻮن ﻋﻨﺎﺻﺮ ھﺬه اﻟﻤﺼﻔﻮﻓﮫ ﻣﺮﺗﯿﮫ ﺗﺮﺗﯿﺒﺎ ﺗﻨﺎزﻟﯿﺎ او ﺗﺼﺎﻋﺪﯾﺎ‬

‫اﻟﻘﺎﻋﺪه اﻟﻌﺎﻣﮫ ﻻﺳﺘﺨﺪام اﻟﺨﺎﺻﯿﮫ ‪:‬‬

‫‪© To Sofyany‬‬ ‫‪Page 31‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫‪ – 5‬اﻟﺨﺎﺻﯿﮫ اﻟﺘﻰ ﺗﺴﻤﺢ ﺑﺘﺮﺗﯿﺐ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﮫ ‪: Sort‬‬

‫اﻟﻘﺎﻋﺪه اﻟﻌﺎﻣﮫ ﻻﺳﺘﺨﺪاﻣﮭﺎ ‪:‬‬

‫‪ – 6‬اﻟﺪاﻟﮫ ‪ Getting‬ﻻﺣﻀﺎر ﻗﯿﻤﺔ اﻟﻌﻨﺎﺻﺮ واﻟﺪاﻟﮫ ‪ Setting‬ﻟﻮﺿﻊ ﻗﯿﻢ ﻟﻌﻨﺎﺻﺮ‬

‫اﻟﻤﺼﻔﻮﻓﮫ ‪:‬‬

‫اﻟﻘﺎﻋﺪه اﻟﻌﺎﻣﮫ ﻻﺳﺘﺨﺪاﻣﮭﻢ ‪:‬‬

‫‪© To Sofyany‬‬ ‫‪Page 32‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫‪ – 7‬دوال ﻧﺴﺦ اﻟﻤﺼﻔﻮﻓﺎت اﻟﻰ اﺧﺮى وھﻤﺎ ﻧﻮﻋﺎن‬

‫‪ Copy – 1‬وﺗﻘﻮم ﺑﻨﺴﺦ ﺟﺰء ﻣﻦ ﻣﺼﻔﻮﻓﮫ اﻟﻰ اﺧﺮى‬


‫‪ Copy To – 2‬ﺗﻘﻮم ﺑﻨﺴﺦ ﻛﺎﻣﻞ ﻣﺼﻔﻮﻓﮫ اﻟﻰ اﺧﺮى‬

‫ﻗﺎﻋﺪة اﺳﺘﺨﺪاﻣﮭﻢ ‪:‬‬

‫‪ – 8‬اﻟﺪاﻟﮫ ‪: Reverse‬‬

‫واﻟﺘﻰ ﺗﻘﻮم ﺑﻌﻜﺲ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﮫ اى ﻋﻜﺲ وﺿﻌﯿﺔ اﻟﻌﻨﺎﺻﺮ‬

‫طﺮﯾﻘﺔ اﺳﺘﺨﺪاﻣﮭﺎ ‪:‬‬

‫‪© To Sofyany‬‬ ‫‪Page 33‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫اﻟﺪوال واﺳﺘﺨﺪاﻣﮭﺎ داﺧﻞ اﻟﺴﻰ ﺷﺎرب ‪:‬‬

‫اﻟﻘﺎﻋﺪه اﻟﻌﺎﻣﮫ ﻻﺳﺘﺨﺪام اﻟﺪوال داﺧﻞ ﻟﻐﺔ ‪: C#‬‬

‫‪© To Sofyany‬‬ ‫‪Page 34‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫اﻧﻮاع اﻟﻤﻌﺎﻣﻼت او ‪: Access Modifiers‬‬

‫‪ -‬ﺑﻌﺾ اﻻﻣﺜﻠﮫ ﻋﻠﻰ ﺑﻨﺎء اﻟﺪوال وﺗﻌﺮﯾﻔﮭﺎ داﺧﻞ اﻟﺒﺮﻧﺎﻣﺞ ‪:‬‬

‫‪© To Sofyany‬‬ ‫‪Page 35‬‬


March 25, 2013 [SOFYANY]

: ‫ﺑﻌﺾ اﻻﻣﺜﻠﮫ‬

© To Sofyany Page 36
‫]‪March 25, 2013 [SOFYANY‬‬

‫وﻣﻦ اﻟﻤﺜﺎﻟﯿﻦ اﻟﺴﺎﺑﻘﯿﻦ ﻧﺮﯾﺪ ان ﻧﺴﻠﻂ اﻟﻀﻮء ﻋﻠﻰ ﺑﻌﺾ اﻻﺳﺎﺳﯿﺎت اﻟﮭﺎﻣﮫ ﺟﺪا ﻓﻰ‬

‫اﺳﺘﺨﺪام اﻟﺪوال ‪:‬‬

‫‪ – 1‬ان اﺳﺘﺪﻋﺎء اﻟﺪوال ﯾﻜﻮن ﻋﻠﻰ ﺣﺴﺐ اﻟﻤﻌﺮف ﻟﮭﺎ او ‪Access Modifier‬‬

‫وﻗﺪ ﻗﻤﻨﺎ ﺑﺸﺮح اﻧﻮاﻋﮫ ‪.‬‬

‫‪ – 2‬ان ﻛﺘﺎﺑﺔ اﻟﺪاﻟﮫ داﺧﻞ اﻟﻔﺼﯿﻞ او ‪ Class‬ﻗﺒﻞ اﻟﺪاﻟﮫ اﻟﺮﺋﯿﺴﯿﮫ ‪ Main‬او ﺑﻌﺪھﺎ وﯾﻜﻮن‬

‫اﺳﺘﺪﻋﺎﺋﮭﺎ ﻣﻦ داﺧﻞ اﻟﺪاﻟﮫ ‪ Main‬او ﻣﻦ اى داﻟﮫ اﺧﺮى ‪.‬‬

‫‪ – 3‬ان اﺳﺘﺪﻋﺎء اى داﻟﮫ ﻻ ﯾﻜﻮن اﻻ ﻋﻦ طﺮﯾﻖ اﻧﺸﺎء ﻛﺎﺋﻦ ﺟﺪﯾﺪ ﻣﻦ اﻟﻔﺼﯿﻞ او ‪Class‬‬

‫واﻟﺬى ﺗﺘﺒﻌﮫ اﻟﺪاﻟﮫ او اﻟﺬى ﺗﻢ اﻧﺸﺎﺋﮭﺎ ﺑﺪاﺧﻞ ﻛﻮاﺣﺪه ﻣﻦ ﻋﻨﺎﺻﺮه اﻻﺳﺎﺳﯿﮫ وﻻ ﯾﻜﻮن‬

‫ﻏﯿﺮ ذﻟﻚ اﻻ ﻓﻰ ﺣﺎﻟﮫ واﺣﺪه وھﻰ ان ﺗﻌﻄﻰ اﻟﻤﻌﺮف ‪ Static‬وھﻮ اﻟﻮﺣﯿﺪ اﻟﺬى ﯾﺴﻤﺢ‬

‫ﺑﺄﺳﺘﺪﻋﺎء اﻟﺪاﻟﮫ ﺑﺸﻜﻞ ﻣﻨﻔﺮد دون اﻟﺤﺎﺟﮫ اﻟﻰ ﻛﺎﺋﻦ اﻟﻤﺨﻠﻖ ﻣﻦ اﻟﻔﺼﯿﻞ وﯾﻔﺴﺮ ھﺬا وﺿﻊ‬

‫ھﺬا اﻟﻤﻌﺮف داﺋﻤﺎ ﻗﺒﻞ اﻟﺪاﻟﮫ اﻟﺮﺋﯿﺴﯿﮫ ‪ Main‬داﺧﻞ اى ﺑﺮﻧﺎﻣﺞ ﻓﻰ اﻟﺴﻰ ﺷﺎرب ﺣﺘﻰ‬

‫ﯾﺘﺴﻨﻰ اﺳﺘﺪﻋﺎﺋﮭﺎ ﻣﻦ داﺧﻞ اﻟﺒﺮﻧﺎﻣﺞ ﻣﺒﺎﺷﺮﺗﺎ ﻻن اﻟﺘﻨﻔﯿﺬ ﯾﺒﺪاء ﻣﻦ ﻋﻨﺪھﺎ‬

‫‪ – 4‬ان اﻟﺪاﻟﮫ او ﻗﺪ ﯾﻜﻮن ﻟﮭﺎ اﻛﺜﺮ ﻣﻦ ﺑﺎراﻣﺘﺮ او ﻻ ﯾﻜﻮن ﻟﺪﯾﮭﺎ اى ﺑﺎراﻣﺘﺮات وﻗﺪ ﺗﻌﻮد‬

‫ﺑﻘﯿﻤﮫ واﺣﺪه او اﻛﺜﺮ ﻣﻦ ﻗﯿﻤﮫ او ﻻﺗﻌﻮد ﺑﻘﯿﻢ ﻋﻠﻰ اﻻطﻼق ﻟﻜﻦ ﯾﺠﺐ ان ﺗﻼﺣﻆ اﻟﻔﺮق‬

‫ﺑﯿﻦ اﻟﺤﺎﻟﺘﯿﻦ ﻓﻰ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻰ ‪:‬‬

‫‪© To Sofyany‬‬ ‫‪Page 37‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫ان اﻟﻜﻠﻤﺘﺎن ‪ void‬و ‪ return‬ﻻﯾﺠﺘﻤﻌﺎن ﻓﻰ ﺗﺮﻛﯿﺐ داﻟﮫ واﺣﺪه‬

‫‪ – 5‬ﻣﻦ اﻟﻤﻤﻜﻦ اﻋﻄﺎء اﻟﻘﯿﻢ اﻟﺘﻰ ﺗﻌﻮد ﺑﮭﺎ اﻟﺪوال ﻟﻤﺘﻐﯿﺮات ﻟﻜﻦ ﻣﻦ ﻧﻔﺲ ﻧﻮع اﻟﺒﯿﺎﻧﺎت‬

‫اﻟﺘﻰ ﺗﻌﻮد ﺑﮫ اﻟﺪاﻟﮫ‬

‫‪ – 6‬ﻻﺑﺪ ﻣﻦ اﻋﻄﺎء ﻛﺎﻓﺔ اﻟﻘﯿﻢ ﻟﻠﺒﺎراﻣﺘﺮات اﻟﺘﻰ ﺗﺤﻤﻠﮭﺎ اﻟﺪاﻟﮫ داﺧﻞ اﻟﻜﻮد وﻻﺑﺪ ان ﺗﻜﻮن‬

‫اﻟﻘﯿﻢ ﻣﻦ ﻧﻔﺲ ﻧﻮع ﺗﻠﻚ اﻟﺒﺎراﻣﺘﺮات‬

‫ﻓﻰ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻰ ﻧﻘﻮم ﺑﻌﻤﻞ ﺑﺮﻧﺎﻣﺞ ﯾﻘﻮم ﺑﺒﻌﺾ اﻟﻌﻤﻠﯿﺎت اﻟﺮﯾﺎﺿﯿﮫ ﻟﻜﻦ‬ ‫‪-‬‬

‫ﺑﺎﺳﺘﺨﺪام اﻟﺪوال ‪:‬‬

‫‪© To Sofyany‬‬ ‫‪Page 38‬‬


March 25, 2013 [SOFYANY]

© To Sofyany Page 39
‫]‪March 25, 2013 [SOFYANY‬‬

‫طﺮق اﻋﻄﺎء اﻟﺒﺎراﻣﺘﺮات اﻟﻰ اﻟﺪوال ‪: Passing Parameters to method‬‬

‫‪by value – 1‬‬

‫وھﻰ ارﺳﺎل اﻟﻘﯿﻤﮫ اﻟﻰ اﻟﺒﺎراﻣﺘﺮ ﻣﺒﺎﺷﺮﺗﺎ وﺗﻜﻮن ﻋﺒﺎره ﻋﻦ ﻧﺴﺦ ‪ Data‬اﻻﺳﺎﺳﯿﮫ‬

‫وﻧﻘﻠﮭﺎ اﻟﻰ ﻣﻜﺎن ﻓﻰ اﻟﺬاﻛﺮه وﺑﺎﻟﺘﺎﻟﻰ ھﺬا اﺳﺘﻐﻼ ﺳﯿﻰء ﻟﻠﺬاﻛﺮه ﻻﻧﮫ ﯾﺎﺧﺬ ﻣﺴﺎﺣﮫ‬

‫اﻛﺒﺮ ﺑﺪون داﻋﻰ وﻣﺜﺎل ﻋﻠﯿﮫ ‪:‬‬

‫‪by reference – 2‬‬

‫اﻟﻄﺮﯾﻘﮫ اﻟﺜﺎﻧﯿﮫ وھﻰ اﻋﻄﺎء اﻟﺒﺎراﻣﺘﺮات ﻋﻦ طﺮﯾﻖ اﻻﺷﺎره اﻟﻰ ﻣﻜﺎن ﻣﻌﯿﻦ ﻓﻰ اﻟﺬاﻛﺮه‬

‫واﻟﯿﻚ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻰ ‪:‬‬

‫‪© To Sofyany‬‬ ‫‪Page 40‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫ان اﺳﺘﺨﺪام ھﺬه اﻟﻄﺮﯾﻘﮫ ھﻮ اﻻﺳﺘﺨﺪام اﻻﻣﺜﻞ ﻟﻠﺬاﻛﺮه ﻻﻧﮭﺎ ﻛﻼ ﻣﻦ اﻟﺒﺎراﻣﺘﺮات‬

‫واﻟﻤﺘﻐﯿﺮات اﻟﺘﻰ ﺗﻤﺜﻠﮭﺎ ﺗﺸﯿﺮ اﻟﻰ ﻣﻜﺎن واﺣﺪ ﻓﻰ اﻟﺬاﻛﺮه‬

‫ﻻﺣﻆ ان اﺳﺘﺨﺪام‬
‫‪X‬‬ ‫‪A‬‬ ‫‪10‬‬
‫‪REF‬‬
‫ﻻﺑﺪ ﻣﻦ اﻋﻄﺎء ﻗﯿﻢ ﻟﻠﺒﺎراﻣﺘﺮات ﻗﺒﻞ‬
‫اﺳﺘﺪﻋﺎء اﻟﺪاﻟﮫ اى اﻧﻚ ﺗﺪﺧﻞ اﻟﺒﯿﺎﻧﺎت ﺛﻢ‬
‫ﺗﻘﻮم ﺑﺎﺳﺘﺪﻋﺎء اﻟﺪاﻟﮫ ﻟﺘﺠﻤﻌﮭﻢ‬
‫‪Y‬‬ ‫‪B‬‬ ‫‪20‬‬

‫‪© To Sofyany‬‬ ‫‪Page 41‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫‪by out – 3‬‬

‫ھﻰ ﻧﻔﺲ اﺳﺘﺨﺪام ‪ ref‬ﻟﻜﻦ اﻻﺧﺘﻼف ﻓﻰ اﻧﻚ ﺗﺴﺘﺪﻋﻰ اﻟﺪاﻟﮫ اوﻻ ﺛﻢ ﺗﻌﻄﯿﮭﺎ ﻗﯿﻤﺎ‬

‫اﺑﺘﺪاﺋﯿﮫ وﻟﻨﻰ ﻓﻰ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻰ ‪:‬‬

‫‪© To Sofyany‬‬ ‫‪Page 42‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫‪: C# Variable Scopes‬‬

‫اﻟﻨﻄﺎق اﻟﺬى ﺗﺴﺘﺨﺪم ﻓﯿﮫ اﻟﻤﺘﻐﯿﺮات داﺧﻞ اﻟﻠﻐﮫ ‪:‬‬

‫وﻟﮫ ﺛﻼﺛﺔ اﻧﻮاع ‪:‬‬

‫‪class level – 1‬‬

‫ﻣﺘﻐﯿﺮات ﯾﺘﻢ ﺗﻌﺮﯾﻔﮭﺎ داﺧﻞ ‪ class‬وﯾﺘﻢ اﺳﺘﺨﺪاﻣﮭﺎ ﻣﻊ اى ‪ method‬اﺧﺮى‬

‫‪method level – 2‬‬

‫ﻣﺘﻐﯿﺮات ﺧﺎﺻﮫ ب ‪ method‬وﻻﺗﺴﺘﻄﯿﻊ اﺳﺘﺨﺪاﻣﮭﺎ ﻣﻊ اى ‪ method‬اﺧﺮى‬

‫‪nested level – 3‬‬

‫ﻣﺘﻐﯿﺮات ﺗﻌﺮف داﺧﻞ اى ‪ block‬ﻣﻦ ‪ data‬وﻻ ﺗﺴﺘﺨﺪم ﺧﺎرج ھﺬا ‪ block‬ﻣﺜﻞ اﻟﺤﻠﻘﺎت‬

‫ﻣﺜﻼ او اﻟﺠﻤﻞ اﻟﺸﺮطﯿﮫ‬

‫‪© To Sofyany‬‬ ‫‪Page 43‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫‪: Passing Arrays as Parameters‬‬

‫‪Passing by value – 1‬‬

‫ﺑﺮﻧﺎﻣﺞ ﻋﻤﻞ ‪ array‬وﯾﻀﻊ ﻗﯿﻤﮫ اﺑﺘﺪاﺋﯿﮫ وﯾﻌﻄﯿﮭﺎ اﻟﻰ ‪ method‬ﻟﻜﻰ ﺗﻄﺒﻌﮭﺎ‬

‫ﻋﻠﻰ اﻟﺸﺎﺷﮫ وھﻨﺎ ﺳﻮف ﻧﻌﻄﻰ اﻟﻤﺼﻔﻮﻓﮫ ﻟﻠﺪاﻟﮫ ﻛﺒﺎراﻣﺘﺮ‬

‫‪© To Sofyany‬‬ ‫‪Page 44‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫‪: Method overloading‬‬

‫ﻣﻦ اﻟﻤﻤﻜﻦ ﺑﻨﺎء اﻛﺜﺮ ﻣﻦ داﻟﮫ ﺑﻨﻔﺲ اﻻﺳﻢ ﻟﻌﻤﻞ ﻋﺪة وظﺎﺋﻒ ﺗﺤﺖ ﻣﺴﻤﻰ واﺣﺪ‬

‫ﺑﺸﺮط ان ﺗﺨﺘﻠﻒ ھﺬه اﻟﺪوال ﻓﻰ ﻋﺪد اﻟﺒﺎراﻣﺘﺮات او ان اﻟﺒﺎراﻣﺘﺮات ﺗﺨﺘﻠﻒ ﻧﻮع‬

‫اﻟﺒﯿﺎﻧﺎت اﻟﻤﻌﺮﻓﮫ ﺑﮭﺎ وﺗﺴﻤﻰ ھﺬه اﻟﻌﻤﻠﯿﮫ ‪ Overloading‬او اﻟﺘﺤﻤﯿﻞ اﻟﺬاﺋﺪ‬

‫‪© To Sofyany‬‬ ‫‪Page 45‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫‪ -‬رؤﯾﮫ ﻓﻠﺴﻔﯿﮫ ﺣﻮل اﻟﺒﺮﻣﺠﮫ اﻟﻜﺎﺋﻨﯿﺔ اﻟﺘﻮﺟﮫ ‪:‬‬

‫ان ﻣﻔﮭﻮم اﻟﺒﺮﻣﺠﮫ اﻟﻜﺎﺋﻨﯿﺔ اﻟﺘﻮﺟﮫ ﻟﮭﻮ ﺑﺎﻻﺳﺎس ﯾﻌﺘﻤﺪ ﻋﻠﻰ اﻟﻨﻈﺮه اﻟﻤﺠﺮده ﻟﻠﺤﯿﺎه اﻟﺘﻰ‬

‫ﻧﻌﯿﺸﮭﺎ ذﻟﻚ ﺑﺄن ﻛﻞ ﺷﻰء ﻓﻰ ھﺬه اﻟﺤﯿﺎه ﻋﺒﺎره ﻋﻦ ﻣﺠﻤﻮﻋﮫ ﻣﻦ اﻟﻜﺎﺋﻨﺎت وﻟﮭﺎ ﺻﻔﺎﺗﮭﺎ‬

‫اﻟﺨﺎﺻﮫ وﻣﻤﯿﺰاﺗﮭﺎ واﻟﺸﻜﻞ اﻟﺘﻰ ﺗﺘﺼﺮف ﺑﮫ وﺗﺠﺪ ان اﻟﻄﺒﯿﻌﮫ ﻗﺪ رﺑﻄﺖ ﺑﯿﻦ ﻛﻞ‬

‫اﻻﺷﻜﺎل اﻟﻤﺨﺘﻠﻔﮫ ﻟﻠﺤﯿﺎه ﻛﻞ ﻣﻨﮭﻢ ﻟﮫ اﺳﻠﻮﺑﮫ اﻟﺨﺎص ﺑﺎﻟﺘﻌﺎﻣﻞ واﺳﻠﻮﺑﮫ اﻟﺨﺎص ﻓﻰ‬

‫اﻟﻄﺮﯾﻘﮫ اﻟﺘﻰ ﯾﺘﻌﺎﻣﻞ ﺑﮭﺎ ﻣﻊ اﻻﺧﺮ وذﻟﻚ اﻟﺮﺑﻂ ادى ﻓﻰ اﻟﻨﮭﺎﯾﮫ اﻟﻰ ﺗﻜﻮﯾﻦ ﻓﻀﺎء ﯾﺤﺘﻮى‬

‫ھﺬه اﻟﻜﺎﺋﻨﺎت ﺟﻤﯿﻌﺎ ﻟﻜﻰ ﺗﻮﺟﮫ اﻟﻰ ﻓﻜﺮة اﻟﻌﻮاﻟﻢ اﻟﻤﺘﻮازﯾﮫ ﻣﺒﺮﻣﺠﮫ طﺒﯿﻌﯿﺎ ﻻن ﺗﺘﻌﺎﻣﻞ ﻣﻊ‬

‫ﺑﻌﻀﮭﺎ ﻓﻰ ﺗﻌﺎون ﺑﺮﻣﺠﻰ ﻛﺎﻣﻞ وﺑﺎﻟﺘﺎﻟﻰ ارادو ﺗﻄﺒﯿﻖ ﺗﻠﻚ اﻟﻔﻜﺮه واﻟﺴﯿﺮ ﻋﻠﻰ ﺧﻄﺎھﺎ ﻓﻰ‬

‫ﻣﻔﮭﻮم اﻟﺒﺮﻣﺠﮫ اﻟﻜﺎﺋﻨﯿﺔ اﻟﺘﻮﺟﮫ ﻓﮭﻮ ﯾﻌﻄﻰ ﻓﻜﺮه ﻣﺠﺮده ﻟﻠﻨﻈﺎم ﻛﻜﻞ ﺛﻢ ﯾﻘﺴﻤﮫ اﻟﻰ‬

‫ﻣﺠﻤﻮﻋﮫ ﻣﻦ اﻟﻜﺎﺋﻨﺎت اﻟﺘﻰ ﻟﮭﺎ ﺧﺼﺎﺋﺺ ﺗﻤﯿﺰھﺎ ﻋﻦ ﻏﯿﺮھﺎ وﯾﻮﺿﻊ ﻣﻊ ﻛﻞ ﻛﺎﺋﻦ‬

‫اﻻﺳﺎﻟﯿﺐ اﻟﺘﻰ ﯾﺘﻌﺎﻣﻞ ﺑﮭﺎ ﻣﻊ ﻏﯿﺮه ‪.‬‬

‫‪© To Sofyany‬‬ ‫‪Page 46‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫ﻣﺰاﯾﺎ اﻟﺒﺮﻣﺠﮫ ﻛﺎﺋﻨﯿﺔ اﻟﺘﻮﺟﮫ ‪:‬‬

‫‪ – 1‬ﺳﮭﻮﻟﺔ ﻣﺘﺎﺑﻌﺔ وﺻﯿﺎﻧﺔ اﻟﺴﻮﻓﺖ وﯾﺮ‬

‫‪ – 2‬ﺳﺮﻋﺔ ﺗﻄﻮﯾﺮ اﻟﺒﺮﻣﺠﯿﺎت وﻣﺘﺎﻧﺘﮭﺎ‬

‫‪Encapsulation – 1‬‬

‫ان ﻣﺠﻤﻮﻋﮫ ﻣﻦ اﻟﻌﻨﺎﺻﺮ ﻟﮭﺎ ﻧﻔﺲ اﻟﺨﺼﺎﺋﺺ وﻟﮭﺎ ﻧﻔﺲ اﻟﺴﻤﺎت ﻣﻦ اﻟﻤﻤﻜﻦ ان ﺗﺠﺘﻤﻊ‬

‫داﺧﻞ ﻓﺼﯿﻞ واﺣﺪ وﯾﺴﻤﻰ ‪ Class‬وھﺬا اﻟﻔﺼﯿﻞ ھﻮ اﻟﺬى ﯾﻤﺜﻠﮭﺎ ﺑﻮﺟﮫ ﻋﺎم ﻟﻜﻦ ﻻ ﯾﺘﻌﺎﻣﻞ‬

‫ﻣﻌﮭﺎ ﻋﻦ طﺮﯾﻘﮫ ﺑﻞ ﻋﻦ طﺮﯾﻖ ﻛﺎﺋﻦ ﻣﺨﻠﻖ ﻣﻨﮫ وھﻮ ‪Object‬‬

‫‪ -‬اذا ﻣﺎ اردﻧﺎ اﯾﺠﺎد اﻣﺜﻠﮫ ﻣﻦ اﻟﺤﯿﺎه ﻟﺪﯾﻨﺎ ‪ Class‬ﯾﻤﺜﻞ اﻟﺒﺸﺮﯾﮫ وھﺬا اﻟﻔﺼﯿﻞ ﻟﮫ‬

‫ﺟﻤﯿﻊ ﺻﻔﺎت اﻟﺒﺸﺮﯾﮫ واﺳﻠﻮب ﺗﻌﺎﻣﻠﮭﺎ ﻣﻊ ﻏﯿﺮھﺎ واﻟﺬى ھﻮ ﻓﺼﯿﻞ رﺋﯿﺴﻰ ﻣﻦ‬

‫ﻣﻨﻈﻮﻣﮫ اﺷﻤﻞ وﺳﻮف ﯾﻄﻠﻖ ﻋﻠﯿﮭﺎ ‪ namespace‬وھﺬه اﻟﻤﻨﻈﻮﻣﮫ ﻣﻤﺜﻠﮫ ﻓﻰ اﻟﻜﻮن‬

‫اذا اردﻧﺎ اﻧﺸﺎء ﻛﺎﺋﻦ ﻣﻦ ﻓﺼﯿﻞ اﻟﺒﺸﺮﯾﮫ ﻟﯿﻜﻦ اﻻﻧﺴﺎن اﻟﺬى ﯾﺤﯿﺎ ﻋﻠﻰ اﻻرض واى‬

‫اﻧﺴﺎن اذا ﯾﺤﻤﻞ ﺟﻤﯿﻊ ﺻﻔﺎت وﺳﻠﻮﻛﯿﺎت ھﺬا اﻟﻔﺼﯿﻞ‬

‫وﻣﻦ اﻟﻤﻤﻜﻦ ان ﻧﻨﺸﻰء ﻓﺼﯿﻞ اﺧﺮ ﻣﻦ ﻓﻀﺎء اﻟﻜﻮن وﻟﯿﻜﻦ ﻓﺼﯿﻞ ﻟﻠﺤﯿﻮان‬

‫وﻣﻦ اﻟﻤﻤﻜﻦ ان ﯾﻜﻮن ھﻨﺎك ﻓﺼﯿﻞ ﻟﻠﻨﺒﺎﺗﺎت واﺧﺮ ﻟﻠﺠﻤﺎد وھﻜﺬا‬

‫‪© To Sofyany‬‬ ‫‪Page 47‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫‪: Class Builder Features‬‬

‫ﻣﺎﻟﺬى ﺗﻮﻓﺮه ﻟﻚ ‪ Classes‬ﻣﻦ ﻣﺰاﯾﺎ داﺧﻞ اﻟﺒﺮﻣﺠﮫ ﻛﺎﺋﻨﯿﺔ اﻟﺘﻮﺟﮫ ؟‬

‫‪ – 1‬اﺳﺘﻄﻌﺖ ﺑﺬﻟﻚ ان ﺗﻘﻮم ﺑﺘﻤﺜﯿﻞ ﻛﻞ ‪ Object‬او ﻋﻨﺼﺮ داﺧﻞ ‪System‬‬

‫ﺑﻤﺠﻤﻮﻋﮫ ﻣﻦ ‪ Classes‬واﻟﺘﻰ ﺗﺤﺘﻮى ﻋﻠﻰ ﻛﻞ اﻟﺘﺎﻋﺎرﯾﻒ ﻟﮭﺬا ‪ Object‬ﻣﻦ‬

‫ﺳﻤﺎت وﺗﺼﺮﻓﺎت‬

‫‪ – 2‬اﺳﺘﻄﻌﺖ ﺣﻤﺎﯾﺔ ﺑﯿﺎﻧﺎﺗﻚ اﻻﺳﺎﺳﯿﮫ ﻟﮭﺬا ‪ Object‬ﻣﻦ ﻣﺤﺎوﻟﺔ اﻟﻌﺒﺚ ﺑﮭﺎ او‬

‫ﺣﺘﻰ ﺗﻐﯿﯿﺮھﺎ واﻟﺘﻰ ﺗﺘﻤﺜﻞ ﻓﻰ اﻟﻤﻔﺎھﯿﻢ اﻻﺗﯿﮫ ‪:‬‬

‫‪ Encapsulation Features – 1‬ﻣﺰاﯾﺎ اﻟﺘﻐﻠﯿﻒ ‪:‬‬

‫‪© To Sofyany‬‬ ‫‪Page 48‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫ﻣﺰاﯾﺎ اﻟﺘﻐﻠﯿﻒ ‪:‬‬

‫‪State Retention – 1‬‬

‫اﻻﺑﻘﺎء ﻋﻠﻰ ﺣﺎﻟﮫ وﺗﺼﺮﻓﺎت اﻟﻌﻨﺎﺻﺮ او ‪ Object‬داﺧﻞ ‪ System‬وذﻟﻚ ﯾﻤﺜﻞ‬

‫ﻓﻰ اﻟﺠﺰء اﻟﺬى ﯾﻌﻄﻰ ﻟﮫ وھﻮ ‪ Methods‬ﻓﻘﻂ اﻧﺎ اﻋﻄﻰ ﻟﮭﺎ اﻟﻘﯿﻢ وھﻰ ﺗﻘﻮم‬

‫ﺑﺎﻟﺘﺼﺮف اﻟﺜﺎﺑﺖ ﻟﮭﺎ‬

‫‪Data Hiding – 2‬‬

‫ﯾﺘﻢ ﻋﺰل اﻟﺒﯿﺎﻧﺎت واﻟﺘﻰ ﺗﻜﻮن ﻣﻤﺜﻠﮫ ﻓﻰ ‪ Attributes‬ﻟﻠﻌﻨﺼﺮ ‪ Object‬داﺧﻞ‬

‫اﻟﻨﻈﺎم ﺑﻌﯿﺪا ﻋﻦ اى ﺗﻐﯿﯿﺮ‬

‫وﯾﺒﻘﻰ ھﻨﺎ اﻟﺴﺆال ﻛﯿﻒ ﻟﻰ ان اﺳﺘﺨﺪام ھﺬا اﻟﻔﺼﯿﻞ اﻟﻀﺨﻢ واﻟﻤﻠﯿﻰء ﺑﻌﺪة‬

‫ﻋﻨﺎﺻﺮ وﻛﯿﻒ ﻟﻰ ان اﺳﺘﺨﺪام ﺗﻠﻚ اﻟﻌﻨﺎﺻﺮ ﻣﻦ ﺧﺎرج ھﺬا اﻟﻔﺼﯿﻞ ؟‬

‫وﺗﺎﺗﻰ اﻻﺟﺎﺑﮫ ﺑﺄن ﺑﻨﺎء اﻟﻔﺼﯿﻞ ﺷﻰء واﺳﺘﺨﺪام ﻣﺤﺘﻮﯾﺎﺗﮫ ﺷﻰء اﺧﺮ ﺑﻤﻌﻨﻰ ان‬

‫اﻟﻔﺼﯿﻞ اﻟﺬى ﯾﺴﻤﻰ اﻟﺒﺸﺮﯾﮫ ھﻮ ﻓﺼﯿﻞ ﻋﺎم ﯾﻄﻠﻖ ﻋﻠﻰ ﺑﻨﻰ اﻟﺒﺸﺮ ﻟﻜﻦ ﯾﺠﺐ ان ﯾﺠﺴﺪ‬

‫ﻓﻰ ﻋﻨﺼﺮ ﻣﻌﯿﻦ ﻟﻜﻰ ﺗﺴﺘﻄﯿﻊ ان ﺗﺘﻌﺎﻣﻞ ﻣﻌﮫ وھﺬا اﻟﻌﻨﺼﺮ اﻟﺬى ﯾﻤﺜﻠﮫ ھﻮ اﻻﻧﺴﺎن‬

‫وﺑﺎﻟﺘﺎﻟﻰ ﺳﻮف ﯾﺘﻢ اﻧﺸﺎء ﻋﻨﺼﺮ ﻣﻦ ﻛﻞ ﻓﺼﯿﻞ ﻟﻜﻰ ﺗﺴﺘﻄﯿﻊ ان ﺗﺴﺘﺨﺪ ﻛﺎﻓﺔ ﻋﻨﺎﺻﺮه‬

‫اﻧﺘﮭﺖ اﻟﻨﻈﺮه اﻟﻔﻠﺴﻔﯿﮫ ﻟﻨﺎﺗﻰ اﻟﻰ ﺗﺪﯾﻌﻤﮭﺎ ﺑﺄﻣﺜﻠﮫ ﻋﻤﻠﯿﮫ ‪:‬‬

‫‪© To Sofyany‬‬ ‫‪Page 49‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫ﺳﻤﺎﺣﯿﺔ اﺳﺘﺨﺪام ﻋﻨﺎﺻﺮ ‪ Class‬داﺧﻞ اﻟﺒﺮﻧﺎﻣﺞ ‪:‬‬

‫ﺗﺤﺘﻮى ﻟﻐﺔ ‪ C#‬ﻋﻠﻰ ﺧﻤﺴﺔ اﻧﻮاع ﻣﻨﮭﻢ ‪:‬‬

‫‪© To Sofyany‬‬ ‫‪Page 50‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫ﺑﻌﺾ اﻻﻣﺜﻠﮫ ﻋﻠﻰ ﺑﻨﺎء ‪ Classes‬داﺧﻞ ‪: C#‬‬

‫واﻻن ﻛﯿﻒ ﻟﻨﺎ ان ﻧﺴﺘﺨﺪم ﻋﻨﺎﺻﺮ ھﺬا اﻟﻔﺼﯿﻞ داﺧﻞ اﻟﺒﺮﻣﺠﮫ ؟‬

‫واﻟﺠﻮاب ھﻮ ان ﻧﻘﻮم ﺑﺎﻧﺸﺎء ﻛﺎﺋﻦ ﯾﺘﺒﻊ ھﺬا اﻟﻔﺼﯿﻞ وﺑﺎﻟﺘﺎﻟﻰ ﻓﮭﻮ ﯾﺴﺘﻄﯿﻊ اﺳﺘﺪﻋﺎء ﻛﺎﻓﺔ‬

‫ﻋﻨﺎﺻﺮه ﻛﺎﻟﺘﺎﻟﻰ ‪ :‬اﻟﻘﺎﻋﺪه اﻟﺒﺮﻣﺠﯿﮫ‬

‫‪© To Sofyany‬‬ ‫‪Page 51‬‬


March 25, 2013 [SOFYANY]

Memory

X Y

Obj1 Set data


Sum
Avg

X Y
Set data
Sum
Obj2
Avg

© To Sofyany Page 52
‫]‪March 25, 2013 [SOFYANY‬‬

‫ﺗﻮﺻﯿﺎت ھﺎﻣﮫ ‪ :‬ﯾﻔﻀﻞ ان ﺗﻜﻮن اﻟﻤﺘﻐﯿﺮات داﺧﻞ اﻟﻔﺼﯿﻞ ﺗﻌﻄﻰ اﻟﻤﻌﺮف ‪Private‬‬

‫ﺣﺘﻰ ﻻ ﯾﺘﻢ اﻟﻌﺒﺚ ﺑﮭﺎ او ﺗﻐﯿﺮھﺎ ‪.‬‬

‫ﯾﻔﻀﻞ ان ﺗﻌﻄﻰ اﻟﺪوال داﺧﻞ اﻟﻔﺼﯿﻞ اﻟﻤﻌﺮف ‪ Public‬ﺣﺘﻰ ﺗﺴﺘﻄﯿﻊ اﺳﺘﺨﺪاﻣﮭﺎ ﺧﺎرج‬

‫اﻟﻔﺼﯿﻞ ‪.‬‬

‫ﻛﯿﻔﯿﺔ اﻻﺗﺼﺎل ﺑﺎﻋﻀﺎء ‪ class‬ﺑﺎﺳﺘﺨﺪام اﻟﻜﺎﺋﻦ اﻟﺠﺪﯾﺪ‪:‬‬

‫اﻟﻘﺎﻋﺪه اﻟﺒﺮﻣﺠﯿﮫ ‪:‬‬

‫ﺳﻨﻘﻮم ﻓﻰ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﺑﺎﻋﻄﺎء ﻗﯿﻢ ﻟﻌﻨﺎﺻﺮ اﻟﻜﺎﺋﻨﯿﻦ اﻟﺬى ﺗﻢ ﺗﻌﺮﯾﻔﮭﻢ ﻣﻦ ﻧﻔﺲ اﻟﻔﺼﯿﻞ‬

‫وﻧﺮى اﻟﻨﺘﯿﺠﮫ ﻟﺪاﻟﺘﯿﻦ اﻟﺠﻤﻊ واﻟﻤﺘﻮﺳﻂ اﻟﺤﺴﺎﺑﻰ ‪:‬‬

‫‪© To Sofyany‬‬ ‫‪Page 53‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫ھﻨﺎك داﻟﺘﯿﻦ رﺋﯿﺴﺘﯿﻦ ﺗﻌﻄﻰ ﻗﯿﻤﺎ ﺛﺎﺑﺘﮫ ‪ Private members‬وھﺬا ﯾﺤﺪث ﻣﻊ‬

‫اى ﻟﻐﮫ ﺗﺴﺘﺨﺪم اﻟﺒﺮﻣﺠﮫ ﻛﺎﺋﻨﯿﺔ اﻟﺘﻮﺟﮫ ﺣﯿﺚ ﺗﺴﺘﺨﺪم داﻟﺘﯿﻦ ‪:‬‬

‫‪ : Setter – 1‬ﻻﻋﻄﺎء اﻟﻘﯿﻢ اﻻﺑﺘﺪاﺋﯿﮫ ﻻﻋﻀﺎء ‪class‬‬

‫‪ : Getter – 2‬ﻟﻘﺮاءة اﻟﺒﯿﺎﻧﺎت واظﮭﺎرھﺎ ﻋﻠﻰ اﻟﺸﺎﺷﮫ‬

‫ﺑﻌﺾ اﻻﻣﺜﻠﮫ ﻋﻠﻰ ذﻟﻚ ‪:‬‬

‫اﻧﻮاع اﻻداه ‪: Properties‬‬

‫‪Read Only – 1‬‬

‫‪Write only – 2‬‬

‫‪Read / Write – 3‬‬

‫‪© To Sofyany‬‬ ‫‪Page 54‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫اﻟﻘﺎﻋﺪه اﻟﻌﺎﻣﮫ ﻟﺘﻌﺮﯾﻔﮭﺎ داﺧﻞ ‪: Classes‬‬

‫ﺑﻌﺾ اﻟﺘﻮﺻﯿﺎت ‪:‬‬

‫اﻟﺨﻮاص اﻟﺘﻰ ﺗﺒﻨﻰ داﺧﻞ ‪ classes‬ﻟﯿﺲ ﻟﮭﺎ اى ﺑﺎراﻣﺘﺮات‬

‫اﺳﻢ اﻟﺨﺎﺻﯿﮫ ﻻﺑﺪ ان ﯾﻜﻮن ھﻮ ﻧﻔﺴﮫ اﺳﻢ اﻟﻤﺘﻐﯿﺮ اﻟﺘﻰ ﺗﺘﻌﺎﻣﻞ ﻣﻌﮫ ﻣﻊ اﻟﻔﺎرق ﺑﺎن ﯾﻜﻮن‬

‫اول ﺣﺮف ﻣﻦ اﺳﻢ اﻟﺨﺎﺻﯿﮫ ‪ capital‬ﺣﺘﻰ ﯾﺘﻤﯿﺰ ﻋﻦ اﻟﻤﺘﻐﯿﺮ‬

‫وﻟﻨﺮى ﺑﻌﺾ اﻻﻣﺜﻠﮫ ﻋﻠﻰ ﺑﻨﺎء اﻟﺨﻮاص ‪:‬‬

‫‪© To Sofyany‬‬ ‫‪Page 55‬‬


March 25, 2013 [SOFYANY]

© To Sofyany Page 56
‫]‪March 25, 2013 [SOFYANY‬‬

‫ﻻﺣﻆ ان اﻟﻘﯿﻢ اﻋﻄﯿﺖ ﻟﻠﻤﺘﻐﯿﺮات ﻋﻦ طﺮﯾﻖ اﻟﻜﻠﻤﮫ ‪ set‬داﺧﻞ اﻟﺨﺎﺻﯿﮫ وﺗﻢ اظﮭﺎر‬

‫اﻟﺒﯿﺎﻧﺎت ﻋﻦ طﺮﯾﻖ اﻟﻜﻠﻤﮫ ‪get‬‬

‫‪: Static Member‬‬

‫ان ھﺬا اﻟﻤﻌﺮف ﻟﮫ ﻣﯿﺰه ﺧﺎﺻﮫ ﺟﺪا داﺧﻞ اﻟﺴﻰ ﺷﺎرب ﺣﯿﺚ اﻧﮫ ﯾﻘﻮم ﺑﻤﺸﺎرﻛﺔ اﻟﻌﻀﻮ‬

‫اﻟﺬى ﯾﻌﺮف ﺑﻮاﺳﻄﺘﮫ ﺑﯿﻦ ﺟﻤﯿﻊ اﻟﻜﺎﺋﻨﺎت اﻟﺘﻰ ﺗﻌﺮف ﻣﻦ ﻧﻔﺲ اﻟﻔﺼﯿﻞ وﯾﻠﺰم ﻟﺘﻌﺮﯾﻒ‬

‫وﻟﻨﺮى ﻣﺜﺎل ﻋﺎم ‪:‬‬

‫‪© To Sofyany‬‬ ‫‪Page 57‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫ان اى ‪ static member‬ﯾﻨﺘﻤﻰ اﻟﻰ اﻟﻔﺼﯿﻞ ﻣﺒﺎﺷﺮﺗﺎ وﻟﯿﺲ اﻟﻜﺎﺋﻦ وھﺬه ﻣﯿﺰه‬

‫ھﺎﻣﮫ ﺟﺪا داﺧﻞ اﻟﺴﻰ ﺷﺎرب‬

‫‪© To Sofyany‬‬ ‫‪Page 58‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫دوال اﻟﺒﻨﺎء واﻟﮭﺪم داﺧﻞ اﻟﺴﻰ ﺷﺎرب ‪:‬‬

‫‪ – 1‬داﻟﺔ اﻟﺒﻨﺎء ‪: Constructor‬‬

‫ھﻰ داﻟﮫ ﺧﺎﺻﮫ ﺑﺎى ‪ Class‬وﺗﺴﺘﺨﺪم ﻟﻮﺿﻊ اﻟﻘﯿﻢ اﻻﺑﺘﺪاﺋﯿﮫ ﻟﻌﻨﺎﺻﺮه‬

‫ﺧﺼﺎﺋﺼﮭﺎ ‪:‬‬

‫‪ – 1‬ﺗﺄﺧﺬ ﻧﻔﺲ اﺳﻢ ‪Class‬‬

‫‪ – 2‬ﻟﯿﺲ ﻟﮭﺎ ﻗﯿﻢ ﻣﺴﺘﺮﺟﻌﮫ‬

‫‪ – 3‬ﯾﺘﻢ ﺗﻨﻔﯿﺬ داﻟﺔ اﻟﺒﻨﺎء ﺗﻠﻘﺎﺋﯿﺎ ﻣﻊ ﻛﻞ ﺗﻌﺮﯾﻒ ﻟﻜﺎﺋﻦ ﺟﺪﯾﺪ ﻣﻦ ‪Class‬‬

‫‪ – 4‬اﻟﻜﻮد ﺑﺪاﺧﻠﮫ ﯾﺴﺘﺨﺪم ﻟﻮﺿﻊ ‪ Data‬ﻻى ﻋﻀﻮ داﺧﻞ ‪Class‬‬

‫اﻣﺜﻠﮫ ﻋﻠﻰ ذﻟﻚ ‪:‬‬

‫‪© To Sofyany‬‬ ‫‪Page 59‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫ﻓﻰ ﺣﺎﻟﺔ ﻋﺪم ﺑﻨﺎء ھﺬه اﻟﺪاﻟﮫ ﺑﺪاﺧﻞ اى ﻓﺼﯿﻞ ﻓﺴﯿﺘﻢ وﺿﻊ ﻗﯿﻤﮫ اﺑﺘﺪاﺋﯿﮫ ﻻﻋﻀﺎﺋﮫ‬

‫ﻛﺎﻟﺘﺎﻟﻰ ‪:‬‬

‫‪String = null‬‬
‫‪Boolean = false‬‬
‫‪Int = 0‬‬
‫‪Float = 0.0‬‬

‫وذﻟﻚ ﻻن داﻟﺔ اﻟﺒﻨﺎء ﯾﺘﻢ ﺑﻨﺎﺋﮭﺎ ﺗﻠﻘﺎﺋﯿﺎ داﺧﻞ اى ﻓﺼﯿﻞ وھﺬه ﻣﯿﺰه ھﺎﻣﮫ ﺟﺪا داﺧﻞ‬

‫اﻟﺴﻰ ﺷﺎرب ﺣﯿﺚ اﻧﮫ ﯾﺘﻢ ﺗﺨﺰﯾﻦ ھﺬه اﻟﻘﯿﻢ داﺧﻞ اﻟﺬاﻛﺮه ﻣﻨﻌﺎ ﻟﺘﺨﺰﯾﻦ ﻗﯿﻢ‬

‫ﻋﺸﻮاﺋﯿﮫ وﺑﺎﻟﺘﺎﻟﻰ ﻓﺎﻧﺖ ﺗﻌﺮف ﻣﺴﺒﻘﺎ ﻣﺎ اﻟﺬى ﯾﻮﺟﺪ داﺧﻞ ﻋﻨﻮاﯾﻦ اﻟﺬاﻛﺮه ﺑﺎﻟﻨﺴﺒﮫ‬

‫ﻟﻠﻤﺘﻐﯿﺮات ﺣﺘﻰ وﻟﻮ ﻟﻢ ﺗﻌﻄﯿﮭﺎ ﻗﯿﻤﺎ اﺑﺘﺪاﺋﯿﮫ وﻧﺴﺘﻄﯿﻊ اﻟﺘﺎﻛﺪ ﺑﺎﻟﻤﺜﺎل اﻟﺘﺎﻟﻰ ‪:‬‬

‫‪© To Sofyany‬‬ ‫‪Page 60‬‬


March 25, 2013 [SOFYANY]

© To Sofyany Page 61
‫]‪March 25, 2013 [SOFYANY‬‬

‫اﻧﻮاع داﻟﺔ اﻟﺒﻨﺎء داﺧﻞ اﻟﺴﻰ ﺷﺎرب ‪:‬‬

‫‪: Without Parameter – 1‬‬

‫وﺗﺴﺘﺨﺪم ﻓﻰ وﺿﻊ ﻗﯿﻢ اﺑﺘﺪاﺋﯿﮫ ﺛﺎﺑﺘﮫ داﺧﻞ اى ﻛﺎﺋﻦ وﺗﻌﺮف ﺑﻨﻔﺲ اﺳﻢ ‪ Class‬وﻓﻰ‬

‫ھﺬا اﻟﻨﻮع ﯾﻜﻮن ﻟﺠﻤﯿﻊ ﻋﻨﺎﺻﺮ اﻟﻔﺼﯿﻞ ﻧﻔﺲ اﻟﻘﯿﻢ ﻣﻊ ﺗﻌﺮﯾﻒ ﻛﺎﺋﻦ ﺟﺪﯾﺪ ﻣﻦ ﻧﻔﺲ‬

‫اﻟﻔﺼﯿﻞ‬

‫‪: With Parameter – 2‬‬

‫وﺗﺴﺘﺨﺪم ﻟﻮﺿﻊ ﻗﯿﻢ اﺑﺘﺪاﺋﯿﮫ ﻣﺨﺘﻠﻔﮫ داﺧﻞ اﻟﻜﺎﺋﻦ وﻓﻰ ھﺬا اﻟﻨﻮع ﯾﻜﻮن ھﻨﺎك ﻗﯿﻢ‬

‫ﻣﺨﺘﻠﻔﮫ ﻟﻌﻨﺎﺻﺮ اﻟﻔﺼﯿﻞ ﻋﻠﻰ ﺣﺴﺐ اﻟﺒﺎراﻣﺘﺮات‬

‫‪© To Sofyany‬‬ ‫‪Page 62‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫ﻣﺜﺎل ﺷﺎﻣﻞ ﻋﻠﻰ اﺳﺘﺨﺪام ‪ Classes‬ﻓﻰ اﻟﺒﺮﻣﺠﮫ ‪:‬‬

‫ﻧﺮﯾﺪ ﻋﻤﻞ ﻣﺜﺎل ﺑﺎﺳﺘﺨﺪام ‪ Classes‬وذﻟﻚ ﻟﺤﺴﺎب اﻟﻤﺴﺎﺣﺎت ﻟﺜﻼﺛﺔ اﺷﻜﺎل ﻣﺨﺘﻠﻔﮫ‬

‫اﻟﻤﺮﺑﻊ ‪ -‬اﻟﻤﺴﺘﻄﯿﻞ – اﻟﻤﺜﻠﺚ ﻋﻠﻰ ان ﯾﺘﻢ اﻻﺗﻰ‬

‫‪ – 1‬ﺗﻌﺮﯾﻒ اﻟﻤﺘﻐﯿﺮات اﻟﻼزﻣﮫ ﻻﯾﺠﺎد اﻟﻤﺴﺎﺣﺎت‬

‫‪ – 2‬ﺑﻨﺎء داﻟﮫ ﻻﻋﻄﺎء اﻟﻘﯿﻢ ﻟﮭﺬه اﻟﻤﺘﻐﯿﺮات‬

‫‪ – 3‬ﺑﻨﺎء داﻟﮫ ﻟﺤﺴﺎب اﻟﻤﺴﺎﺣﺎت‬

‫‪© To Sofyany‬‬ ‫‪Page 63‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫ﻟﻜﻦ ھﻨﺎك طﺮق اﻛﺜﺮ اﺣﺘﺮاﻓﯿﮫ ﻟﻜﺘﺎﺑﺔ ﻣﺜﻞ ھﺬه اﻟﺒﺮاﻣﺞ وذﻟﻚ ﻻﻧﮫ ﺗﻢ ﺗﻜﺮار ﻧﻔﺲ‬

‫اﻟﻤﺘﻐﯿﺮات وﻧﻔﺲ اﻟﺪوال ﻓﻰ ﺟﻤﯿﻊ ‪ Classes‬وﻟﺘﻔﺎدى ذﻟﻚ ﯾﺠﺐ ان ﺗﺘﻌﺮف ﻋﻠﻰ ﺷﻰء‬

‫ھﺎم ﺟﺪا ﯾﺴﻤﻰ اﻟﻮراﺛﮫ داﺧﻞ اﻟﺒﺮﻣﺠﮫ ﻛﺎﺋﻨﯿﺔ اﻟﺘﻮﺟﮫ ‪.‬‬

‫‪© To Sofyany‬‬ ‫‪Page 64‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫ان اﻟﻮراﺛﮫ ھﻰ ﻋﺒﺎره ﻋﻦ اﺷﺘﻘﺎق ﻓﺼﯿﻞ ﻣﻦ اﺧﺮ ﺗﺤﻤﻞ ﻧﻔﺲ ﺧﺼﺎﺋﺼﮭﺎ وھﺬه ﻣﯿﺰه‬

‫ھﺎﻣﮫ ﺟﺪا داﺧﻞ اﻟﺒﺮﻣﺠﮫ ﻛﺎﺋﻨﯿﺔ اﻟﺘﻮﺟﮫ وﺳﺒﻖ ﻟﻨﺎ ان ﺷﺮﺣﺖ ھﺬا اﻟﺠﺰء ﻓﻰ ﻛﺘﺎب ھﻨﺪﺳﺔ‬

‫اﻟﺒﺮﻣﺠﯿﺎت اﻟﺨﺎص ﺑﻰ اﻟﺠﺰء اﻟﺜﺎﻟﺚ ﻣﻨﮫ‬

‫ﯾﺴﻤﻰ ‪ Class‬اﻟﺮﺋﯿﺴﻰ ﺑﻌﺪة اﺳﻤﺎء ‪:‬‬

‫‪Original class – base class – parent class – super class‬‬

‫وﯾﺴﻤﻰ ‪ Class‬اﻟﻤﺸﺘﻖ ﺑﻌﺪة اﺳﻤﺎء ‪:‬‬

‫‪New class – derived class – child class – sub class‬‬

‫ان اﻟﻮراﺛﮫ ﻟﮭﺎ ﻣﯿﺰﺗﯿﻦ ‪:‬‬

‫‪ – 1‬اﻧﻚ ﺗﺴﺘﻄﯿﻊ اﺷﺘﻘﺎق ﻓﺼﯿﻞ ﻣﻦ اﺧﺮ ﯾﺮث ﺟﻤﯿﻊ اﻟﻌﻨﺎﺻﺮ اﻟﻤﻮﺟﻮده ﻓﯿﮫ وﺑﺎﻟﺘﺎﻟﻰ‬

‫ﺗﻮﻓﺮ ﻋﻠﻰ ﻧﻔﺴﻚ ﻋﻨﺎء اﻋﺎدة ﺑﻌﺾ اﻻﻛﻮاد ﯾﺘﻢ ﺗﻜﺮارھﺎ ﻓﻰ اﻟﺒﺮﻧﺎﻣﺞ ﻛﻤﺜﺎل اﻟﻤﺴﺎﺣﺎت‬

‫اﻟﺴﺎﺑﻖ‬

‫‪ – 2‬اﻧﻚ ﺗﺴﺘﻄﯿﻊ اﻻﺿﺎﻓﮫ داﺧﻞ اﻟﻔﺼﯿﻞ اﻟﻤﺸﺘﻖ اﻟﻰ ﻋﻨﺎﺻﺮ اﻟﻔﺼﯿﻞ اﻟﺮﺋﯿﺴﻰ‬

‫‪© To Sofyany‬‬ ‫‪Page 65‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫اﻟﻘﺎﻋﺪه اﻟﺒﺮﻣﺠﯿﮫ ﻟﻼﺷﺘﻘﺎق داﺧﻞ اﻟﺴﻰ ﺷﺎرب ‪:‬‬

‫ﯾﻮﺟﺪ ﻧﻮﻋﺎن ﻣﻦ اﻻﺷﺘﻘﺎق ‪:‬‬

‫‪ – 1‬اﻟﻨﻮع اﻻول اﻧﻚ ﺗﺸﺘﻖ ﻓﺼﯿﻞ ﺟﺪﯾﺪ ﯾﺤﻤﻞ ﺟﻤﯿﻊ ﻋﻨﺎﺻﺮ اﻟﻔﺼﯿﻞ اﻟﺮﺋﯿﺴﻰ دون اى‬

‫اﺿﺎﻓﺎت‬

‫‪ – 2‬اﻟﻨﻮع اﻟﺜﺎﻧﻰ اﻧﻚ ﺗﺴﺘﻄﯿﻊ ان ﺗﻀﯿﻒ ﺧﺼﺎﺋﺺ اﺧﺮى ﻟﻠﻔﺼﯿﻞ اﻟﻤﺸﺘﻖ‬

‫ﺗﻄﺒﯿﻖ اﻟﻮراﺛﮫ ﻋﻠﻰ ﻣﺜﺎل اﻟﻤﺴﺎﺣﺎت ﺳﻮف ﻧﺒﻨﻰ ﻓﺼﯿﻞ رﺋﯿﺴﻰ ﯾﺴﻤﻰ اﻟﺸﻜﻞ او‬

‫‪ Polygon‬وﻧﺸﺘﻖ ﻣﻨﮫ ﺟﻤﯿﻊ ‪ Classes‬اﻻﺧﺮى‬

‫‪© To Sofyany‬‬ ‫‪Page 66‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫ﻻﺣﻆ ﻓﻰ ھﺬا اﻟﻤﺜﺎل اﺳﺘﺨﺪﻣﻨﺎ ﻓﻰ ﺗﻌﺮﯾﻒ اﻟﻤﺘﻐﯿﺮات اﻟﻤﻌﺮف ‪ Protected‬وﻟﯿﺲ‬

‫‪ Private‬واﻟﺴﺒﺐ ﻟﻜﻰ ﺗﺴﺘﻄﯿﻊ اﺳﺘﺨﺪام اﻟﻤﺘﻐﯿﺮ ﻣﻦ ﻓﺼﯿﻞ ﻣﺸﺘﻖ وذﻛﺮﻧﺎ ھﺬا ﻣﻦ ﻗﺒﻞ‬

‫‪© To Sofyany‬‬ ‫‪Page 67‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫اﻟﺘﻌﺪﯾﻞ ﻋﻠﻰ ﺑﻌﺾ اﻟﺨﺼﺎﺋﺺ داﺧﻞ اﻟﻔﺼﯿﻞ اﻟﺮﺋﯿﺴﻰ واﺳﺘﺨﺪام ﻗﺎﻋﺪة ‪:‬‬

‫‪Overriding Base Class Functionality‬‬

‫ﺗﺴﺘﻄﯿﻊ اﻟﺘﻌﺪﯾﻞ ﻋﻠﻰ ﺑﻌﺾ اﻟﺨﺼﺎﺋﺺ اﻟﺘﻰ ﻛﺎﻧﺖ ﻣﻮﺟﻮده داﺧﻞ اﻟﻔﺼﯿﻞ اﻻب وذﻟﻚ‬

‫ﺑﺎﺳﺘﺨﺪام اﻟﻜﻠﻤﮫ اﻟﺜﺎﺑﺘﮫ داﺧﻞ اﻟﺴﻰ ﺷﺎرب ‪ Overriding‬واﺳﺘﺨﺪام اﺳﻢ اﻟﺪاﻟﮫ اﻟﺘﻰ ﺗﺮﯾﺪ‬

‫اﻟﺘﻐﯿﯿﺮ ﻓﯿﮭﺎ او ﻣﺎ ﯾﺴﻤﻰ ‪Match Signature‬‬

‫وﺣﺘﻰ ﺗﻜﺘﻤﻞ ﻗﺎﻋﺪة اﻟﺘﻐﯿﯿﺮ وﺗﻜﻮن ﺻﺤﯿﺤﮫ ﻓﻌﻨﺪ ﺑﻨﺎء اﻟﺪاﻟﮫ ﻓﻰ اﻟﻔﺼﯿﻞ اﻻﺳﺎﺳﻰ واﻟﺘﻰ‬

‫ﺗﻨﻮى اﻟﺘﻐﯿﯿﺮ ﻓﯿﮭﺎ ﻣﺴﺘﻘﺒﻠﯿﺎ ﻋﻨﺪ اﺷﺘﻘﺎق ﻓﺼﺎﺋﻞ اﺧﺮى ﻣﻦ ھﺬا اﻟﻔﺼﯿﻞ ﻓﯿﺠﺐ ان ﺗﻌﻄﻰ‬

‫اﻟﻤﻌﺮف ‪Virtual‬‬

‫ﻣﺜﺎل ﻋﻠﻰ ذﻟﻚ ﻓﻰ ﺑﺮﻧﺎﻣﺞ اﻟﻤﺴﺎﺣﺎت ‪:‬‬

‫‪© To Sofyany‬‬ ‫‪Page 68‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫ھﻨﺎك ﻣﯿﺰه اﺧﺮى داﺧﻞ اﻻﺷﺘﻘﺎق وھﻰ اﻧﻚ ﺗﺴﺘﻄﯿﻊ اﺳﺘﺪﻋﺎء اﻟﺪوال ﻓﻰ اﻟﻔﺼﯿﻞ‬

‫اﻻﺳﺎﺳﻰ داﺧﻞ اﻟﻔﺼﯿﻞ اﻟﻤﺸﺘﻖ وذﻟﻚ ﺑﺎﺳﺘﺨﺪام اﻟﻜﻠﻤﮫ اﻟﻤﻌﺮﻓﮫ داﺧﻞ اﻟﻠﻐﮫ ‪Base‬‬

‫‪: Multi – level Hierarchies‬‬

‫ﻋﻤﻠﯿﺔ اﻻﺷﺘﻘﺎق اﻟﻤﺘﺘﺎﺑﻊ ﻟﻔﺼﯿﻞ ﻣﻦ اﺧﺮ ﺑﻤﻌﻨﻰ ان ﻋﻤﻠﯿﺔ اﺷﺘﻘﺎق ﺗﻤﺖ ﻣﻦ ﻓﺼﯿﻞ‬

‫رﺋﯿﺴﻰ ﺗﻠﺘﮭﺎ ﻋﻤﻠﯿﺔ اﺷﺘﻘﺎق ﻣﻦ اﻟﻔﺼﯿﻞ اﻟﻤﺸﺘﻖ وھﻜﺬا ﻣﻤﺎ ﯾﻌﻄﯿﮭﺎ ﺷﻜﻞ ھﺮﻣﻰ‬

‫وﻻﺣﻆ اﻧﻚ ﻓﻰ ﻛﻞ ﻣﺮه ﺗﺸﺘﻖ ﻓﯿﮭﺎ ﻓﺼﯿﻞ ﻣﻦ اﻻﺧﺮ ﺗﺴﺘﻄﯿﻊ ان ﺗﻌﺪل او ﺗﻀﯿﻒ‬

‫ﺧﺼﺎﺋﺺ ﺟﺪﯾﺪه وﯾﺠﺐ ان ﺗﻼﺣﻆ ان اﻟﺘﻌﺪﯾﻼت ﻟﮭﺎ اﻻوﻟﻮﯾﮫ ﻓﻰ اﻟﺘﻨﻔﯿﺬ ﻋﻦ‬

‫اﻟﺨﺼﺎﺋﺺ اﻻﺳﺎﺳﯿﮫ‬

‫‪© To Sofyany‬‬ ‫‪Page 69‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫‪: Preventing Inheritance‬‬

‫ﻣﻨﻊ اﻟﻮراﺛﮫ او اﻻﺷﺘﻘﺎق داﺧﻞ اﻟﺒﺮﻣﺠﮫ ﻛﺎﺋﻨﯿﺔ اﻟﺘﻮﺟﮫ ﺣﻔﺎظﺎ ﻋﻠﻰ ﻓﺼﯿﻞ ﻣﻌﯿﻦ ﻣﻦ‬

‫اﻻﺷﺘﻘﺎق وﺗﺤﺪث ﻛﺜﯿﺮا ﻣﻊ ‪ Classes‬اﻟﻤﺒﻨﯿﮫ داﺧﻞ اﻟﺴﻰ ﺷﺎرب اﺳﺎﺳﺎ واﻟﺘﻰ ﻗﺎﻣﺖ‬

‫ﺷﺮﻛﺔ ﻣﺎﯾﻜﺮوﺳﻮﻓﺖ ﺑﺒﺮﻣﺠﺘﮭﺎ ﺣﻔﺎظﺎ ﻋﻠﻰ ﺣﻘﻮق ﻣﻠﻜﯿﺔ اﻟﻜﻮد وﺗﺴﻤﺢ ﺑﺎﺷﺘﻘﺎق ﺑﻌﺾ‬

‫اﻟﻔﺼﺎﺋﻞ اﻻﺧﺮى‬

‫‪© To Sofyany‬‬ ‫‪Page 70‬‬


March 25, 2013 [SOFYANY]

: Class ‫اﻟﻘﺎﻋﺪه اﻟﺒﺮﻣﺠﯿﮫ ﻟﻤﻨﻊ اﺷﺘﻘﺎق‬

© To Sofyany Page 71
‫]‪March 25, 2013 [SOFYANY‬‬

‫ان ﻣﻔﮭﻤﻮم ‪ Polymorphism‬داﺧﻞ اﻟﺴﻰ ﺷﺎرب ھﻮ ﺗﻤﺎﻣﺎ ﻛﻤﻔﮭﻮم اﻟﺘﻌﺪﯾﻞ ﻋﻠﻰ ﺑﻌﺾ‬

‫ﺧﺼﺎﺋﺺ اﻟﻔﺼﯿﻞ اﻻﺳﺎﺳﻰ وذﻟﻚ ﺑﺎﺳﺘﺨﺪام اﻟﻤﻌﺮف ‪ Override‬وﻣﻦ اﻟﻤﻤﻜﻦ ان ﺗﻘﻮم‬

‫ﺑﺒﻨﺎء ‪ Class‬اﻻﺳﺎﺳﻰ دون ﻋﻤﻞ ﺗﻜﻮﯾﺪ ﻟﮫ ﺛﻢ ﺑﻌﺪ ذﻟﻚ ﺗﻌﺪل وﺗﻘﻮم ﺑﻌﻤﻞ اﻻﻛﻮاد ﻓﻰ‬

‫اﻟﻔﺼﺎﺋﻞ اﻟﻤﺸﺘﻘﮫ‬

‫وﻣﻌﻨﺎه ‪ Class‬ﺑﺪون ﻛﻮد وھﻮ ﻣﺠﺮد ‪ Class‬ﻋﺎدى ﻟﻜﻦ دون ﺳﻄﺮ ﻛﺪو واﺣﺪ واﻟﮭﺪف‬

‫‪ – 1‬ﺗﻌﺮﯾﻒ ﻧﺴﺨﮫ اﺻﻠﯿﮫ ﻣﻦ ‪ Class‬ﻋﻠﻰ اﻧﮭﺎ ‪ Abstract‬وھﻰ ﻛﻠﻤﮫ ﻣﺤﺠﻮزه‬

‫واﺳﺘﻌﻤﺎل ﻛﻠﻤﺔ ‪ Partial‬ﻣﻌﮭﺎ داﺧﻞ اﻟﺴﻰ ﺷﺎرب‬

‫‪ – 2‬ﺟﻤﯿﻊ اﻟﺪوال واﻟﺨﻮاص اﻟﺘﻰ ﺗﻜﺘﺐ ﺑﺪاﺧﻠﮫ ﯾﺠﺐ ان ﺗﻌﻄﻰ ﻧﻔﺲ اﻟﻤﻌﺮف وھﻮ‬

‫‪ Abstract‬وﻻ ﯾﺠﻮز ﺗﻌﺮﯾﻒ اى ﻣﺘﻐﯿﺮات ﺑﺪاﺧﻠﮫ او اﻧﺸﺎء ﻛﺎﺋﻦ ﻣﻨﮫ ﻓﻘﻂ ﺗﻌﺮﯾﻒ‬

‫اﻟﺪوال واﻟﺨﻮاص‬

‫‪© To Sofyany‬‬ ‫‪Page 72‬‬


March 25, 2013 [SOFYANY]

: ‫ﻟﺪﯾﻨﺎ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻰ‬

© To Sofyany Page 73
‫]‪March 25, 2013 [SOFYANY‬‬

‫ﻟﻨﺮى اﻻن اﺷﺘﻘﺎق ‪ class‬ﺟﺪﯾﺪ ﻣﻦ اﻟﺴﺎﺑﻖ وﻧﺮى ﻣﺎذا ﯾﻜﻮن ﺷﻜﻠﮫ ‪:‬‬

‫‪© To Sofyany‬‬ ‫‪Page 74‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫ﺗﺼﻤﯿﻢ اﻟﻮاﺟﮭﺎت داﺧﻞ اﻟﻜﻮد ‪:‬‬

‫وھﻰ ﺑﺪﯾﻞ ﻋﻦ ﺗﻌﺪد اﻟﻮراﺛﮫ اﻟﮭﺮﻣﯿﮫ ﻛﻤﺎ اﻧﮫ ﯾﺘﻤﯿﺰ ﺑﻌﻤﻞ ﻧﺴﺨﮫ ﻣﻨﮫ ﺑﺎﻟﻮراﺛﮫ ﻟﻜﻦ‬

‫اﻻﺿﺎﻓﮫ ﻋﻠﻰ اﻟﻔﺼﺎﺋﻞ اﻟﻤﺸﺘﻘﮫ ﺗﻜﻮن ﺑﺎﻟﺘﻌﺪﯾﻞ ﻋﻠﻰ اﻋﻀﺎء ‪Interface‬‬

‫ﻛﻤﺎ اﻧﮫ ﯾﻤﻜﻦ ﻋﻤﻞ ﺗﻜﻮﯾﺪ ﻻﻛﺜﺮ ﻣﻦ ‪ Interface‬ﻣﻌﺎ واﻟﺸﻜﻞ اﻟﻌﺎم ﻟﮫ ﯾﻜﻮن ﻛﺎﻟﺘﺎﻟﻰ ‪:‬‬

‫وﻟﺪﯾﻨﺎ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻰ ‪:‬‬

‫‪© To Sofyany‬‬ ‫‪Page 75‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫ﻣﻠﺤﻮظﮫ ھﺎﻣﮫ ‪ :‬ﻻ ﯾﻤﻜﻦ اﻧﺸﺎء ﻛﺎﺋﻦ ﻣﻦ اﻟﻮاﺟﮭﺎت او ‪ Interface‬ﻟﻜﻦ ﯾﻤﻜﻦ اﺷﺘﻘﺎق‬

‫ﻓﺼﺎﺋﻞ ﻣﻨﮭﺎ وﺑﺎﻟﺘﺎﻟﻰ اﻧﺸﺎء اﻟﻜﺎﺋﻨﺎت ﻣﻦ ‪ classes‬اﻟﻤﺸﺘﻘﮫ‬

‫ﻻ ﯾﻤﻜﻦ ﺗﻌﺮﯾﻒ اﻟﻤﺘﻐﯿﺮات داﺧﻞ ‪ interface‬ﺑﺪﻻ ﻣﻨﮭﺎ ﺧﻮاص ودوال واﻟﻤﺘﻐﯿﺮات‬

‫ﺗﻌﺮف داﺧﻞ ‪ classes‬اﻟﻤﺸﺘﻘﮫ‬

‫ان ﻋﻤﻞ ‪ interface‬ﺑﺪﯾﻞ ﻋﻦ اﻟﻮراﺛﮫ اﻟﮭﺮﻣﯿﮫ وﺗﺸﺒﮫ ﻓﻰ ﻋﻤﻠﮭﺎ ‪abstract class‬‬

‫‪© To Sofyany‬‬ ‫‪Page 76‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫‪: syntax error – 1‬‬

‫ھﺬا ھﻮ اﻻﺳﮭﻞ اﻛﺘﺸﺎﻓﮫ ﻓﻮر ﻛﺘﺎﺑﺔ اﻟﻜﻮد واﻟﺴﺒﺐ ان ‪ compiler‬ﯾﻌﺘﺮض ﻋﻠﯿﮭﺎ ﻻﻧﮭﺎ‬

‫ﻏﯿﺮ ﻣﻼﺋﻤﮫ ﻟﻠﻘﻮاﻋﺪ اﻟﺘﻰ ﺑﻨﯿﺖ ﻋﻠﯿﮭﺎ اﻟﻠﻐﮫ او اﻟﺘﻰ ﺗﻌﻤﻞ ﺑﮭﺎ داﺧﻞ ﻟﻐﮫ ﻣﻌﯿﻨﮫ‬

‫‪: Logical errors – 2‬‬

‫اﻻﺧﻄﺎء اﻟﻤﻨﻄﻘﯿﮫ وھﺬه اﻻﻧﻮاع ﺗﻈﮭﺮ ﻋﻨﺪ اﻟﺘﻨﻔﯿﺬ ﯾﻜﻮن اﻟﻜﻮد ﻓﯿﮭﺎ ﺻﺤﯿﺤﺎ ﻟﻜﻦ ﺳﯿﺮ‬

‫اﻟﺒﺮﻧﺎﻣﺞ ﻏﯿﺮ ﻣﻨﻄﻘﻰ ﻛﺎﻟﻘﺴﻤﮫ ﻋﻠﻰ اﻟﺼﻔﺮ ﻣﺜﻼ وﯾﺴﻤﻰ ھﺬا اﻟﻨﻮع ‪Exception‬‬

‫او اﻻﺳﺘﺜﻨﺎﺋﺎت‬

‫‪: Bugs – 3‬‬

‫ھﺬه ھﻮ اﻟﻨﻮع اﻻﺷﮭﺮ وﻻﯾﻮﺟﺪ ﺑﺮﻧﺎﻣﺞ ﺗﻘﺮﯾﺒﺎ ﯾﺨﻠﻮ ﻣﻨﮫ وھﻰ ﻧﺴﯿﺎن ﺣﺬف ﻣﺘﻐﯿﺮ ﻣﻦ‬

‫اﻟﺬاﻛﺮه ﻣﺜﻼ ﻋﻨﺪ ﻏﻠﻖ اﻟﺒﺮﻧﺎﻣﺞ وﻟﺬﻟﻚ ﺗﻜﻮن ھﻨﺎك ﻋﺪة ﻧﺴﺦ ﺗﺠﺮﯾﺒﯿﮫ ﻻﺻﻄﯿﺎد ﻣﺜﻞ ھﺬه\‬

‫اﻻﺧﻄﺎء‬

‫‪© To Sofyany‬‬ ‫‪Page 77‬‬


March 25, 2013 [SOFYANY]

: ‫ داﺧﻞ اﻟﻜﻮد‬Exception ‫اﻟﺸﻜﻞ اﻟﻌﺎم ﺑﺎﻟﻨﺴﺒﮫ‬

© To Sofyany Page 78
‫]‪March 25, 2013 [SOFYANY‬‬

‫ھﻰ ﻋﺒﺎره ﻋﻦ ﻣﺨﺰن او ‪ Container‬ﻟﻠﺒﯿﺎﻧﺎت وﯾﻮﻓﺮ ﻟﻚ ﻣﺰاﯾﺎ ﻻ ﺗﻮﻓﺮھﺎ ﻟﻚ‬

‫ﻣﺜﯿﻠﺘﮭﺎ ﻣﻦ ‪Array‬‬

‫ان ‪ namespace‬اﻟﺬى ﯾﺤﺘﻮى ﻓﺼﯿﻞ ‪ Array List‬ھﻮ ‪Collections‬‬

‫واﺳﺘﺪﻋﺎﺋﮫ ﯾﻜﻮن ﻛﺎﻟﺘﺎﻟﻰ ‪:‬‬

‫وﯾﻌﺪ ﻓﺌﺔ ‪ Array List‬ھﻰ اھﻢ ‪ class‬ﻓﯿﮭﺎ وﺗﻌﺮف ﻋﻠﻰ اﻧﮭﺎ ﻗﺎﺋﻤﮫ ﻣﻦ ‪ Array‬ﻟﮭﺎ ﻧﻔﺲ‬

‫ﺳﻤﺎت اﻟﻤﺼﻔﻮﻓﺎت ﻣﻦ ﺣﯿﺚ ﺗﺨﺰﯾﻦ ﻣﺠﻤﻮﻋﮫ ﻣﻦ اﻟﺒﯿﺎﻧﺎت دﻓﻌﮫ واﺣﺪه ﻛﺎﻟﻤﺘﻐﯿﺮات‬

‫اﻟﻤﺮﻛﺒﮫ وﻟﮭﺎ اﯾﻀﺎ ﻣﺰاﯾﺎ اﻟﻘﻮاﺋﻢ او ‪ List‬داﺧﻞ ﻟﻐﺔ اﻟﺒﺮﻣﺠﮫ ﻓﮭﻰ اداه اﻗﻮى ﻣﻦ ﻋﻤﻞ‬

‫اﻟﻤﺼﻔﻮﻓﺎت‬

‫طﺮﯾﻘﺔ اﺳﺘﺨﺪاﻣﮫ داﺧﻞ اﻟﺴﻰ ﺷﺎرب ‪:‬‬

‫‪© To Sofyany‬‬ ‫‪Page 79‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫‪ – 1‬ﯾﺠﺐ ﺗﻌﺮﯾﻒ ﻛﺎﺋﻦ ﻣﻨﮫ ﻻﺳﺘﺨﺪام ﺟﻤﯿﻊ ﻣﺰاﯾﺎ ‪class‬‬

‫‪© To Sofyany‬‬ ‫‪Page 80‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫وھﺬه طﺮﯾﻘﮫ ﻟﺘﺮﺗﯿﺐ اﻟﻜﻮد وﺟﻌﻠﮫ ﺿﻤﻦ ﻧﻄﺎﻗﺎت ﻣﻌﯿﻨﮫ ﻟﻌﺪم اﻟﺘﺸﻮﯾﺶ وﺗﺴﺘﺨﺪم‬

‫ﻟﺘﺤﺴﯿﻦ وﺗﻨﺴﯿﻖ ﻣﻈﮭﺮ اﻟﻜﻮد داﺧﻞ ﻣﻠﻒ اﻟﺸﻔﺮه اﻟﻤﺼﺪرﯾﮫ ﻟﻠﺒﺮﻧﺎﻣﺞ‬

‫‪© To Sofyany‬‬ ‫‪Page 81‬‬


‫]‪March 25, 2013 [SOFYANY‬‬

‫ﺑﻨﺎء اﻟﺘﻌﻠﯿﻘﺎت داﺧﻞ اﻟﺸﻔﺮه اﻟﻤﺼﺪرﯾﮫ ‪:‬‬

‫ﺗﻌﺘﺒﺮ اﻟﺘﻌﻠﯿﻘﺎت ﺟﺰء ھﺎم ﺟﺪا ﻻ ﯾﺴﺘﮭﺎن ﺑﮫ ﺧﺎﺻﮫ داﺧﻞ اﻟﻤﺸﺎرﯾﻊ اﻟﺘﻰ ﺗﺤﺘﺎج اﻟﻰ‬

‫ﺷﻔﺮه ﻣﺼﺪرﯾﮫ ﺿﺨﻤﮫ ﻛﻘﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ﻣﺜﻼ وﻟﮭﺎ ﻓﺎﺋﺪه ﻛﺒﯿﺮه ﺟﺪا ﻋﻨﺪ اﻟﺮﺟﻮع ﻣﺮه‬

‫اﺧﺮى اﻟﻰ اﻟﻜﻮد وﻋﻨﺪ ﻋﻤﻞ اﻟﻔﺮﯾﻖ اﻟﺠﻤﺎﻋﻰ‬

‫‪© To Sofyany‬‬ ‫‪Page 82‬‬


March 25, 2013 [SOFYANY]

© To Sofyany Page 83
‫]‪March 25, 2013 [SOFYANY‬‬

‫اﻧﺘﮭﻰ اﻟﺠﺰء اﻻول ﻣﻦ ھﺬا اﻟﻜﺘﺎب ﻣﻦ اﺳﺎﺳﯿﺎت اﻟﺒﺮﻣﺠﮫ ﻓﻰ ﻟﻐﺔ اﻟﺴﻰ ﺷﺎرب‬

‫اﻋﺘﻤﺪ ﻋﻠﻰ اﻟﻤﻌﻠﻮﻣﮫ اﻟﻤﺒﺎﺷﺮه واھﺘﻢ ﺑﮭﺎ اﻛﺜﺮ وﻋﺬرا ﻋﻠﻰ ﻋﺪم اﻻھﺘﻤﺎم ﺑﺎﻟﺘﻨﺴﯿﻖ‬

‫‪memorycode_84@yahoo.com‬‬

‫‪© To Sofyany‬‬ ‫‪Page 84‬‬

You might also like