Professional Documents
Culture Documents
ان ﻟﻐﺔ اﻟﺴﻰ ﺷﺎرب ﺗﺘﺒﻊ ﻣﺠﻤﻮﻋﺔ ﻟﻐﺎت .Net Frame Workوھﺬه اﻟﺒﯿﺌﮫ
ﺗﺤﺘﻮى ﻋﻠﻰ ﻋﺪة ﻟﻐﺎت ﻟﻜﻦ ﻛﻞ ﻣﻨﮭﻢ ﻟﮫ اﻟﻜﻮد اﻟﺨﺎص ﺑﮫ وﺗﻮﺟﺪ ﺑﮭﺎ ﻟﻐﮫ وﺳﯿﻄﯿﮫ
C++ C#
ھﻰ ﻟﻐﺔ ﺗﺴﺘﻄﯿﻊ ﺑﮭﺎ ان ﺗﺴﺘﺨﺪم ﻣﻔﮭﻮم ھﻰ ﻟﻐﮫ ﻣﺒﻨﯿﮫ ﺑﺎﻻﺳﺎس ﻋﻠﻰ ﻣﻔﮭﻮم
اﻟﺒﺮﻣﺠﮫ ﻛﺎﺋﻨﯿﺔ اﻟﺘﻮﺟﮫ اﻟﺒﺮﻣﺠﮫ ﻛﺎﺋﻨﯿﺔ اﻟﺘﻮﺟﮫ او
Object Oriented
Usingھﻰ ﻛﻠﻤﮫ ﻣﺤﺠﻮزه داﺧﻞ اﻟﻠﻐﮫ وﺗﺴﺘﺨﺪم ﻟﻠﻨﺪاء ﻋﻠﻰ اﺳﻢ ﻣﻌﯿﻦ ﻟﯿﺼﺒﺢ
ﺟﺰء ﻣﻦ اﻟﺒﺮﻧﺎﻣﺞ
C#
Class
Namespaces
ﻻﺑﺪ ﻣﻦ وﺟﻮد واﺣﺪ ﻓﻘﻂ وﻗﺪ ﯾﺤﺘﻮى ﻋﻠﻰ اﻛﺜﺮ ﻣﻦ Classﻟﻜﻦ ﻋﻠﻰ اﻻﻗﻞ
ان وظﯿﻔﺔ اﻟﺪاﻟﮫ اﻟﺮﺋﯿﺴﯿﮫ )( Mainان Compilerﯾﺒﺪء داﺋﻤﺎ ﺑﺘﻨﻔﯿﺬ ﺧﻄﻮات
اﻟﺒﺮﻧﺎﻣﺞ ﻣﻦ ﻋﻨﺪھﺎ اﯾﺎ ﻛﺎن ﻣﻮﺿﻌﮭﺎ وﻻﺑﺪ ان ﺗﻜﻮن ﻣﻮﺟﻮده داﺧﻞ class
وﺿﻊ ﺗﻠﻚ اﻟﺪاﻟﮫ داﺧﻞ اى classوﺳﻌﻨﺘﺒﺮه اﻧﮫ اﻟﺮﺋﯿﺴﻰ اﻟﺬى ﯾﺤﺘﻮى ﻋﻠﻰ
ﺗﻠﻚ اﻟﺪاﻟﮫ
ان ﻟﻐﺔ C#ﺣﺴﺎﺳﮫ ﻟﺤﺎﻟﺔ اﻻﺣﺮف ﺑﻤﻌﻨﻰ اﻧﮫ ﯾﺠﺐ ان ﯾﺮاﻋﻰ ﻓﯿﮭﺎ capital
او small
ھﻨﺎك اﻣﺮان اﺳﺎﺳﯿﺎن داﺧﻞ C#وھﻤﺎ ﻛﯿﻔﯿﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﺪﺧﻞ واﻟﺨﺮج واﻟﺬى
ﻻﻏﻨﻰ ﻋﻨﮭﻢ داﺧﻞ اى ﺑﺮﻧﺎﻣﺞ وھﻤﺎ ﻣﻤﺜﻼن ﻓﻰ داﻟﺘﯿﻦ ﯾﺘﺒﻌﺎن ﻧﻔﺲ class
داﺧﻞ ﻟﻐﺔ اﻟﺴﻰ ﺷﺎرب ﻻﺑﺪ ﻣﻦ اﻻﻋﻼن ﻋﻦ اﻟﻤﺘﻐﯿﺮات ﺻﺮاﺣﺔ وﺗﻌﺮﯾﻔﮭﺎ ﻗﺒﻞ اﺳﺘﺨﺪاﻣﮭﺎ
ﻗﻠﻨﺎ ﺳﺎﺑﻘﺎ ان اﻟﺴﻰ ﺷﺎرب ﺗﻌﺘﺒﺮ ﺟﻤﯿﻊ اﻟﻤﺪﺧﻼت ﻋﻠﻰ اﻧﮭﺎ ﻧﺼﻮص ﻓﻜﯿﻒ اذا ﻣﺎ ﺗﻢ
ادﺧﺎل ارﻗﺎم او اﻧﻮاع اﺧﺮى ﻓﮭﻨﺎك دوال ﻟﻠﺘﺤﻮﯾﻞ ﺑﯿﻦ اﻧﻮاع اﻟﺒﯿﺎﻧﺎت
ﺗﺴﺘﻄﯿﻊ اﻻن اﺳﺘﺨﺪام ﻧﻔﺲ اﻟﺪاﻟﺘﯿﻦ ﻟﺘﺤﻮﯾﻞ ﺑﺎﻗﻰ اﻧﻮاع اﻟﺒﯿﺎﻧﺎت ﺣﯿﺚ اﻧﻚ ﻣﻀﻄﺮ
© To Sofyany Page 8
March 25, 2013 [SOFYANY]
ﻣﻌﺎﻣﻼت اﻟﻤﺴﺎواه
Assignment
Assignment plus +=
Assignment minus -=
ان ﺟﻤﯿﻊ اﻟﻤﻌﺎﻣﻼت اﻟﺘﻰ ﺗﻢ ﺳﺮدھﺎ ﻓﻰ اﻟﺠﺪاول اﻟﺴﺎﺑﻘﮫ ﻟﮭﺎ اﻻﺳﺘﺨﺪام اﻻوﺳﻊ
© To Sofyany Page 9
]March 25, 2013 [SOFYANY
اﻟﺪوال اﻟﺸﺮطﯿﮫ ﻣﻦ اﻟﺪوال اﻟﻮاﺳﻌﺔ اﻻﻧﺘﺸﺎر داﺧﻞ ﻟﻐﺎت اﻟﺒﺮﻣﺠﮫ ﺑﺼﻔﮫ ﻋﺎﻣﮫ
وذﻟﻚ ﻻھﻤﯿﺘﮭﺎ اﻟﻜﺒﯿﺮه ﻓﻰ اﻟﺘﺤﻜﻢ ﻓﻰ ﺳﯿﺮ اﻟﺒﺮﻧﺎﻣﺞ وﻟﺪﯾﻨﺎ اﻟﻌﺪﯾﺪ ﻣﻨﮭﺎ داﺧﻞ
ﺑﻤﻌﻨﻰ ﻟﻮ ﺗﺤﻘﻖ اﻟﺸﺮط ﺳﻮف ﯾﺘﻢ ﺗﻨﻔﯿﺬ اﻟﺠﻤﻞ اﻟﺒﺮﻣﺠﯿﮫ اﻟﺘﻰ ﺗﺘﺒﻊ اﻟﻘﺎﻋﺪه اﻟﺸﺮطﯿﮫ
ﺑﻤﻌﻨﻰ اﻧﮫ اذا ﺗﺤﻘﻖ اﻟﺸﺮط ﺳﯿﺘﻢ ﺗﻨﻔﯿﺬ اﻟﺠﻤﻞ اﻟﺘﺎﺑﻌﮫ IFواذا ﻟﻢ ﯾﺘﻢ ﺗﺤﻘﯿﻖ اﻟﺸﺮط ﺳﯿﺘﻢ
ﯾﺘﻢ ﺗﻌﺮﯾﻒ اﻟﻤﺘﻐﯿﺮ ﺛﻢ ﻓﻰ ﻛﻞ ﻣﺮه اﻋﻄﺎؤه ﻗﯿﻤﮫ ﻣﻌﯿﻦ ﻣﻊ ﻛﻞ ﺟﻤﻠﺔ Caseوﺗﻨﻔﯿﺬ اﻟﺠﻤﻠﮫ
اﻟﻤﻄﻠﻮﺑﮫ اذا ﻣﺎ ﺗﺴﺎوت ھﺬه اﻟﻘﯿﻤﮫ ﻣﻊ اى ﺣﺎﻟﮫ ﻣﻦ ﺗﻠﻚ اﻟﺤﺎﻻت وﻻ ﺣﻆ اﻧﮫ ﺑﻌﺪ ﻛﻞ ﺣﺎﻟﮫ
وﺿﻊ اﻟﺤﺎﻟﮫ Defaultواﻟﺘﻰ ﺳﻮف ﺗﻨﻔﺬ ﺟﻤﻠﺘﮭﺎ اذا ﻟﻢ ﺗﺘﺤﻘﻖ اى ﻣﻦ اﻟﺤﺎﻻت اﻟﺴﺎﺑﻘﮫ
ﺗﺴﺘﺨﺪم ھﺬه اﻟﺠﻤﻞ ﻓﻰ ﺗﻜﺮار ﺟﺰء ﻣﻌﯿﻦ ﻣﻦ اﻟﺒﺮﻧﺎﻣﺞ اذا ﻣﺎ ﺗﺤﻘﻘﺖ ﺷﺮوط ﻣﻌﯿﻨﮫ
ﺣﯿﺚ ﯾﻜﻮن اﻟﺘﻜﺮار ﻣﺤﺪود وﻟﮫ ﺿﻮاﺑﻂ وﻟﯿﺲ اﻟﻰ ﻣﺎﻻﻧﮭﺎﯾﮫ وﻟﮭﺎ اﻧﻮاع داﺧﻞ ﻟﻐﺎت
© To Sofyany Page 15
]March 25, 2013 [SOFYANY
وھﺬه اﻟﻘﺎﻋﺪه ﺗﺆﻛﺪ ﻋﻠﻰ اﺳﺘﻤﺮار ﺗﻨﻔﯿﺬ ﺟﺰء ﻣﻌﯿﻦ ﻣﻦ اﻟﻜﻮد طﺎﻟﻤﺎ ان اﻟﺸﺮط ﻣﺎزال
وھﺬه اﻟﻘﺎﻋﺪه ﻟﮭﺎ ﺧﺼﻮﺻﯿﮫ ﺣﯿﺚ اﻧﮫ ﯾﺘﻢ ﺗﻨﻔﯿﺬ اﻟﻜﻮد اول ﻣﺮه ﻗﺒﻞ اﺧﺘﺒﺎر اﻟﺸﺮط
ﺑﻤﻌﻨﻰ اﻧﮫ اول ﻣﺮه ﺳﯿﺘﻢ اﻟﺘﻨﻔﯿﺬ ﺣﺘﻰ ﻟﻮ ﯾﺘﺤﻘﻖ اﻟﺸﺮط وﺑﻌﺪ ذﻟﻚ ﯾﺨﺘﺒﺮ اﻟﺸﺮط ﻛﻞ
ﻻﺣﻆ ان اﻟﺸﺮط وﺿﻊ ﻓﻰ ﻧﮭﺎﯾﺔ اﻟﺠﻤﻠﮫ ﺣﺘﻰ ﯾﺘﻢ اﻟﺘﻨﻔﯿﺬ ﻓﻰ اﻟﻤﺮه اﻻوﻟﻰ اذا ﻟﻢ ﯾﺘﺤﻘﻖ
© To Sofyany Page 18
]March 25, 2013 [SOFYANY
ﺟﻤﻠﺔ اﻟﺨﺮوج ﻋﻦ اﻟﺤﻠﻘﺔ اﻟﺘﻜﺮارﯾﮫ ﻋﻨﺪ اﻟﻮﺻﻮل اﻟﻰ ﻧﻘﻄﮫ ﻣﻌﯿﻨﮫ : break
واﻟﺘﻰ ﺗﻘﻮم ﺑﺎﻧﮭﺎء اﻟﺤﻠﻘﮫ ﻋﻨﺪ اﻟﻮﺻﻮل اﻟﻰ ﻧﻘﻄﮫ ﻣﻌﯿﻨﮫ او ﺗﺤﻘﯿﻖ ﺷﺮط ﻣﻌﯿﻦ
اﻟﻘﺎﻋﺪه اﻟﻌﺎﻣﮫ ﻟﮭﺎ :ﺗﺴﺘﺨﺪم داﺧﻞ اى ﻣﻦ اﻟﺠﻤﻞ اﻟﺘﻜﺮارﯾﮫ اﻟﺴﺎﺑﻘﮫ وداﺋﻤﺎ ﺗﻮﺿﻊ
ھﺬا اﻻﻣﺮ ﯾﺨﺮج ﻣﻦ اﻟﺤﻠﻘﮫ ﺛﻢ ﯾﻌﻮد اﻟﯿﮭﺎ ﻣﺮه اﺧﺮى ﻋﻨﺪ ﺷﺮط ﻣﻌﯿﻦ ﺑﻤﻌﻨﻰ اﻧﮫ
وﻟﺪﯾﻨﺎ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﺣﯿﺚ ﺳﯿﺘﺠﺎھﻞ اﻟﺒﺮﻧﺎﻣﺞ طﺒﺎﻋﺔ اﻟﺮﻗﻢ 5ﺛﻢ ﯾﻄﺒﻊ ﺑﺎﻗﻰ اﻻرﻗﺎم
– 1اﻟﻤﺼﻔﻮﻓﺎت او : Array
ﯾﺠﺐ ان ﯾﻜﻮن ﻛﻞ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﮫ ﻟﮭﺎ ﻧﻔﺲ ﻧﻮع اﻟﺒﯿﺎﻧﺎت وﻣﻤﻜﻦ ان ﺗﺨﺘﻠﻒ ﻓﻰ اﻟﻘﯿﻢ
وﯾﻮﺟﺪ ﻟﮭﺎ ﻧﻮﻋﺎن اﻟﻤﺼﻔﻮﻓﮫ اﺣﺎدﯾﺔ اﻟﺒﻌﺪ او one –Dواﻟﻤﺼﻔﻮﻓﮫ اﻟﺜﻨﺎﺋﯿﺔ اﻟﺒﻌﺪ او
Tow – D
وﻣﻦ اﻟﻤﻤﻜﻦ ان ﺗﻌﻄﯿﮭﺎ ﻗﯿﻤﺎ اﺑﺘﺪاﺋﯿﮫ ﻋﻨﺪ اﻟﺘﻌﺮﯾﻒ ﻟﻜﻦ ﯾﺠﺐ اﻻﺗﺰﯾﺪ اﻟﻘﯿﻢ ﻋﻦ ﺣﺠﻢ
اﻟﻤﺼﻔﻮﻓﮫ
وﻣﻦ اﻟﻤﻤﻜﻦ اﯾﻀﺎ ﺗﺤﺪﯾﺪ ﺣﺠﻢ اﻟﻤﺼﻔﻮﻓﮫ ﻋﻦ طﺮﯾﻖ اﻟﻘﯿﻢ اﻻﺑﺘﺪاﺋﯿﮫ ﻟﻜﻦ ﻟﯿﺴﺖ ﻣﺴﺘﺤﺒﮫ
وﻣﻦ اﻟﻤﻤﻜﻦ اﻋﻄﺎء ﻗﯿﻤﺎ اﺑﺘﺪاﺋﯿﮫ ﻟﻠﻤﺼﻔﻮﻓﮫ ﻣﻦ اﻟﻤﺴﺘﺨﺪم وﻗﺖ ﺗﻨﻔﯿﺬ اﻟﺒﺮﻧﺎﻣﺞ
وﻣﻦ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﺳﻮف ﺑﺘﻜﻤﻠﺔ اﻟﺒﺮﻧﺎﻣﺞ ﻟﺤﺴﺎب اﻛﺒﺮ ﻗﯿﻤﮫ واﻗﻞ ﻗﯿﻤﮫ ﺗﻢ ادﺧﺎﻟﮭﺎ ﻣﻦ
© To Sofyany Page 24
]March 25, 2013 [SOFYANY
ھﻨﺎك ﻧﻮع اﺧﺮ ﻣﮭﻢ ﺟﺪا ﻣﻦ اﻟﺤﻠﻘﺎت اﻟﺘﻜﺮارﯾﮫ وﻏﺎﻟﺒﺎ ﻣﺎ ﯾﺴﺘﺨﺪم ﻣﻊ اﻟﻤﺼﻔﻮﻓﺎت
ﺣﯿﺚ ﯾﺴﺘﺨﺪم ﻓﻰ ﻗﺮاءة ﺑﯿﺎﻧﺎت اﻟﻤﺼﻔﻮﻓﮫ وﻻ ﯾﻤﻜﻦ اﺳﺘﺨﺪاﻣﮫ ﻓﻰ اﻟﻜﺘﺎﺑﮫ اﻟﯿﮭﺎ او
ﺗﻐﯿﺮ ﻗﯿﻤﮭﺎ
اﻟﻤﺼﻔﻮﻓﮫ
For example:
اﻋﻄﺎء ﺑﯿﺎﻧﺎت ﻟﻠﻤﺼﻔﻮﻓﮫ ﻣﻦ اﻟﻤﺴﺘﺨﺪم اﺛﻨﺎء ﺗﻨﻔﯿﺬ اﻟﺒﺮﻧﺎﻣﺞ ﻓﻰ ھﺬا اﻟﻤﺜﺎل :
وﻣﻨﮫ ﺗﻌﺮف طﻮل اﻟﻤﺼﻔﻮﻓﮫ ةﺗﻔﯿﺪك ﻓﻰ ﺣﺎﻟﺔ اذا ﻛﺎن ﻋﺪد اﻟﻌﻨﺎﺻﺮ ﻣﺠﮭﻮﻻ ﻟﻚ
ﺑﻤﻌﻨﻰ اﻧﮫ ﻋﻨﺪ ﺗﻌﺮﯾﻒ اﻟﻤﺼﻔﻮﻓﮫ ﻓﻠﻦ ﯾﺘﻢ ﺗﺤﺪﯾﺪ طﻮل ﻣﻌﯿﻦ ﺑﻞ ﺳﯿﻘﻮم اﻟﻤﺴﺘﺨﺪم
– 2اﻟﺨﺎﺻﯿﮫ : Rank
واﻟﺘﻰ ﻣﻨﮭﺎ ﺗﻌﺮف ﻧﻮع اﻟﻤﺼﻔﻮﻓﮫ اذا ﻛﺎﻧﺖ ﺛﻨﺎﺋﯿﺔ اﻻﺑﻌﺎد ام اﺣﺎدﯾﺔ اﻟﺒﻌﺪ
وﺗﻘﻮم ھﺬه اﻟﺨﺎﺻﯿﮫ ﺑﺎﻟﺤﺒﺚ داﺧﻞ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﮫ ﻋﻦ ﻋﻨﺼﺮ ﯾﺤﺘﻮى ﻋﻠﻰ ﻗﯿﻤﮫ ﻣﻌﯿﻨﮫ
ﻻﺳﺘﺨﺪاﻣﮫ وﻟﻜﻦ ﺷﺮط ان ﺗﻜﻮن ﻋﻨﺎﺻﺮ ھﺬه اﻟﻤﺼﻔﻮﻓﮫ ﻣﺮﺗﯿﮫ ﺗﺮﺗﯿﺒﺎ ﺗﻨﺎزﻟﯿﺎ او ﺗﺼﺎﻋﺪﯾﺎ
اﻟﻤﺼﻔﻮﻓﮫ :
– 8اﻟﺪاﻟﮫ : Reverse
: ﺑﻌﺾ اﻻﻣﺜﻠﮫ
© To Sofyany Page 36
]March 25, 2013 [SOFYANY
وﻣﻦ اﻟﻤﺜﺎﻟﯿﻦ اﻟﺴﺎﺑﻘﯿﻦ ﻧﺮﯾﺪ ان ﻧﺴﻠﻂ اﻟﻀﻮء ﻋﻠﻰ ﺑﻌﺾ اﻻﺳﺎﺳﯿﺎت اﻟﮭﺎﻣﮫ ﺟﺪا ﻓﻰ
– 1ان اﺳﺘﺪﻋﺎء اﻟﺪوال ﯾﻜﻮن ﻋﻠﻰ ﺣﺴﺐ اﻟﻤﻌﺮف ﻟﮭﺎ او Access Modifier
– 2ان ﻛﺘﺎﺑﺔ اﻟﺪاﻟﮫ داﺧﻞ اﻟﻔﺼﯿﻞ او Classﻗﺒﻞ اﻟﺪاﻟﮫ اﻟﺮﺋﯿﺴﯿﮫ Mainاو ﺑﻌﺪھﺎ وﯾﻜﻮن
– 3ان اﺳﺘﺪﻋﺎء اى داﻟﮫ ﻻ ﯾﻜﻮن اﻻ ﻋﻦ طﺮﯾﻖ اﻧﺸﺎء ﻛﺎﺋﻦ ﺟﺪﯾﺪ ﻣﻦ اﻟﻔﺼﯿﻞ او Class
واﻟﺬى ﺗﺘﺒﻌﮫ اﻟﺪاﻟﮫ او اﻟﺬى ﺗﻢ اﻧﺸﺎﺋﮭﺎ ﺑﺪاﺧﻞ ﻛﻮاﺣﺪه ﻣﻦ ﻋﻨﺎﺻﺮه اﻻﺳﺎﺳﯿﮫ وﻻ ﯾﻜﻮن
ﻏﯿﺮ ذﻟﻚ اﻻ ﻓﻰ ﺣﺎﻟﮫ واﺣﺪه وھﻰ ان ﺗﻌﻄﻰ اﻟﻤﻌﺮف Staticوھﻮ اﻟﻮﺣﯿﺪ اﻟﺬى ﯾﺴﻤﺢ
ﺑﺄﺳﺘﺪﻋﺎء اﻟﺪاﻟﮫ ﺑﺸﻜﻞ ﻣﻨﻔﺮد دون اﻟﺤﺎﺟﮫ اﻟﻰ ﻛﺎﺋﻦ اﻟﻤﺨﻠﻖ ﻣﻦ اﻟﻔﺼﯿﻞ وﯾﻔﺴﺮ ھﺬا وﺿﻊ
ھﺬا اﻟﻤﻌﺮف داﺋﻤﺎ ﻗﺒﻞ اﻟﺪاﻟﮫ اﻟﺮﺋﯿﺴﯿﮫ Mainداﺧﻞ اى ﺑﺮﻧﺎﻣﺞ ﻓﻰ اﻟﺴﻰ ﺷﺎرب ﺣﺘﻰ
– 4ان اﻟﺪاﻟﮫ او ﻗﺪ ﯾﻜﻮن ﻟﮭﺎ اﻛﺜﺮ ﻣﻦ ﺑﺎراﻣﺘﺮ او ﻻ ﯾﻜﻮن ﻟﺪﯾﮭﺎ اى ﺑﺎراﻣﺘﺮات وﻗﺪ ﺗﻌﻮد
ﺑﻘﯿﻤﮫ واﺣﺪه او اﻛﺜﺮ ﻣﻦ ﻗﯿﻤﮫ او ﻻﺗﻌﻮد ﺑﻘﯿﻢ ﻋﻠﻰ اﻻطﻼق ﻟﻜﻦ ﯾﺠﺐ ان ﺗﻼﺣﻆ اﻟﻔﺮق
– 5ﻣﻦ اﻟﻤﻤﻜﻦ اﻋﻄﺎء اﻟﻘﯿﻢ اﻟﺘﻰ ﺗﻌﻮد ﺑﮭﺎ اﻟﺪوال ﻟﻤﺘﻐﯿﺮات ﻟﻜﻦ ﻣﻦ ﻧﻔﺲ ﻧﻮع اﻟﺒﯿﺎﻧﺎت
– 6ﻻﺑﺪ ﻣﻦ اﻋﻄﺎء ﻛﺎﻓﺔ اﻟﻘﯿﻢ ﻟﻠﺒﺎراﻣﺘﺮات اﻟﺘﻰ ﺗﺤﻤﻠﮭﺎ اﻟﺪاﻟﮫ داﺧﻞ اﻟﻜﻮد وﻻﺑﺪ ان ﺗﻜﻮن
ﻓﻰ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻰ ﻧﻘﻮم ﺑﻌﻤﻞ ﺑﺮﻧﺎﻣﺞ ﯾﻘﻮم ﺑﺒﻌﺾ اﻟﻌﻤﻠﯿﺎت اﻟﺮﯾﺎﺿﯿﮫ ﻟﻜﻦ -
© To Sofyany Page 39
]March 25, 2013 [SOFYANY
وھﻰ ارﺳﺎل اﻟﻘﯿﻤﮫ اﻟﻰ اﻟﺒﺎراﻣﺘﺮ ﻣﺒﺎﺷﺮﺗﺎ وﺗﻜﻮن ﻋﺒﺎره ﻋﻦ ﻧﺴﺦ Dataاﻻﺳﺎﺳﯿﮫ
وﻧﻘﻠﮭﺎ اﻟﻰ ﻣﻜﺎن ﻓﻰ اﻟﺬاﻛﺮه وﺑﺎﻟﺘﺎﻟﻰ ھﺬا اﺳﺘﻐﻼ ﺳﯿﻰء ﻟﻠﺬاﻛﺮه ﻻﻧﮫ ﯾﺎﺧﺬ ﻣﺴﺎﺣﮫ
اﻟﻄﺮﯾﻘﮫ اﻟﺜﺎﻧﯿﮫ وھﻰ اﻋﻄﺎء اﻟﺒﺎراﻣﺘﺮات ﻋﻦ طﺮﯾﻖ اﻻﺷﺎره اﻟﻰ ﻣﻜﺎن ﻣﻌﯿﻦ ﻓﻰ اﻟﺬاﻛﺮه
ﻻﺣﻆ ان اﺳﺘﺨﺪام
X A 10
REF
ﻻﺑﺪ ﻣﻦ اﻋﻄﺎء ﻗﯿﻢ ﻟﻠﺒﺎراﻣﺘﺮات ﻗﺒﻞ
اﺳﺘﺪﻋﺎء اﻟﺪاﻟﮫ اى اﻧﻚ ﺗﺪﺧﻞ اﻟﺒﯿﺎﻧﺎت ﺛﻢ
ﺗﻘﻮم ﺑﺎﺳﺘﺪﻋﺎء اﻟﺪاﻟﮫ ﻟﺘﺠﻤﻌﮭﻢ
Y B 20
ھﻰ ﻧﻔﺲ اﺳﺘﺨﺪام refﻟﻜﻦ اﻻﺧﺘﻼف ﻓﻰ اﻧﻚ ﺗﺴﺘﺪﻋﻰ اﻟﺪاﻟﮫ اوﻻ ﺛﻢ ﺗﻌﻄﯿﮭﺎ ﻗﯿﻤﺎ
ﻣﺘﻐﯿﺮات ﺗﻌﺮف داﺧﻞ اى blockﻣﻦ dataوﻻ ﺗﺴﺘﺨﺪم ﺧﺎرج ھﺬا blockﻣﺜﻞ اﻟﺤﻠﻘﺎت
ﻣﻦ اﻟﻤﻤﻜﻦ ﺑﻨﺎء اﻛﺜﺮ ﻣﻦ داﻟﮫ ﺑﻨﻔﺲ اﻻﺳﻢ ﻟﻌﻤﻞ ﻋﺪة وظﺎﺋﻒ ﺗﺤﺖ ﻣﺴﻤﻰ واﺣﺪ
ان ﻣﻔﮭﻮم اﻟﺒﺮﻣﺠﮫ اﻟﻜﺎﺋﻨﯿﺔ اﻟﺘﻮﺟﮫ ﻟﮭﻮ ﺑﺎﻻﺳﺎس ﯾﻌﺘﻤﺪ ﻋﻠﻰ اﻟﻨﻈﺮه اﻟﻤﺠﺮده ﻟﻠﺤﯿﺎه اﻟﺘﻰ
ﻧﻌﯿﺸﮭﺎ ذﻟﻚ ﺑﺄن ﻛﻞ ﺷﻰء ﻓﻰ ھﺬه اﻟﺤﯿﺎه ﻋﺒﺎره ﻋﻦ ﻣﺠﻤﻮﻋﮫ ﻣﻦ اﻟﻜﺎﺋﻨﺎت وﻟﮭﺎ ﺻﻔﺎﺗﮭﺎ
اﻟﺨﺎﺻﮫ وﻣﻤﯿﺰاﺗﮭﺎ واﻟﺸﻜﻞ اﻟﺘﻰ ﺗﺘﺼﺮف ﺑﮫ وﺗﺠﺪ ان اﻟﻄﺒﯿﻌﮫ ﻗﺪ رﺑﻄﺖ ﺑﯿﻦ ﻛﻞ
اﻻﺷﻜﺎل اﻟﻤﺨﺘﻠﻔﮫ ﻟﻠﺤﯿﺎه ﻛﻞ ﻣﻨﮭﻢ ﻟﮫ اﺳﻠﻮﺑﮫ اﻟﺨﺎص ﺑﺎﻟﺘﻌﺎﻣﻞ واﺳﻠﻮﺑﮫ اﻟﺨﺎص ﻓﻰ
اﻟﻄﺮﯾﻘﮫ اﻟﺘﻰ ﯾﺘﻌﺎﻣﻞ ﺑﮭﺎ ﻣﻊ اﻻﺧﺮ وذﻟﻚ اﻟﺮﺑﻂ ادى ﻓﻰ اﻟﻨﮭﺎﯾﮫ اﻟﻰ ﺗﻜﻮﯾﻦ ﻓﻀﺎء ﯾﺤﺘﻮى
ھﺬه اﻟﻜﺎﺋﻨﺎت ﺟﻤﯿﻌﺎ ﻟﻜﻰ ﺗﻮﺟﮫ اﻟﻰ ﻓﻜﺮة اﻟﻌﻮاﻟﻢ اﻟﻤﺘﻮازﯾﮫ ﻣﺒﺮﻣﺠﮫ طﺒﯿﻌﯿﺎ ﻻن ﺗﺘﻌﺎﻣﻞ ﻣﻊ
ﺑﻌﻀﮭﺎ ﻓﻰ ﺗﻌﺎون ﺑﺮﻣﺠﻰ ﻛﺎﻣﻞ وﺑﺎﻟﺘﺎﻟﻰ ارادو ﺗﻄﺒﯿﻖ ﺗﻠﻚ اﻟﻔﻜﺮه واﻟﺴﯿﺮ ﻋﻠﻰ ﺧﻄﺎھﺎ ﻓﻰ
ﻣﻔﮭﻮم اﻟﺒﺮﻣﺠﮫ اﻟﻜﺎﺋﻨﯿﺔ اﻟﺘﻮﺟﮫ ﻓﮭﻮ ﯾﻌﻄﻰ ﻓﻜﺮه ﻣﺠﺮده ﻟﻠﻨﻈﺎم ﻛﻜﻞ ﺛﻢ ﯾﻘﺴﻤﮫ اﻟﻰ
Encapsulation – 1
ان ﻣﺠﻤﻮﻋﮫ ﻣﻦ اﻟﻌﻨﺎﺻﺮ ﻟﮭﺎ ﻧﻔﺲ اﻟﺨﺼﺎﺋﺺ وﻟﮭﺎ ﻧﻔﺲ اﻟﺴﻤﺎت ﻣﻦ اﻟﻤﻤﻜﻦ ان ﺗﺠﺘﻤﻊ
داﺧﻞ ﻓﺼﯿﻞ واﺣﺪ وﯾﺴﻤﻰ Classوھﺬا اﻟﻔﺼﯿﻞ ھﻮ اﻟﺬى ﯾﻤﺜﻠﮭﺎ ﺑﻮﺟﮫ ﻋﺎم ﻟﻜﻦ ﻻ ﯾﺘﻌﺎﻣﻞ
-اذا ﻣﺎ اردﻧﺎ اﯾﺠﺎد اﻣﺜﻠﮫ ﻣﻦ اﻟﺤﯿﺎه ﻟﺪﯾﻨﺎ Classﯾﻤﺜﻞ اﻟﺒﺸﺮﯾﮫ وھﺬا اﻟﻔﺼﯿﻞ ﻟﮫ
ﺟﻤﯿﻊ ﺻﻔﺎت اﻟﺒﺸﺮﯾﮫ واﺳﻠﻮب ﺗﻌﺎﻣﻠﮭﺎ ﻣﻊ ﻏﯿﺮھﺎ واﻟﺬى ھﻮ ﻓﺼﯿﻞ رﺋﯿﺴﻰ ﻣﻦ
اذا اردﻧﺎ اﻧﺸﺎء ﻛﺎﺋﻦ ﻣﻦ ﻓﺼﯿﻞ اﻟﺒﺸﺮﯾﮫ ﻟﯿﻜﻦ اﻻﻧﺴﺎن اﻟﺬى ﯾﺤﯿﺎ ﻋﻠﻰ اﻻرض واى
وﻣﻦ اﻟﻤﻤﻜﻦ ان ﻧﻨﺸﻰء ﻓﺼﯿﻞ اﺧﺮ ﻣﻦ ﻓﻀﺎء اﻟﻜﻮن وﻟﯿﻜﻦ ﻓﺼﯿﻞ ﻟﻠﺤﯿﻮان
ﺳﻤﺎت وﺗﺼﺮﻓﺎت
– 2اﺳﺘﻄﻌﺖ ﺣﻤﺎﯾﺔ ﺑﯿﺎﻧﺎﺗﻚ اﻻﺳﺎﺳﯿﮫ ﻟﮭﺬا Objectﻣﻦ ﻣﺤﺎوﻟﺔ اﻟﻌﺒﺚ ﺑﮭﺎ او
ﻓﻰ اﻟﺠﺰء اﻟﺬى ﯾﻌﻄﻰ ﻟﮫ وھﻮ Methodsﻓﻘﻂ اﻧﺎ اﻋﻄﻰ ﻟﮭﺎ اﻟﻘﯿﻢ وھﻰ ﺗﻘﻮم
وﯾﺒﻘﻰ ھﻨﺎ اﻟﺴﺆال ﻛﯿﻒ ﻟﻰ ان اﺳﺘﺨﺪام ھﺬا اﻟﻔﺼﯿﻞ اﻟﻀﺨﻢ واﻟﻤﻠﯿﻰء ﺑﻌﺪة
وﺗﺎﺗﻰ اﻻﺟﺎﺑﮫ ﺑﺄن ﺑﻨﺎء اﻟﻔﺼﯿﻞ ﺷﻰء واﺳﺘﺨﺪام ﻣﺤﺘﻮﯾﺎﺗﮫ ﺷﻰء اﺧﺮ ﺑﻤﻌﻨﻰ ان
اﻟﻔﺼﯿﻞ اﻟﺬى ﯾﺴﻤﻰ اﻟﺒﺸﺮﯾﮫ ھﻮ ﻓﺼﯿﻞ ﻋﺎم ﯾﻄﻠﻖ ﻋﻠﻰ ﺑﻨﻰ اﻟﺒﺸﺮ ﻟﻜﻦ ﯾﺠﺐ ان ﯾﺠﺴﺪ
ﻓﻰ ﻋﻨﺼﺮ ﻣﻌﯿﻦ ﻟﻜﻰ ﺗﺴﺘﻄﯿﻊ ان ﺗﺘﻌﺎﻣﻞ ﻣﻌﮫ وھﺬا اﻟﻌﻨﺼﺮ اﻟﺬى ﯾﻤﺜﻠﮫ ھﻮ اﻻﻧﺴﺎن
وﺑﺎﻟﺘﺎﻟﻰ ﺳﻮف ﯾﺘﻢ اﻧﺸﺎء ﻋﻨﺼﺮ ﻣﻦ ﻛﻞ ﻓﺼﯿﻞ ﻟﻜﻰ ﺗﺴﺘﻄﯿﻊ ان ﺗﺴﺘﺨﺪ ﻛﺎﻓﺔ ﻋﻨﺎﺻﺮه
واﻟﺠﻮاب ھﻮ ان ﻧﻘﻮم ﺑﺎﻧﺸﺎء ﻛﺎﺋﻦ ﯾﺘﺒﻊ ھﺬا اﻟﻔﺼﯿﻞ وﺑﺎﻟﺘﺎﻟﻰ ﻓﮭﻮ ﯾﺴﺘﻄﯿﻊ اﺳﺘﺪﻋﺎء ﻛﺎﻓﺔ
Memory
X Y
X Y
Set data
Sum
Obj2
Avg
© To Sofyany Page 52
]March 25, 2013 [SOFYANY
ﺗﻮﺻﯿﺎت ھﺎﻣﮫ :ﯾﻔﻀﻞ ان ﺗﻜﻮن اﻟﻤﺘﻐﯿﺮات داﺧﻞ اﻟﻔﺼﯿﻞ ﺗﻌﻄﻰ اﻟﻤﻌﺮف Private
ﯾﻔﻀﻞ ان ﺗﻌﻄﻰ اﻟﺪوال داﺧﻞ اﻟﻔﺼﯿﻞ اﻟﻤﻌﺮف Publicﺣﺘﻰ ﺗﺴﺘﻄﯿﻊ اﺳﺘﺨﺪاﻣﮭﺎ ﺧﺎرج
اﻟﻔﺼﯿﻞ .
ﺳﻨﻘﻮم ﻓﻰ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﺑﺎﻋﻄﺎء ﻗﯿﻢ ﻟﻌﻨﺎﺻﺮ اﻟﻜﺎﺋﻨﯿﻦ اﻟﺬى ﺗﻢ ﺗﻌﺮﯾﻔﮭﻢ ﻣﻦ ﻧﻔﺲ اﻟﻔﺼﯿﻞ
ھﻨﺎك داﻟﺘﯿﻦ رﺋﯿﺴﺘﯿﻦ ﺗﻌﻄﻰ ﻗﯿﻤﺎ ﺛﺎﺑﺘﮫ Private membersوھﺬا ﯾﺤﺪث ﻣﻊ
اى ﻟﻐﮫ ﺗﺴﺘﺨﺪم اﻟﺒﺮﻣﺠﮫ ﻛﺎﺋﻨﯿﺔ اﻟﺘﻮﺟﮫ ﺣﯿﺚ ﺗﺴﺘﺨﺪم داﻟﺘﯿﻦ :
اﺳﻢ اﻟﺨﺎﺻﯿﮫ ﻻﺑﺪ ان ﯾﻜﻮن ھﻮ ﻧﻔﺴﮫ اﺳﻢ اﻟﻤﺘﻐﯿﺮ اﻟﺘﻰ ﺗﺘﻌﺎﻣﻞ ﻣﻌﮫ ﻣﻊ اﻟﻔﺎرق ﺑﺎن ﯾﻜﻮن
© To Sofyany Page 56
]March 25, 2013 [SOFYANY
ﻻﺣﻆ ان اﻟﻘﯿﻢ اﻋﻄﯿﺖ ﻟﻠﻤﺘﻐﯿﺮات ﻋﻦ طﺮﯾﻖ اﻟﻜﻠﻤﮫ setداﺧﻞ اﻟﺨﺎﺻﯿﮫ وﺗﻢ اظﮭﺎر
ان ھﺬا اﻟﻤﻌﺮف ﻟﮫ ﻣﯿﺰه ﺧﺎﺻﮫ ﺟﺪا داﺧﻞ اﻟﺴﻰ ﺷﺎرب ﺣﯿﺚ اﻧﮫ ﯾﻘﻮم ﺑﻤﺸﺎرﻛﺔ اﻟﻌﻀﻮ
اﻟﺬى ﯾﻌﺮف ﺑﻮاﺳﻄﺘﮫ ﺑﯿﻦ ﺟﻤﯿﻊ اﻟﻜﺎﺋﻨﺎت اﻟﺘﻰ ﺗﻌﺮف ﻣﻦ ﻧﻔﺲ اﻟﻔﺼﯿﻞ وﯾﻠﺰم ﻟﺘﻌﺮﯾﻒ
ان اى static memberﯾﻨﺘﻤﻰ اﻟﻰ اﻟﻔﺼﯿﻞ ﻣﺒﺎﺷﺮﺗﺎ وﻟﯿﺲ اﻟﻜﺎﺋﻦ وھﺬه ﻣﯿﺰه
ﺧﺼﺎﺋﺼﮭﺎ :
ﻓﻰ ﺣﺎﻟﺔ ﻋﺪم ﺑﻨﺎء ھﺬه اﻟﺪاﻟﮫ ﺑﺪاﺧﻞ اى ﻓﺼﯿﻞ ﻓﺴﯿﺘﻢ وﺿﻊ ﻗﯿﻤﮫ اﺑﺘﺪاﺋﯿﮫ ﻻﻋﻀﺎﺋﮫ
ﻛﺎﻟﺘﺎﻟﻰ :
String = null
Boolean = false
Int = 0
Float = 0.0
وذﻟﻚ ﻻن داﻟﺔ اﻟﺒﻨﺎء ﯾﺘﻢ ﺑﻨﺎﺋﮭﺎ ﺗﻠﻘﺎﺋﯿﺎ داﺧﻞ اى ﻓﺼﯿﻞ وھﺬه ﻣﯿﺰه ھﺎﻣﮫ ﺟﺪا داﺧﻞ
اﻟﺴﻰ ﺷﺎرب ﺣﯿﺚ اﻧﮫ ﯾﺘﻢ ﺗﺨﺰﯾﻦ ھﺬه اﻟﻘﯿﻢ داﺧﻞ اﻟﺬاﻛﺮه ﻣﻨﻌﺎ ﻟﺘﺨﺰﯾﻦ ﻗﯿﻢ
ﻋﺸﻮاﺋﯿﮫ وﺑﺎﻟﺘﺎﻟﻰ ﻓﺎﻧﺖ ﺗﻌﺮف ﻣﺴﺒﻘﺎ ﻣﺎ اﻟﺬى ﯾﻮﺟﺪ داﺧﻞ ﻋﻨﻮاﯾﻦ اﻟﺬاﻛﺮه ﺑﺎﻟﻨﺴﺒﮫ
ﻟﻠﻤﺘﻐﯿﺮات ﺣﺘﻰ وﻟﻮ ﻟﻢ ﺗﻌﻄﯿﮭﺎ ﻗﯿﻤﺎ اﺑﺘﺪاﺋﯿﮫ وﻧﺴﺘﻄﯿﻊ اﻟﺘﺎﻛﺪ ﺑﺎﻟﻤﺜﺎل اﻟﺘﺎﻟﻰ :
© To Sofyany Page 61
]March 25, 2013 [SOFYANY
وﺗﺴﺘﺨﺪم ﻓﻰ وﺿﻊ ﻗﯿﻢ اﺑﺘﺪاﺋﯿﮫ ﺛﺎﺑﺘﮫ داﺧﻞ اى ﻛﺎﺋﻦ وﺗﻌﺮف ﺑﻨﻔﺲ اﺳﻢ Classوﻓﻰ
ھﺬا اﻟﻨﻮع ﯾﻜﻮن ﻟﺠﻤﯿﻊ ﻋﻨﺎﺻﺮ اﻟﻔﺼﯿﻞ ﻧﻔﺲ اﻟﻘﯿﻢ ﻣﻊ ﺗﻌﺮﯾﻒ ﻛﺎﺋﻦ ﺟﺪﯾﺪ ﻣﻦ ﻧﻔﺲ
اﻟﻔﺼﯿﻞ
وﺗﺴﺘﺨﺪم ﻟﻮﺿﻊ ﻗﯿﻢ اﺑﺘﺪاﺋﯿﮫ ﻣﺨﺘﻠﻔﮫ داﺧﻞ اﻟﻜﺎﺋﻦ وﻓﻰ ھﺬا اﻟﻨﻮع ﯾﻜﻮن ھﻨﺎك ﻗﯿﻢ
ﻧﺮﯾﺪ ﻋﻤﻞ ﻣﺜﺎل ﺑﺎﺳﺘﺨﺪام Classesوذﻟﻚ ﻟﺤﺴﺎب اﻟﻤﺴﺎﺣﺎت ﻟﺜﻼﺛﺔ اﺷﻜﺎل ﻣﺨﺘﻠﻔﮫ
ﻟﻜﻦ ھﻨﺎك طﺮق اﻛﺜﺮ اﺣﺘﺮاﻓﯿﮫ ﻟﻜﺘﺎﺑﺔ ﻣﺜﻞ ھﺬه اﻟﺒﺮاﻣﺞ وذﻟﻚ ﻻﻧﮫ ﺗﻢ ﺗﻜﺮار ﻧﻔﺲ
اﻟﻤﺘﻐﯿﺮات وﻧﻔﺲ اﻟﺪوال ﻓﻰ ﺟﻤﯿﻊ Classesوﻟﺘﻔﺎدى ذﻟﻚ ﯾﺠﺐ ان ﺗﺘﻌﺮف ﻋﻠﻰ ﺷﻰء
ان اﻟﻮراﺛﮫ ھﻰ ﻋﺒﺎره ﻋﻦ اﺷﺘﻘﺎق ﻓﺼﯿﻞ ﻣﻦ اﺧﺮ ﺗﺤﻤﻞ ﻧﻔﺲ ﺧﺼﺎﺋﺼﮭﺎ وھﺬه ﻣﯿﺰه
ھﺎﻣﮫ ﺟﺪا داﺧﻞ اﻟﺒﺮﻣﺠﮫ ﻛﺎﺋﻨﯿﺔ اﻟﺘﻮﺟﮫ وﺳﺒﻖ ﻟﻨﺎ ان ﺷﺮﺣﺖ ھﺬا اﻟﺠﺰء ﻓﻰ ﻛﺘﺎب ھﻨﺪﺳﺔ
– 1اﻧﻚ ﺗﺴﺘﻄﯿﻊ اﺷﺘﻘﺎق ﻓﺼﯿﻞ ﻣﻦ اﺧﺮ ﯾﺮث ﺟﻤﯿﻊ اﻟﻌﻨﺎﺻﺮ اﻟﻤﻮﺟﻮده ﻓﯿﮫ وﺑﺎﻟﺘﺎﻟﻰ
ﺗﻮﻓﺮ ﻋﻠﻰ ﻧﻔﺴﻚ ﻋﻨﺎء اﻋﺎدة ﺑﻌﺾ اﻻﻛﻮاد ﯾﺘﻢ ﺗﻜﺮارھﺎ ﻓﻰ اﻟﺒﺮﻧﺎﻣﺞ ﻛﻤﺜﺎل اﻟﻤﺴﺎﺣﺎت
اﻟﺴﺎﺑﻖ
– 2اﻧﻚ ﺗﺴﺘﻄﯿﻊ اﻻﺿﺎﻓﮫ داﺧﻞ اﻟﻔﺼﯿﻞ اﻟﻤﺸﺘﻖ اﻟﻰ ﻋﻨﺎﺻﺮ اﻟﻔﺼﯿﻞ اﻟﺮﺋﯿﺴﻰ
– 1اﻟﻨﻮع اﻻول اﻧﻚ ﺗﺸﺘﻖ ﻓﺼﯿﻞ ﺟﺪﯾﺪ ﯾﺤﻤﻞ ﺟﻤﯿﻊ ﻋﻨﺎﺻﺮ اﻟﻔﺼﯿﻞ اﻟﺮﺋﯿﺴﻰ دون اى
اﺿﺎﻓﺎت
ﺗﻄﺒﯿﻖ اﻟﻮراﺛﮫ ﻋﻠﻰ ﻣﺜﺎل اﻟﻤﺴﺎﺣﺎت ﺳﻮف ﻧﺒﻨﻰ ﻓﺼﯿﻞ رﺋﯿﺴﻰ ﯾﺴﻤﻰ اﻟﺸﻜﻞ او
Privateواﻟﺴﺒﺐ ﻟﻜﻰ ﺗﺴﺘﻄﯿﻊ اﺳﺘﺨﺪام اﻟﻤﺘﻐﯿﺮ ﻣﻦ ﻓﺼﯿﻞ ﻣﺸﺘﻖ وذﻛﺮﻧﺎ ھﺬا ﻣﻦ ﻗﺒﻞ
اﻟﺘﻌﺪﯾﻞ ﻋﻠﻰ ﺑﻌﺾ اﻟﺨﺼﺎﺋﺺ داﺧﻞ اﻟﻔﺼﯿﻞ اﻟﺮﺋﯿﺴﻰ واﺳﺘﺨﺪام ﻗﺎﻋﺪة :
ﺗﺴﺘﻄﯿﻊ اﻟﺘﻌﺪﯾﻞ ﻋﻠﻰ ﺑﻌﺾ اﻟﺨﺼﺎﺋﺺ اﻟﺘﻰ ﻛﺎﻧﺖ ﻣﻮﺟﻮده داﺧﻞ اﻟﻔﺼﯿﻞ اﻻب وذﻟﻚ
ﺑﺎﺳﺘﺨﺪام اﻟﻜﻠﻤﮫ اﻟﺜﺎﺑﺘﮫ داﺧﻞ اﻟﺴﻰ ﺷﺎرب Overridingواﺳﺘﺨﺪام اﺳﻢ اﻟﺪاﻟﮫ اﻟﺘﻰ ﺗﺮﯾﺪ
وﺣﺘﻰ ﺗﻜﺘﻤﻞ ﻗﺎﻋﺪة اﻟﺘﻐﯿﯿﺮ وﺗﻜﻮن ﺻﺤﯿﺤﮫ ﻓﻌﻨﺪ ﺑﻨﺎء اﻟﺪاﻟﮫ ﻓﻰ اﻟﻔﺼﯿﻞ اﻻﺳﺎﺳﻰ واﻟﺘﻰ
ﺗﻨﻮى اﻟﺘﻐﯿﯿﺮ ﻓﯿﮭﺎ ﻣﺴﺘﻘﺒﻠﯿﺎ ﻋﻨﺪ اﺷﺘﻘﺎق ﻓﺼﺎﺋﻞ اﺧﺮى ﻣﻦ ھﺬا اﻟﻔﺼﯿﻞ ﻓﯿﺠﺐ ان ﺗﻌﻄﻰ
اﻟﻤﻌﺮف Virtual
ھﻨﺎك ﻣﯿﺰه اﺧﺮى داﺧﻞ اﻻﺷﺘﻘﺎق وھﻰ اﻧﻚ ﺗﺴﺘﻄﯿﻊ اﺳﺘﺪﻋﺎء اﻟﺪوال ﻓﻰ اﻟﻔﺼﯿﻞ
اﻻﺳﺎﺳﻰ داﺧﻞ اﻟﻔﺼﯿﻞ اﻟﻤﺸﺘﻖ وذﻟﻚ ﺑﺎﺳﺘﺨﺪام اﻟﻜﻠﻤﮫ اﻟﻤﻌﺮﻓﮫ داﺧﻞ اﻟﻠﻐﮫ Base
ﻋﻤﻠﯿﺔ اﻻﺷﺘﻘﺎق اﻟﻤﺘﺘﺎﺑﻊ ﻟﻔﺼﯿﻞ ﻣﻦ اﺧﺮ ﺑﻤﻌﻨﻰ ان ﻋﻤﻠﯿﺔ اﺷﺘﻘﺎق ﺗﻤﺖ ﻣﻦ ﻓﺼﯿﻞ
رﺋﯿﺴﻰ ﺗﻠﺘﮭﺎ ﻋﻤﻠﯿﺔ اﺷﺘﻘﺎق ﻣﻦ اﻟﻔﺼﯿﻞ اﻟﻤﺸﺘﻖ وھﻜﺬا ﻣﻤﺎ ﯾﻌﻄﯿﮭﺎ ﺷﻜﻞ ھﺮﻣﻰ
وﻻﺣﻆ اﻧﻚ ﻓﻰ ﻛﻞ ﻣﺮه ﺗﺸﺘﻖ ﻓﯿﮭﺎ ﻓﺼﯿﻞ ﻣﻦ اﻻﺧﺮ ﺗﺴﺘﻄﯿﻊ ان ﺗﻌﺪل او ﺗﻀﯿﻒ
اﻟﺨﺼﺎﺋﺺ اﻻﺳﺎﺳﯿﮫ
ﻣﻨﻊ اﻟﻮراﺛﮫ او اﻻﺷﺘﻘﺎق داﺧﻞ اﻟﺒﺮﻣﺠﮫ ﻛﺎﺋﻨﯿﺔ اﻟﺘﻮﺟﮫ ﺣﻔﺎظﺎ ﻋﻠﻰ ﻓﺼﯿﻞ ﻣﻌﯿﻦ ﻣﻦ
اﻻﺷﺘﻘﺎق وﺗﺤﺪث ﻛﺜﯿﺮا ﻣﻊ Classesاﻟﻤﺒﻨﯿﮫ داﺧﻞ اﻟﺴﻰ ﺷﺎرب اﺳﺎﺳﺎ واﻟﺘﻰ ﻗﺎﻣﺖ
ﺷﺮﻛﺔ ﻣﺎﯾﻜﺮوﺳﻮﻓﺖ ﺑﺒﺮﻣﺠﺘﮭﺎ ﺣﻔﺎظﺎ ﻋﻠﻰ ﺣﻘﻮق ﻣﻠﻜﯿﺔ اﻟﻜﻮد وﺗﺴﻤﺢ ﺑﺎﺷﺘﻘﺎق ﺑﻌﺾ
اﻟﻔﺼﺎﺋﻞ اﻻﺧﺮى
© To Sofyany Page 71
]March 25, 2013 [SOFYANY
ان ﻣﻔﮭﻤﻮم Polymorphismداﺧﻞ اﻟﺴﻰ ﺷﺎرب ھﻮ ﺗﻤﺎﻣﺎ ﻛﻤﻔﮭﻮم اﻟﺘﻌﺪﯾﻞ ﻋﻠﻰ ﺑﻌﺾ
ﺑﺒﻨﺎء Classاﻻﺳﺎﺳﻰ دون ﻋﻤﻞ ﺗﻜﻮﯾﺪ ﻟﮫ ﺛﻢ ﺑﻌﺪ ذﻟﻚ ﺗﻌﺪل وﺗﻘﻮم ﺑﻌﻤﻞ اﻻﻛﻮاد ﻓﻰ
اﻟﻔﺼﺎﺋﻞ اﻟﻤﺸﺘﻘﮫ
وﻣﻌﻨﺎه Classﺑﺪون ﻛﻮد وھﻮ ﻣﺠﺮد Classﻋﺎدى ﻟﻜﻦ دون ﺳﻄﺮ ﻛﺪو واﺣﺪ واﻟﮭﺪف
– 2ﺟﻤﯿﻊ اﻟﺪوال واﻟﺨﻮاص اﻟﺘﻰ ﺗﻜﺘﺐ ﺑﺪاﺧﻠﮫ ﯾﺠﺐ ان ﺗﻌﻄﻰ ﻧﻔﺲ اﻟﻤﻌﺮف وھﻮ
Abstractوﻻ ﯾﺠﻮز ﺗﻌﺮﯾﻒ اى ﻣﺘﻐﯿﺮات ﺑﺪاﺧﻠﮫ او اﻧﺸﺎء ﻛﺎﺋﻦ ﻣﻨﮫ ﻓﻘﻂ ﺗﻌﺮﯾﻒ
اﻟﺪوال واﻟﺨﻮاص
© To Sofyany Page 73
]March 25, 2013 [SOFYANY
ﻟﻨﺮى اﻻن اﺷﺘﻘﺎق classﺟﺪﯾﺪ ﻣﻦ اﻟﺴﺎﺑﻖ وﻧﺮى ﻣﺎذا ﯾﻜﻮن ﺷﻜﻠﮫ :
وھﻰ ﺑﺪﯾﻞ ﻋﻦ ﺗﻌﺪد اﻟﻮراﺛﮫ اﻟﮭﺮﻣﯿﮫ ﻛﻤﺎ اﻧﮫ ﯾﺘﻤﯿﺰ ﺑﻌﻤﻞ ﻧﺴﺨﮫ ﻣﻨﮫ ﺑﺎﻟﻮراﺛﮫ ﻟﻜﻦ
ﻛﻤﺎ اﻧﮫ ﯾﻤﻜﻦ ﻋﻤﻞ ﺗﻜﻮﯾﺪ ﻻﻛﺜﺮ ﻣﻦ Interfaceﻣﻌﺎ واﻟﺸﻜﻞ اﻟﻌﺎم ﻟﮫ ﯾﻜﻮن ﻛﺎﻟﺘﺎﻟﻰ :
ﻣﻠﺤﻮظﮫ ھﺎﻣﮫ :ﻻ ﯾﻤﻜﻦ اﻧﺸﺎء ﻛﺎﺋﻦ ﻣﻦ اﻟﻮاﺟﮭﺎت او Interfaceﻟﻜﻦ ﯾﻤﻜﻦ اﺷﺘﻘﺎق
ھﺬا ھﻮ اﻻﺳﮭﻞ اﻛﺘﺸﺎﻓﮫ ﻓﻮر ﻛﺘﺎﺑﺔ اﻟﻜﻮد واﻟﺴﺒﺐ ان compilerﯾﻌﺘﺮض ﻋﻠﯿﮭﺎ ﻻﻧﮭﺎ
ﻏﯿﺮ ﻣﻼﺋﻤﮫ ﻟﻠﻘﻮاﻋﺪ اﻟﺘﻰ ﺑﻨﯿﺖ ﻋﻠﯿﮭﺎ اﻟﻠﻐﮫ او اﻟﺘﻰ ﺗﻌﻤﻞ ﺑﮭﺎ داﺧﻞ ﻟﻐﮫ ﻣﻌﯿﻨﮫ
اﻻﺧﻄﺎء اﻟﻤﻨﻄﻘﯿﮫ وھﺬه اﻻﻧﻮاع ﺗﻈﮭﺮ ﻋﻨﺪ اﻟﺘﻨﻔﯿﺬ ﯾﻜﻮن اﻟﻜﻮد ﻓﯿﮭﺎ ﺻﺤﯿﺤﺎ ﻟﻜﻦ ﺳﯿﺮ
اﻟﺒﺮﻧﺎﻣﺞ ﻏﯿﺮ ﻣﻨﻄﻘﻰ ﻛﺎﻟﻘﺴﻤﮫ ﻋﻠﻰ اﻟﺼﻔﺮ ﻣﺜﻼ وﯾﺴﻤﻰ ھﺬا اﻟﻨﻮع Exception
او اﻻﺳﺘﺜﻨﺎﺋﺎت
ھﺬه ھﻮ اﻟﻨﻮع اﻻﺷﮭﺮ وﻻﯾﻮﺟﺪ ﺑﺮﻧﺎﻣﺞ ﺗﻘﺮﯾﺒﺎ ﯾﺨﻠﻮ ﻣﻨﮫ وھﻰ ﻧﺴﯿﺎن ﺣﺬف ﻣﺘﻐﯿﺮ ﻣﻦ
اﻟﺬاﻛﺮه ﻣﺜﻼ ﻋﻨﺪ ﻏﻠﻖ اﻟﺒﺮﻧﺎﻣﺞ وﻟﺬﻟﻚ ﺗﻜﻮن ھﻨﺎك ﻋﺪة ﻧﺴﺦ ﺗﺠﺮﯾﺒﯿﮫ ﻻﺻﻄﯿﺎد ﻣﺜﻞ ھﺬه\
اﻻﺧﻄﺎء
© To Sofyany Page 78
]March 25, 2013 [SOFYANY
ﻣﺜﯿﻠﺘﮭﺎ ﻣﻦ Array
وﯾﻌﺪ ﻓﺌﺔ Array Listھﻰ اھﻢ classﻓﯿﮭﺎ وﺗﻌﺮف ﻋﻠﻰ اﻧﮭﺎ ﻗﺎﺋﻤﮫ ﻣﻦ Arrayﻟﮭﺎ ﻧﻔﺲ
اﻟﻤﺮﻛﺒﮫ وﻟﮭﺎ اﯾﻀﺎ ﻣﺰاﯾﺎ اﻟﻘﻮاﺋﻢ او Listداﺧﻞ ﻟﻐﺔ اﻟﺒﺮﻣﺠﮫ ﻓﮭﻰ اداه اﻗﻮى ﻣﻦ ﻋﻤﻞ
اﻟﻤﺼﻔﻮﻓﺎت
وھﺬه طﺮﯾﻘﮫ ﻟﺘﺮﺗﯿﺐ اﻟﻜﻮد وﺟﻌﻠﮫ ﺿﻤﻦ ﻧﻄﺎﻗﺎت ﻣﻌﯿﻨﮫ ﻟﻌﺪم اﻟﺘﺸﻮﯾﺶ وﺗﺴﺘﺨﺪم
ﺗﻌﺘﺒﺮ اﻟﺘﻌﻠﯿﻘﺎت ﺟﺰء ھﺎم ﺟﺪا ﻻ ﯾﺴﺘﮭﺎن ﺑﮫ ﺧﺎﺻﮫ داﺧﻞ اﻟﻤﺸﺎرﯾﻊ اﻟﺘﻰ ﺗﺤﺘﺎج اﻟﻰ
ﺷﻔﺮه ﻣﺼﺪرﯾﮫ ﺿﺨﻤﮫ ﻛﻘﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ﻣﺜﻼ وﻟﮭﺎ ﻓﺎﺋﺪه ﻛﺒﯿﺮه ﺟﺪا ﻋﻨﺪ اﻟﺮﺟﻮع ﻣﺮه
© To Sofyany Page 83
]March 25, 2013 [SOFYANY
اﻧﺘﮭﻰ اﻟﺠﺰء اﻻول ﻣﻦ ھﺬا اﻟﻜﺘﺎب ﻣﻦ اﺳﺎﺳﯿﺎت اﻟﺒﺮﻣﺠﮫ ﻓﻰ ﻟﻐﺔ اﻟﺴﻰ ﺷﺎرب
اﻋﺘﻤﺪ ﻋﻠﻰ اﻟﻤﻌﻠﻮﻣﮫ اﻟﻤﺒﺎﺷﺮه واھﺘﻢ ﺑﮭﺎ اﻛﺜﺮ وﻋﺬرا ﻋﻠﻰ ﻋﺪم اﻻھﺘﻤﺎم ﺑﺎﻟﺘﻨﺴﯿﻖ
memorycode_84@yahoo.com