برمجة موجهة بالكائنات بلغة الجافا PDF

Summary

هذه وثيقة توضح مبادئ البرمجة الموجهة بالكائنات بلغة الجافا. تُقدم مفهومًا عامًا للبرمجة الموجهة بالكائنات وأهميتها.

Full Transcript

 ◘ ‫◘ اﻟﺒــﺮﻣــﺠـﺔ اﻟﺸــﯿﺌـﯿــﺔ‬ ◘ | Object-Oriented Programming| ◘  Object-Oriented Programming ‫اﻟﺪرس اﻷو...

 ◘ ‫◘ اﻟﺒــﺮﻣــﺠـﺔ اﻟﺸــﯿﺌـﯿــﺔ‬ ◘ | Object-Oriented Programming| ◘  Object-Oriented Programming ‫اﻟﺪرس اﻷول ‪:‬‬ ‫ﻣﻌﻧﻰ اﻟﺑرﻣﺟﺔ اﻟﺷﯾﺋﯾﺔ‪:: oop‬‬ ‫ھﻲ ﻋﺑﺎرة ﻋن أﺳﻠوب ﺟدﯾد ﻣن أﺳﺎﻟﯾب اﻟﺑرﻣﺟﺔ ﺣﯾث أﺻﺑﺣت وﺣدة ﺑﻧﺎء اﻟﺑرﻧﺎﻣﺞ ھﻲ اﻟﺻﻧف ‪ class‬واﻟذي ﯾﺣوي ﻋﻠﻰ‬ ‫اﻟﺑﯾﺎﻧﺎت ‪ data‬واﻟﻌﻣﻠﯾﺎت ) اﻟدوال( ‪.functions‬‬ ‫ﺗﺒﻨﻰ ﻓﻜﺮة اﻟﺒﺮﻣﺠﺔ ﺑﻮاﺳﻄﺔ اﻷھﺪاف )‪ (OOP‬ﻋﻠﻰ اﺳﺘﻌﻤﺎل اﻟﮭﺪف )‪ (Object‬ﻛﻮﺣﺪة ﺑﺮﻣﺠﺔ ﺑﻤﻌﻨﻰ اﻧﮫ ﺑﺪﻻ ﻣﻦ‬ ‫اﺳﺘﻌﻤﺎل اﻟﺪوال واﻷواﻣﺮ ﻟﺒﻨﺎء اﻟﺒﺮﻧﺎﻣﺞ ﻣﻤﺎ ﯾﻀﻄﺮ اﻟﻤﺒﺮﻣﺞ ﻹﻋﺎدة ﻛﺘﺎﺑﺔ اﻷواﻣﺮ ﻛﻞ ﻣﺮة ﻟﺘﺤﻘﯿﻖ ﻓﻜﺮة ﻣﻌﯿﻨﺔ وھﺬه‬ ‫ﻛﺎﻧﺖ ﻓﻜﺮة اﻟﺒﺮﻣﺠﺔ اﻟﺘﻘﻠﯿﺪﯾﺔ وﻟﻜﻦ أﺗﺖ اﻟﺒﺮﻣﺠﺔ ﺑﻮاﺳﻄﺔ اﻷھﺪاف )( ﻟﺘﺠﻌﻞ وﺣﺪة ﺑﻨﺎء اﻟﺒﺮﻣﺠﺔ ﻛﺒﯿﺮة وھﻰ ھﺪف‬ ‫‪ object‬أو ﻓﺼﯿﻠﺔ ‪ class‬وﺑﺎﻟﺘﺎﻟﻲ ﯾﺘﻢ إﻋﺪاد ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﻔﺼﺎﺋﻞ اﻟﻌﺎﻣﺔ ‪classes‬اﻟﺘﻲ ﺗﻠﺒﻲ ﻣﻌﻈﻢ ﻣﺘﻄﻠﺒﺎت إﻋﺪاد‬ ‫ﺑﺮﻧﺎﻣﺞ واﻟﺘﻲ ﯾﺤﺘﺎﺟﮭﺎ اﻟﻤﺒﺮﻣﺞ ﺣﯿﺚ إن ﺑﻌﺾ اﻟﻤﺒﺮﻣﺠﯿﻦ ﯾﺸﺒﮫ اﻟﺒﺮﻣﺠﺔ ﺑﻮاﺳﻄﺔ اﻷھﺪاف ﺑﺎﻟﺒﻨﺎء ﺑﺎﺳﺘﻌﻤﺎل اﻟﻤﺒﺎﻧﻲ‬ ‫اﻟﺠﺎھﺰة واﻟﺒﺮﻣﺠﺔ اﻟﺘﻘﻠﯿﺪﯾﺔ اﻟﻘﺪﯾﻤﺔ ﺗﺸﺎﺑﮫ اﻟﺒﻨﺎء ﺑﺎﺳﺘﻌﻤﺎل اﻷدوات اﻷوﻟﯿﺔ وﺑﺎﻟﺘﺎﻟﻲ اﻟﻔﺮق ﺑﯿﻨﮭﻤﺎ ﻛﺒﯿﺮ ﺟﺪا ﻓﻲ‬ ‫اﻟﺴﺮﻋﺔ‪.‬‬ ‫وﻟﮭﺎ ﻋدة ﻣﺳﻣﯾﺎت ﻣﻧﮭﺎ‪..::‬‬ ‫‪ -1‬اﻟﺑرﻣﺟﺔ ﻏرﺿﯾﺔ اﻟﺗوﺟﺔ‪.‬‬ ‫‪ -2‬اﻟﺑرﻣﺟﺔ اﻟﻛﺎﺋﻧﯾﺔ اﻟﻣوﺟﮭﺔ‪.‬‬ ‫أﺳﻠوب اﻟﺑرﻣﺟﺔ اﻟﺷﯾﺋﯾﺔ‪:.‬‬ ‫ﻋﺎدة ﻣﺎ ﺗﻛون اﻟﺑراﻣﺞ ﻣن ھذا اﻷﺳﻠوب ﻣﻌﻘدة ﺑﺷﻛل ﻛﺑﯾر ﺣﯾث ﺗﻘﺳﯾم اﻟﺑرﻧﺎﻣﺞ إﻟﻰ ﻣﺟﻣوﻋﺔ ﻣن اﻟﻣﮭﺎم اﻟرﺋﯾﺳﯾﺔ وﻣن ﺛم ﺗﻘﺳم‬ ‫إﻟﻰ ﻣﮭﺎم ﻓرﻋﯾﺔ ﻋﻠﻰ ﺣﺳب درﺟﺔ اﻟﺗﻌﻘﯾد ﻟﻠﻣﮭﺎم اﻟرﺋﯾﺳﯾﺔ ﻟذﻟك ﻓﺎن اﻟﺑرﻣﺟﺔ اﻟﮭﯾﻛﻠﯾﺔ ﺗﻧﺗﮭﺞ اﻟﻧﮭﺞ ) ﻣن اﻷﻋﻠﻰ إﻟﻰ اﻷﺳﻔل(‬ ‫‪.Top Down‬‬ ‫ﻋﯾوب ھذا اﻷﺳﻠوب ‪ :‬اﻟﺑرﻣﺟﺔ اﻟﮭﯾﻛﻠﯾﺔ‪.::‬‬ ‫‪ -1‬ﺻﻌوﺑﺔ ﻓﺻل اﻟﺑﯾﺎﻧﺎت ﻋﻠﻰ اﻟﻌﻣﻠﯾﺎت‪.‬‬ ‫‪ -2‬إﻋﺎدة إﻧﺷﺎء اﻟﺣﻠول وﻋدة إﻋﺎدة اﺳﺗﺧداﻣﮭﺎ‪.‬‬ ‫اﻟﻣﻔﺎھﯾم اﻷﺳﺎﺳﯾﺔ ﻟﻠﺑرﻣﺟﺔ اﻟﺷﯾﺋﯾﺔ‪:.‬‬ ‫‪ -1‬اﻟﻔﺻﯾﻠﺔ‪class :‬‬ ‫ﻣﻌﻨﻰ اﻟﻔﺼﯿﻠﺔ ‪class‬‬ ‫اﻟﻔﺼﯿﻠﺔ ‪ class‬ھﻲ أﺳﺎس اﻟﺒﺮﻣﺠﺔ ﺑﻮاﺳﻄﺔ اﻷھﺪاف واﻟﺘﻲ ﯾﺒﻨﻰ ﻋﻠﯿﮭﺎ اﻟﺒﺮﻧﺎﻣﺞ وأﺧﺬت ﻓﻜﺮة اﻟﻔﺼﯿﻠﺔ‬ ‫‪class‬ﻣﻦ اﻟﻮاﻗﻊ ﻓﻜﻞ ﻋﻨﺼﺮ ﻣﻦ ﻋﻨﺎﺻﺮ اﻟﺤﯿﺎة ﻋﺒﺎرة ﻋﻦ ﻓﺼﯿﻠﺔ ‪ class‬ﻓﻨﺴﺘﻄﯿﻊ ان ﻧﻄﻠﻖ ﻋﻠﻰ ﺟﻤﯿﻊ‬ ‫اﻟﺴﯿﺎرات أﻧﮭﺎ ﻣﻦ ﻓﺼﯿﻠﺔ ‪ car‬ﻣﻊ ﺑﻌﺾ اﻻﺧﺘﻼﻓﺎت‪ ،‬وﯾﻤﻜﻨﻚ أن ﺗﻄﻠﻖ ﻋﻠﻰ اﻟﻄﯿﻮر ﻓﺼﯿﻠﺔ ‪bird‬اى‬ ‫طﺎﺋﺮ وھﻜﺬا ﺗﻨﺘﻤﻲ ﺟﻤﯿﻊ اﻟﻌﻨﺎﺻﺮ اﻟﻰ ﻓﺼﺎﺋﻞ ‪ ، classes‬وﻛﻞ ﻓﺼﯿﻠﺔ ﺗﺴﺘﻄﯿﻊ ﺗﻤﺘﯿﻠﮭﺎ ﺑﻌﻨﺼﺮﯾﻦ ھﻤﺎ‬ ‫اﻟﺒﯿﺎﻧﺎت واﻟﺪوال )‪ (methods, data‬ﻓﻤﺜﻼ ﻓﺼﯿﻠﺔ اﻟﻤﻮظﻒ ُ ‪ Employee‬ﺑﯿﺎﻧﺎﺗﮭﺎ ھﻰ ﺑﯿﺎﻧﺎت اﻟﻤﻮظﻒ‬ ‫اﻟﻌﺎﻣﺔ ﻣﺜﻞ ﻛﻮد اﻟﻤﻮظﻒ ‪ ،‬اﺳﻢ اﻟﻤﻮظﻒ ‪،‬ﻋﻨﻮان اﻟﻤﻮظﻒ ‪،‬ﺗﻠﯿﻔﻮن اﻟﻤﻮظﻒ‪ ،‬وﺑﺎﻗﻰ ﺑﯿﺎﻧﺎﺗﮫ ‪ ،‬وﻛﺬﻟﻚ‬ ‫اﻟﺪوال )‪ (methods‬ھﻰ دوال ﺗﺤﻘﯿﻖ اﻟﻌﻤﻠﯿﺎت اﻟﺘﻰ ﯾﻤﻜﻦ ان ﺗﺘﻢ ﻋﻠﻰ اﻟﻤﻮظﻒ ﻣﺜﻞ ﻋﻤﻠﯿﺔ اﺿﺎﻓﺔ‬ ‫ﻣﻮظﻒ ﺟﺪﯾﺪ ‪،‬ﺣﺬف ﻣﻮظﻒ ﻣﻮﺟﻮد‪ ,‬ﺗﻌﺪﯾﻞ ﺑﯿﺎﻧﺎت ﻣﻮظﻒ وﺟﻤﯿﻊ اﻟﻌﻨﺎﺻﺮ ﯾﻤﻜﻦ ﺗﻤﺘﯿﻠﮭﺎ ﺑﮭﺬه اﻟﻄﺮﯾﻘﺔ‬ ‫‪Object-Oriented Programming‬‬ ‫إذن اﻟﻔﺼﯿﻠﺔ ھﻰ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﺴﻄﻮر اﻟﺘﻰ ﺗﻤﺜﻞ ﻋﻨﺼﺮا ﺗﻤﺜﯿﻞ ﺗﺎﻣﺎ ﻣﻦ ﺣﯿﺚ ﺑﯿﺎﻧﺎت اﻟﻌﻨﺼﺮ واﻟﺘﻰ‬ ‫ﺗﺴﻤﻰ ﺧﺼﺎﺋﺺ )‪ ، (properties‬وﻛﺬﻟﻚ دوال اﻟﻌﻨﺼﺮ اﻟﺘﻰ ﺗﺴﻤﻰ ‪ methods‬وﺑﺘﻘﺴﯿﻢ اﻟﺒﺮﻧﺎﻣﺞ اﻟﻰ‬ ‫ﻓﺼﺎﺋﻞ ﯾﺼﺒﺢ أﻛﺜﺮ ﻧﻈﺎﻣﺎ وأﺳﺮع ﻓﻰ اﻹﻋﺪاد‪.‬‬ ‫ﻣﺛﺎل ‪ ::.‬ﻛﺎﺋن اﻟﺳﯾﺎرة‪.:‬‬ ‫اﻟﺧﺻﺎﺋص‪:‬‬ ‫‪Model :Ferrari‬‬ ‫‪Color : Blue‬‬ ‫‪Year : 2005‬‬ ‫اﻟﻌﻣﻠﯾﺎت‪::.‬‬ ‫' ‪Start‬اﻻﻧطﻼق'‬ ‫' ‪Stop‬اﻟﺗوﻗف'‬ ‫' ‪Accelerate‬اﻟﺗﺳﺎرع'‬ ‫‪ -2‬اﻟﻛﺎﺋن‪object :‬‬ ‫ﻋﺑﺎرة ﻋن وﺣدة ﺗﺣوي ﻣﺟﻣوﻋﺔ ﻣن اﻟﺑﯾﺎﻧﺎت ﺗﺳﻣﻲ ) ﺧﺻﺎﺋص( ‪ properties‬أو ﺻﻔﺎت وﻣﻌرﻓﺔ ﻋﻠﯾﮭﺎ ﻣﺟﻣوﻋﺔ ﻣن اﻟﻌﻣﻠﯾﺎت‬ ‫‪.‬‬ ‫اﻟﻛﺎﺋﻧﺎت ذات اﻟﺧﺻﺎﺋص واﻷﻓﻌﺎل اﻟﻣﺷﺗرﻛﺔ ﺑﺣﺎﺟﺔ ﻵن ﺗﺟﻣﻊ ﻣﻊ ﺑﻌﺿﮭﺎ اﻟﺑﻌض ﺣﺗﻰ ﯾﻣﻛن اﺳﺗﺧداﻣﮭﺎ ﻓﻲ ﺑرﻧﺎﻣﺞ ﻣﺎ‪.‬‬ ‫وﺑﺎﻟﺗﺎﻟﻲ ﻓﺈن اﻟﺻﻧف ‪ :‬ﻋﺑﺎرة ﻋن ﻣﺟﻣوﻋﺔ ﻣن اﻟﻛﺎﺋﻧﺎت اﻟﺗﻲ ﺗﺷﺗرك ﻓﻲ اﻟﺧﺻﺎﺋص واﻟﻌﻣﻠﯾﺎت‪..‬‬ ‫ﻣﺛﻼً ‪..::‬‬ ‫اﻟطﺎﻟب ﻛﺎﺋن >> اﻟطﻼب ﺻﻧف‪.‬‬ ‫اﻟﻣوظف ﻛﺎﺋن >> اﻟﻣوظﻔﯾن ﺻﻧف‪.‬‬ ‫‪3 fields -‬‬ ‫ﻓﻰ ﻣﻔﮭﻮم اﻟﺒﺮﻣﺠﺔ اﻟﻜﺎﺋﻨﯿﺔ ﺗﻌﻨﻰ اﻟﻤﻌﻠﻮﻣﺎت اﻟﺘﻰ ﻧﺤﺘﺎﺟﮭﺎ ﻟﻌﻤﻞ اﻟﺒﺮﻧﺎﻣﺞ وھﻰ ﻣﻦ ﺻﻔﺎت اﻻوﺑﺠﯿﻜﺖ‬ ‫ﻓﻤﺜﻼ ﻟﻮ أﻧﻨﺎ أردﻧﺎ ﺑﻨﺎء اوﺑﺠﯿﻜﺖ ﻟﻠﻄﺎﻟﺐ ﻧﺤﺘﺎج ﻣﻌﻠﻮﻣﺎت ﻋﻦ اﻟﻄﺎﻟﺐ ﻣﺜﻞ اﺳﻤﮫ ورﻗﻤﮫ اﻟﺠﺎﻣﻌﻰ‬ ‫وﻋﻼﻣﺘﮫ ﻛﺎﻟﺘﺎﻟﻰ ‪-:‬‬ ‫‪Object-Oriented Programming‬‬ ‫ﻋﻼﻗﺔ اﻟـ ‪Object‬ﺑﺎﻟـ ‪Class‬‬ ‫اﻟﻛﺎﺋﻧﺎت ﺗﺳﺎﻋد اﻟﻣﺑرﻣﺞ ﻛﺛﯾراً‪ ,‬ﻓﻣﺛﻼً إذا ﻛﻧت ﺗﻧوي إﻧﺷﺎء ﺑرﻧﺎﻣﺞ ﺑﺳﯾط ﻟﺣﻔظ ﻣﻌﻠوﻣﺎت أﺷﺧﺎص‪ ,‬ھل ﺳﺗﻧﺷﺊ ﻛﻼس‬ ‫ﻟﻛل ﺷﺧص ؟ !طﺑﻌﺎً ﻻ‪ ,‬ﺑل ﺗﻧﺷﺊ ﻛﻼس واﺣد ﻓﻘط ﯾﻣﺛل ﺷﺧص‪ ,‬و ﺗﺿﻊ ﻓﯾﮫ اﻷﺷﯾﺎء اﻷﺳﺎﺳﯾﺔ اﻟﺗﻲ ﺗرﯾدھﺎ أن ﺗﻛون‬ ‫ﻣوﺟودة ﻋﻧد ﻛل ﺷﺧص‪.‬ﺛم ﺗﻧﺷﺊ ﻣﻧﮫ ﻛﺎﺋﻧﺎت ﻗدر ﻣﺎ ﺷﺋت‪ ,‬و ﻋﻧدھﺎ ﯾﺻﺑﺢ ﻛل ﻛﺎﺋن ﻣن ھذا اﻟﻛﻼس ﻋﺑﺎرة ﻋن‬ ‫ﺷﺧص ﻟﮫ ﻣﻌﻠوﻣﺎﺗﮫ اﻟﺧﺎﺻﺔ‪.‬‬ ‫ﻣزاﯾﺎ اﻟﺑرﻣﺟﺔ اﻟﺷﯾﺋﯾﺔ )‪:. (Features of opp‬‬ ‫‪ -1‬اﻟﺗﺟرﯾد‪abstraction.:‬‬ ‫ﺗﺟرﯾد ‪:‬ﺗﻌﻧﻲ ‪Abstraction‬ﻓﻲ اﻟﻠﻐﺔ اﻹﻧﺟﻠﯾزﯾﺔ‪ ,‬وھو ﻋﻣﻠﯾﺔ ﺗﺣدﯾد اﻟﺧﺻﺎﺋص واﻟﻌﻣﻠﯾﺎت اﻟﺗﻲ ﺗﻧﺗﻣﻲ ﻟﺻﻧف ﻣﻌﯾن وھو أﺳﻠوب ﻣﮭم‬ ‫ﺟداً ﯾﺳﺗﺧدم ﻟﺗﺳﮭﯾل ﻛﺗﺎﺑﺔ اﻷواﻣر ﻋﻠﻰ اﻟﻣﺑرﻣﺟﯾن‪ ,‬ﻓﮭو ﯾﺟﻌﻠك ﻗﺎدراً ﻋﻠﻰ ﺗﻧﻔﯾذ ﻣﺎ ﺗرﯾد دون اﻟﺣﺎﺟﺔ إﻟﻰ ﻣﻌرﻓﺔ ﻛﺎﻓﺔ اﻟﺗﻔﺎﺻﯾل اﻟﺗﻲ ﺗم‬ ‫ﻓﯾﮭﺎ ﺗﻧﻔﯾذ ذﻟك‪.‬إذاً اﻟـ ‪Abstraction‬ﯾﺟﻌﻠك ﺗﺗﻌﺎﻣل ﻣﻊ اﻷﺷﯾﺎء ﺑﺳطﺣﯾﺔ ﺑدل أن ﺗﻐوص ﻓﻲ ﻣﻌرﻓﺔ ﺗﻔﺎﺻﯾل اﻟﻛودات اﻟﻣﻌﻘدة‪.‬‬ ‫ﻓﻣﺛﻼً إذا ﻛﻧت ﺗﻧوي ﺑﻧﺎء ﺑرﻧﺎﻣﺞ ﯾﺗﯾﺢ ﻟﻣﺳﺗﺧدﻣﯾﮫ إرﺳﺎل إﻗﺗراﺣﺎت ﺣول اﻟﺗطﺑﯾق ﻣن ﺧﻼل اﻟﺑرﯾد اﻹﻟﻛﺗروﻧﻲ‪ ,‬ﻓﻲ ھذه‬ ‫اﻟﺣﺎﻟﺔ ﻟن ﯾﻛون ﻋﻠﯾك اﻟﻘﻠق ﺑﺗﺎﺗﺎً ﺣول طرﯾﻘﺔ ﺗﻌﺎﻣل أواﻣر ﺟﺎﻓﺎ ﻣﻊ اﻟﺑروﺗوﻛوﻻت اﻟﺗﻲ ﺗﻌﻣل ﻋﻧدﻣﺎ ﯾﺗم إرﺳﺎل رﺳﺎﺋل‬ ‫إﻟﻛﺗروﻧﯾﺔ ﻣن ﺧﻼل ھذا اﻟﺗطﺑﯾق‪ ,‬ﻷﻧك ﻟﺳت ﻣﺳؤوﻻً ﻋﻧﮭﺎ‪ ,‬ﻓﻌﻠﯾﺎً ھذه وظﯾﻔﺔ ﺷرﻛﺔ ‪Sun‬اﻟﺗﻲ ﺗﻘوم ﺑﺗطوﯾر ﻟﻐﺔ‬ ‫ﺟﺎﻓﺎ‪.‬و ھم ﯾﺧﺑروﻧك أﻧﮫ ﻹرﺳﺎل ﺑرﯾد إﻟﻛﺗروﻧﻲ إﺳﺗﺧدم ھذه اﻷواﻣر اﻟﺑﺳﯾطﺔ ﻓﻘط‪.‬‬ ‫إذاً اﻟـ ‪Abstraction‬ھو أﺳﻠوب ﯾﺳﺗﺧدم ﻹﺧﻔﺎء ﺗﻔﺎﺻﯾل ﺗﻧﻔﯾذ اﻟﺑرﻧﺎﻣﺞ‪.‬ﻟﺗطﺑﯾق ﻣﻔﮭوم اﻟـ ‪Abstraction‬‬ ‫ﻧﺳﺗﺧدم اﻟﻛﻠﻣﺔ ‪abstract‬ﺿﻣن ﺷروط ﻣﺣددة‪.‬‬ ‫‪Object-Oriented Programming‬‬ ‫إذا أردت ﺗﻌرﯾف اﻟﺷﻲء ﻛـ ‪abstract,‬أﻛﺗب ﻓﻘط اﻟﻛﻠﻣﺔ ‪abstract‬ﻗﺑﻠﮫ‪.‬‬ ‫اﻟﻛﻼس اﻟﻣﻌرف ﻛـ ‪abstract‬ﯾﺳﻣﻰ ‪Abstract Class.‬‬ ‫‪‬‬ ‫اﻟﻛﻼس اﻟﻌﺎدي اﻟﻐﯾر ﻣﻌرف ﻛـ ‪abstract‬ﯾﺳﻣﻰ ‪Concrete Class.‬‬ ‫‪‬‬ ‫اﻟداﻟﺔ اﻟﻣﻌرﻓﺔ ﻛـ ‪abstract‬ﺗﺳﻣﻰ ‪Abstract Method‬أو ‪Abstract Function‬‬ ‫‪‬‬ ‫‪Abstract Class‬‬ ‫إذا وﺿﻌت اﻟﻛﻠﻣﺔ ‪abstract‬ﻗﺑل إﺳم اﻟﻛﻼس‪ ,‬ﺳﺗﺗﻐﯾر ﻗﻠﯾﻼً طرﯾﻘﺔ اﻟﺗﻌﺎﻣل ﻣﻌﮫ ﻷﻧﮫ ﻟم ﯾﻌد ﻛﻼس ﻋﺎدي‪.‬و ﻋﻧدھﺎ‬ ‫ﺳﯾراه اﻟﻣﺗرﺟم ﻛـ ‪Abstract Class.‬‬ ‫ﻧﻘﺎط ﻣﮭﻣﺔ ﺣول اﻟـ ‪Abstract Class‬‬ ‫اﻟﻛﻼس اﻟﻌﺎدي ﻻ ﯾﻣﻛﻧﮫ أن ﯾﺣﺗوي ﻋﻠﻰ دوال ﻧوﻋﮭﺎ ‪abstract.‬‬ ‫‪‬‬ ‫اﻟـ ‪Abstract Class‬ﯾﻣﻛﻧﮫ أن ﯾﺣﺗوي ﻋﻠﻰ دوال ﻋﺎدﯾﺔ‪ ,‬و ﯾﻣﻛﻧﮫ أن ﯾﺣﺗوي ﻋﻠﻰ دوال ﻧوﻋﮭﺎ‬ ‫‪‬‬ ‫‪abstract.‬‬ ‫إذا ﻗﻣت ﺑﺗﻌرﯾف اﻟﻛﻼس ﻛـ ‪abstract,‬ﻓﮭذا ﯾﻌﻧﻲ أن ھذا اﻟﻛﻼس ﻻ ﯾﻣﻛن إﻧﺷﺎء ﻛﺎﺋﻧﺎت ﻣﻧﮫ‪.‬‬ ‫‪‬‬ ‫ﺑﻣﺎ أﻧﮫ ﻻ ﯾﻣﻛن إﻧﺷﺎء ﻛﺎﺋﻧﺎت ﻣن ‪Abstract Class,‬ﻓﮭذا ﯾﻌﻧﻲ أﻧﮫ ﻟﻺﺳﺗﻔﺎدة ﻣن ھذا اﻟﻛﻼس‪ ,‬ﯾﺟب‬ ‫‪‬‬ ‫وراﺛﺗﮫ‪.‬‬ ‫اﻟﻛﻼس اﻟذي ﯾرث ﻣن ﻛﻼس ﻧوﻋﮫ ‪abstract,‬ﯾﺟب أن ﯾﻔﻌل ‪Override‬ﻟﺟﻣﯾﻊ اﻟدوال اﻟﻣﻌرﻓﺔ ﻛـ‬ ‫‪‬‬ ‫‪abstract.‬‬ ‫طﺮﯾﻘﺔ ﺗﻌﺮﯾﻒ ﻛﻼس ﻧﻮﻋﮫ ‪abstract‬‬ ‫ﻧﻜﺘﺐ ﻓﻘﻂ اﻟﻜﻠﻤﺔ ‪abstract‬ﻗﺒﻞ اﻟﻜﻠﻤﺔ ‪class.‬‬ ‫ﻣﺜﺎل‬ ‫{ ‪abstract class Example‬‬ ‫}‬ ‫‪Abstract Method‬‬ ‫إذا ﻛﻨﺖ ﺗﺮﯾﺪ ﺑﻨﺎء داﻟﺔ و ﺟﻌﻞ اﻟﻜﻼس اﻟﺬي ﯾﺮﺛﮭﺎ ھﻮ اﻟﻤﺴﺆول ﻋﻦ ﻛﺘﺎﺑﺘﺔ ﻣﺤﺘﻮاھﺎ‪ ,‬ﻗﻢ ﺑﺘﻌﺮﯾﻔﮭﺎ ﻛـ‬ ‫‪abstract.‬‬ ‫ﻧﻘﺎط ﻣﮭﻤﺔ ﺣﻮل اﻟـ ‪Abstract Method‬‬ ‫إذا وﺿﻌﺖ اﻟﻜﻠﻤﺔ ‪abstract‬ﻗﺒﻞ إﺳﻢ اﻟﺪاﻟﺔ‪ ,‬ﻓﮭﺬا ﯾﻌﻨﻲ أﻧﮭﺎ داﻟﺔ ﻣﻦ اﻟﻨﻮع ‪abstract.‬‬ ‫‪‬‬ ‫اﻟﺪاﻟﺔ اﻟﺘﻲ ﻧﻮﻋﮭﺎ ‪abstract‬ھﻲ داﻟﺔ ﻟﮭﺎ إﺳﻢ و ﻧﻮع ﻣﺤﺪد‪ ,‬ﻟﻜﻨﮭﺎ ﻻ ﺗﺤﺘﻮي ﻋﻠﻰ ‪)body‬ﺟﺴﻢ(‪,‬‬ ‫‪‬‬ ‫أي ﻻ ﺗﻤﻠﻚ أﻗﻮاس ﺑﺪاﯾﺔ و ﻧﮭﺎﯾﺔ ‪{ }.‬‬ ‫اﻟﺪاﻟﺔ اﻟﻌﺎدﯾﺔ ﺗﺤﺘﻮي ﻋﻠﻰ أﻗﻮاس اﻟﺒﺪاﯾﺔ و اﻟﻨﮭﺎﯾﺔ ‪{ }.‬‬ ‫‪‬‬ ‫اﻟـ ‪Abstract Method‬ﯾﺠﺐ وﺿﻊ ﻓﺎﺻﻠﺔ ﻣﻨﻘﻮطﺔ ;ﻓﻲ آﺧﺮھﺎ ﺑﺪل أﻗﻮاس اﻟﺒﺪاﯾﺔ و اﻟﻨﮭﺎﯾﺔ‪.‬‬ ‫‪‬‬ ‫اﻟﻜﻼس اﻟﺬي ﯾﺮث ﻣﻦ ﻛﻼس ﻧﻮﻋﮫ ‪abstract,‬ﯾﺠﺐ أن ﯾﻔﻌﻞ ‪Override‬ﻟﻜﻞ دواﻟﺔ ﻧﻮﻋﮭﺎ‬ ‫‪‬‬ ‫‪abstract,‬أي ﯾﺠﺐ أن ﯾﻜﺘﺐ اﻟـ ‪body‬ﻟﮭﺬه اﻟﺪوال‪.‬‬ ‫طﺮﯾﻘﺔ ﺗﻌﺮﯾﻒ دوال ﻧﻮﻋﮭﺎ ‪abstract‬‬ ‫‪Object-Oriented Programming‬‬ ‫ﻧﻜﺘﺐ ﻓﻘﻂ اﻟﻜﻠﻤﺔ ‪ abstract‬ﺑﻌﺪ ‪ Modifier‬اﻟﺪاﻟﺔ‪.‬‬ ‫أﻣﺜﻠﺔ‬ ‫;)(‪public abstract void print‬‬ ‫;)(‪public abstract int getId‬‬ ‫;)‪public abstract void setId(int id‬‬ ‫‪-2‬اﻟﺗﻐﻠﯾف ) اﻟﻛﺑﺳﻠﺔ( ‪Encapsulation :‬‬ ‫اﻟﺘﻐﻠﯿﻒ ‪:‬ﯾﻌﻧﻲ ‪Encapsulation‬ﻓﻲ اﻟﻠﻐﺔ اﻹﻧﺟﻠﯾزﯾﺔ‪.‬و ھو ﻋﺑﺎرة ﻋن أﺳﻠوب ﯾﻣﻛن اﺗﺑﺎﻋﮫ ﻹﺧﻔﺎء اﻟﺑﯾﺎﻧﺎت‬ ‫اﻷﺳﺎﺳﯾﺔ ﻓﻲ اﻟﻛﻼس‪ ,‬أي ﻹﺧﻔﺎء اﻟﺧﺻﺎﺋص اﻟﻣوﺟودة ﻓﯾﮫ ‪( Global Variables ) ,‬و ﺟﻌل اﻟﻛﻼﺳﺎت اﻷﺧرى‬ ‫ﻗﺎدرة ﻋﻠﻰ اﻟﺗﻌﺎﻣل ﻣﻊ ھذه اﻟﺧﺻﺎﺋص ﻓﻘط ﻣن ﺧﻼل دوال ﯾﻘوم ﺑﺈﻧﺷﺎﺋﮭﺎ اﻟﻣﺑرﻣﺞ اﻷﺳﺎﺳﻲ ﻟﻠﻛﻼس‪.‬‬ ‫ھﻲ ﻋﻣﻠﯾﺔ ﺗﺟﻣﯾﻊ ﻛل اﻟﺧﺻﺎﺋص ‪ properties‬واﻟطرق ) اﻟﻌﻣﻠﯾﺎت ‪( Methods‬ﻓﻲ وﺣدة واﺣدة ) داﺧل ﻏﻼف‬ ‫واﺣد ( ﺣﯾث ﻻ ﯾﻣﻛن اﻟوﺻول إﻟﯾﮭﺎ ) أي اﻟﺧﺻﺎﺋص واﻟطرق ( إﻻ ﻋن طرﯾق اﻟﻛﺎﺋن ‪.‬‬ ‫اﻷﺳﻠوب اﻟﻣﺗﺑﻊ ﻓﻲ ﻋﻣﻠﯾﺔ اﻟﺗﻐﻠﯾف‬ ‫ﺑﻣﺎ أن ﻓﻛرة اﻟﺗﻐﻠﯾف اﻷﺳﺎﺳﯾﺔ ھﻲ إﺧﻔﺎء اﻟﺑﯾﺎﻧﺎت ﻣن ﺟﮭﺔ و إﺗﺎﺣﺔ اﻟﺗﻌﺎﻣل ﻣﻌﮭﺎ ﻣن ﺟﮭﺔ أﺧرى‪.‬‬ ‫أول ﻣﺎ ﯾﺟب أن ﯾﺧطر ﻓﻲ ﺑﺎﻟك ھو أﻧﮫ ﯾﺟب ﺗﻌرﯾف ﺟﻣﯾﻊ اﻟﺧﺻﺎﺋص ) أي اﻟﻣﺗﻐﯾرات اﻟﺗﻲ ﺳﺗﺣﻔظ اﻟﺑﯾﺎﻧﺎت (‬ ‫اﻟﻣوﺟودة ﻓﻲ اﻟﻛﻼس ﻛـ ‪ private.‬ﻷن ﺗﻌرﯾف اﻟﺧﺻﺎﺋص ﻛـ ‪ private‬ﯾﻌﻧﻲ أﻧﮫ ﯾﻣﻛن اﻟوﺻول إﻟﯾﮭم ﻓﻘط ﻣن‬ ‫داﺧل اﻟﻛﻼس اﻟﻣوﺟودﯾن ﻓﯾﮫ‪.‬‬ ‫ﺛﺎﻧﻲ ﺷﯾﻰء ﻋﻠﯾك اﻟﺗﻔﻛﯾر ﻓﯾﮫ ھو إﯾﺟﺎد طرﯾﻘﺔ ﻟﻠوﺻول إﻟﻰ ھذه اﻟﺧﺻﺎﺋص ﻣن اﻟﺧﺎرج‪.‬ﻟذﻟك ﻋﻠﯾك ﺗﺟﮭﯾز دوال‬ ‫ﻧوﻋﮭﺎ ‪public‬ﻟﻠﺗﻌﺎﻣل ﻣﻊ ھذه اﻟﺧﺻﺎﺋص‪ ,‬ﻷن اﻟدوال اﻟﺗﻲ ﻧوﻋﮭﺎ ‪public‬ﯾﻣﻛن اﻟوﺻول إﻟﯾﮭم ﻣن أي ﻣﻛﺎن‪.‬‬ ‫إذاً ﻟﺗﺣﻘﯾق ﻣﺑدأ اﻟﺗﻐﻠﯾف‪ ,‬ﻋﻠﯾك ﺗﻌرﯾف اﻟﺧﺻﺎﺋص ﻛـ ‪private‬و ﺗﻌرﯾف اﻟدوال اﻟﺗﻲ ﺗﺳﺗﺧدم ﻟﻠوﺻول إﻟﯾﮭم ﻛـ‬ ‫‪public.‬‬ ‫ﻣﻔﮭﻮم دوال اﻟـ ‪setter‬و اﻟـ ‪getter‬‬ ‫ﻋﻧد اﻟﺗﻌﺎﻣل ﻣﻊ أي ﻣﺗﻐﯾر (أو ﺧﺎﺻﯾﺔ ) ﻓﻌﻧدك ﺧﯾﺎرﯾن و ھﻣﺎ إﻣﺎ إﻋطﺎءه ﻗﯾﻣﺔ ﺟدﯾدة و إﻣﺎ اﻟﺣﺻول ﻋﻠﻰ اﻟﻘﯾﻣﺔ‬ ‫اﻟﻣوﺟودة ﻓﯾﮫ‪.‬و ﺑﻣﺎ أﻧﮫ ﯾﺟب ﺑﻧﺎء دوال ﻟﻠﺗﻌﺎﻣل ﻣﻊ ﻛل ﺧﺎﺻﯾﺔ ﻣن اﻟﺧﺻﺎﺋص اﻟﻣوﺟودة ﻓﻲ اﻟﻛﻼس‪ ,‬ﯾﻧﺻﺢ ﺑﺈﻋﺗﻣﺎد‬ ‫أﺳﻣﺎء ﻣﺗﻌﺎرف ﻋﻠﯾﮭﺎ ﻛﺎﻟﺗﺎﻟﻲ‪:‬‬ ‫‪.1‬إﺑدأ إﺳم ﻛل داﻟﺔ اﻟﮭدف ﻣﻧﮭﺎ إﻋطﺎء ﻗﯾﻣﺔ ﻟﻠﺧﺎﺻﯾﺔ ﺑﺎﻟﻛﻠﻣﺔ ‪set‬ﺛم إﺳم اﻟﺧﺎﺻﯾﺔ‪.‬‬ ‫‪.2‬إﺑدأ إﺳم ﻛل داﻟﺔ اﻟﮭدف ﻣﻧﮭﺎ اﻟﺣﺻول ﻋﻠﻰ ﻗﯾﻣﺔ اﻟﺧﺎﺻﯾﺔ ﺑﺎﻟﻛﻠﻣﺔ ‪get‬ﺛم إﺳم اﻟﺧﺎﺻﯾﺔ‪.‬‬ ‫أﻣﺜﻠﺔ ﺷﺎﻣﻠﺔ‬ ‫اﻵن ﺳﻧﻘوم ﺑﺈﻧﺷﺎء ﻛﻼس إﺳﻣﮫ ‪Employee‬و ﻓﻛرﺗﮫ ﺗﺧزﯾن ﻣﻌﻠوﻣﺎت اﻟﻣوظﻔﯾن ﻣﺛل اﻹﺳم ‪name,‬اﻟراﺗب‬ ‫‪salary,‬اﻟﻌﻣر ‪age.‬‬ ‫ﺑﻌدھﺎ ﺳﻧﻘوم ﺑﺗﺟرﺑﺔ اﻟﻛﻼس ‪Employee‬ﻓﻲ اﻟﻛﻼس ‪Main.‬‬ ‫اﻟﻤﺜﺎل اﻷول‬ ‫‪Object-Oriented Programming‬‬.‫ ھﻧﺎ ﻟم ﻧطﺑق ﻣﺑدأ اﻟﺗﻐﻠﯾف‬ public class Employee { // ‫ﯾﻣﻠك‬3‫ ﺧﺻﺎﺋص‬Employee ‫اﻟﻛﻼس‬ String name; // ‫ ﻷﻧﮫ ﻋﺑﺎرة ﻋن ﻧص‬String ‫اﻹﺳم ﻧوﻋﮫ‬ int age; // ‫ ﻷﻧﮫ ﻋﺑﺎرة ﻋن رﻗم‬int ‫اﻟﻌﻣر ﻧوﻋﮫ‬ double salary; // ‫ ﻷﻧﮫ ﻋﺑﺎرة ﻋن رﻗم ﻛﺑﯾر ﯾﻣﻛن أن ﯾﺣﺗوي ﻋﻠﻰ ﻓﺎﺻﻠﺔ‬double ‫اﻟراﺗب ﻧوﻋﮫ‬ } Main.java public class Main { public static void main(String[] args) { // Employee ‫ ﻣن اﻟﻛﻼس‬e ‫ھﻧﺎ ﻗﻣﻧﺎ ﺑﺈﻧﺷﺎء اﻟﻛﺎﺋن‬ Employee e = new Employee(); // e ‫ھﻧﺎ ﻗﻣﻧﺎ ﺑوﺿﻊ ﻗﯾم ﻟﺧﺻﺎﺋص اﻟﻛﺎﺋن‬ e.name = "Mhamad"; e.age = 21; e.salary = 1500000; // e ‫ھﻧﺎ ﻗﻣﻧﺎ ﺑﻌرض ﻗﯾم ﺧﺻﺎﺋص اﻟﻛﺎﺋن‬ System.out.println("Name: " +e.name); System.out.println("Age: " +e.age); System.out.println("Salary: " +e.salary); } }.‫ﺳﻨﺤﺼﻞ ﻋﻠﻰ اﻟﻨﺘﯿﺠﺔ اﻟﺘﺎﻟﯿﺔ ﻋﻨﺪ اﻟﺘﺸﻐﯿﻞ‬ Name: Mhamad Age: 21 Salary: 1500000.0 Object-Oriented Programming.‫ﻟﻠﺘﻌﺎﻣﻞ ﻣﻊ ھﺬه اﻟﺨﺼﺎﺋﺺ‬public ‫و ﺳﻨﻘﻮم ﺑﺘﻌﺮﯾﻒ دوال ﻧﻮﻋﮭﺎ‬private ‫اﻵن ﺳﻨﻘﻮم ﺑﺘﻌﺮﯾﻒ اﻟﺨﺼﺎﺋﺺ ﻛـ‬.‫ ھﻨﺎ ﻗﻤﻨﺎ ﺑﺘﻄﺒﯿﻖ ﻣﺒﺪأ اﻟﺘﻐﻠﯿﻒ‬ Employee.java public class Employee { // private ‫اﻵن ﻗﻤﻨﺎ ﺑﺘﻌﺮﯾﻒ اﻟﺨﺼﺎﺋﺺ ﻛـ‬ private String name; private int age; private double salary; public String getName() { // name ‫ھﺬه اﻟﺪاﻟﺔ ﺗﺮﺟﻊ ﻗﯿﻤﺔ اﻟﻤﺨﺰﻧﺔ اﻟﺨﺎﺻﯿﺔ‬ return name; } public int getAge() { // age ‫ھﺬه اﻟﺪاﻟﺔ ﺗﺮﺟﻊ ﻗﯿﻤﺔ اﻟﻤﺨﺰﻧﺔ اﻟﺨﺎﺻﯿﺔ‬ return age; } public double getSalary() { // salary ‫ھﺬه اﻟﺪاﻟﺔ ﺗﺮﺟﻊ ﻗﯿﻤﺔ اﻟﻤﺨﺰﻧﺔ اﻟﺨﺎﺻﯿﺔ‬ return salary; } public void setName(String n) { // name ‫ھﺬه اﻟﺪاﻟﺔ ﻧﻌﻄﯿﮭﺎ إﺳﻢ ﻓﺘﻘﻮم ﺑﻮﺿﻌﮫ ﻟﻠﺨﺎﺻﯿﺔ‬ name = n; } public void setAge(int a) { // age ‫ھﺬه اﻟﺪاﻟﺔ ﻧﻌﻄﯿﮭﺎ رﻗﻢ ﻓﺘﻘﻮم ﺑﻮﺿﻌﮫ ﻟﻠﺨﺎﺻﯿﺔ‬ age = a; } public void setSalary(double s) { // salary ‫ھﺬه اﻟﺪاﻟﺔ ﻧﻌﻄﯿﮭﺎ رﻗﻢ ﻓﺘﻘﻮم ﺑﻮﺿﻌﮫ ﻟﻠﺨﺎﺻﯿﺔ‬ salary = s; } } Main.java public class Main { public static void main(String[] args) { // Employee ‫ ﻣن اﻟﻛﻼس‬e ‫ھﻧﺎ ﻗﻣﻧﺎ ﺑﺈﻧﺷﺎء اﻟﻛﺎﺋن‬ Object-Oriented Programming ‫;)(‪Employee e = new Employee‬‬ ‫ھﻧﺎ ﻗﻣﻧﺎ ﺑوﺿﻊ ﻗﯾم ﻟﺧﺻﺎﺋص اﻟﻛﺎﺋن ‪ e‬ﻣن ﺧﻼل دوال اﻟـ ‪// Setter‬‬ ‫;)"‪e.setName("Mhamad‬‬ ‫;)‪e.setAge(21‬‬ ‫;)‪e.setSalary(1500000‬‬ ‫ھﻧﺎ ﻗﻣﻧﺎ ﺑﻌرض ﻗﯾم ﺧﺻﺎﺋص اﻟﻛﺎﺋن ‪ e‬ﻣن ﺧﻼل دوال اﻟـ ‪// Getter‬‬ ‫;))(‪System.out.println("Name: " +e.getName‬‬ ‫" ‪System.out.println("Age:‬‬ ‫;))(‪+e.getAge‬‬ ‫;))(‪System.out.println("Salary: " +e.getSalary‬‬ ‫}‬ ‫}‬ ‫‪.‬ﺳﻧﺣﺻل ﻋﻠﻰ اﻟﻧﺗﯾﺟﺔ اﻟﺗﺎﻟﯾﺔ ﻋﻧد اﻟﺗﺷﻐﯾل‬ ‫‪Name: Mhamad‬‬ ‫‪Age: 21‬‬ ‫‪Salary: 1500000.0‬‬ ‫ﻓﻮاﺋﺪ اﻟﺘﻐﻠﯿﻒ‬ ‫ﯾﻤﻜﻨﮫ ﺟﻌﻞ اﻷﺷﯿﺎء اﻟﻤﻮﺟﻮدة ﻓﻲ اﻟﻜﻼس ﻗﺎﺑﻠﺔ ﻟﻠﻘﺮاءة أو ﻟﻠﻜﺘﺎﺑﺔ ﻣﻦ ﻗﺒﻞ اﻟﻜﻼﺳﺎت اﻟﺨﺎرﺟﯿﺔ‪.‬‬ ‫‪‬‬ ‫ﯾﺴﻤﺢ ﻟﻠﻜﻼس ﺑﻮﺿﻊ ﺷﺮوط أﺛﻨﺎء ﺗﺨﺰﯾﻦ اﻟﺒﯿﺎﻧﺎت‪.‬‬ ‫‪‬‬ ‫اﻟﺘﻐﻠﯿﻒ ﯾﺴﺎﻋﺪ أﯾﻀﺎً ﻓﻲ ﺟﻌﻞ اﻟﺒﺮﻧﺎﻣﺞ ﻗﺎﺑﻞ ﻟﻠﺘﻄﻮﯾﺮ ﻣﻦ ﻣﺒﺮﻣﺠﯿﻦ آﺧﺮﯾﻦ ﺑﺪون ﺣﺎﺟﺔ ھﺆﻻء اﻟﻤﺒﺮﻣﺠﯿﻦ إﻟﻰ‬ ‫‪‬‬ ‫ﻣﻌﺮﻓﺔ ﺗﻔﺎﺻﯿﻞ اﻟﻜﻮد اﻷﺳﺎﺳﻲ ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ‪.‬‬ ‫‪ -3‬إﺧﻔﺎء اﻟﺑﯾﺎﻧﺎت ‪ Data Hiding:.‬وھﻲ ﻣﯾزة ﻧﺎﺗﺟﺔ ﻋن ﻛﺑﺳﻠﺔ اﻟﺑﯾﺎﻧﺎت وﺗﻌﻧﻲ إﺿﺎﻓﺔ ﻣﺳﺗوى ﺣﻣﺎﯾﺔ ﻣﻌﯾن ﻋﻠﻰ‬ ‫اﻟﺑﯾﺎﻧﺎت ﺣﺗﻰ ﻧﻣﻧﻊ وﺻول اﻟﺧطﺄ إﻟﯾﮭﺎ ‪.‬‬ ‫‪ -4‬اﻟوراﺛﺔ ‪ Inhertance:.‬وھﻲ أن ﯾرث ﺻﻧف ﻣﺎ اﻟﺧﺻﺎﺋص واﻟﻌﻣﻠﯾﺎت اﻟﻣوﺟودة ﻓﻲ اﻟﺻﻧف اﻵﺧر ﻣﻣﺎ ﯾﺳﺎﻋد‬ ‫ﻋﻠﻰ إﻋﺎدة اﻻﺳﺗﺧدام ﻟﻸﺻﻧﺎف اﻟﺗﻲ ﺗم إﻧﺷﺎؤھﺎ ﻣن ﻗﺑل اﻟﻣﺳﺗﺧدم‪..‬‬ ‫ﻣﺛﻠﺔ ﻟﺑﻌض اﻷﺻﻧﺎف اﻟﻣﺷﺗﻘﺔ واﻷﺳﺎﺳﯾﺔ ﻓﻲ اﻟوراﺛﺔ‪:..‬‬ ‫‪Object-Oriented Programming‬‬ ‫‪ -5‬ﺗﻌدد اﻷﺷﻛﺎل ) اﻷوﺟﮫ( ‪ polymorfisme:‬ﺗﺳﻣﺢ ﻣﯾزة ﺗﻌدد اﻷﺷﻛﺎل ﻟﻧﻔس اﻟداﻟﺔ أن ﺗﺗﻌرف ﺑﺻورة ﻣﺧﺗﻠﻔﺔ ﻓﻲ أﺻﻧﺎف‬ ‫ﻣﺧﺗﻠﻔﺔ‪.‬‬ ‫وﯾﻣﻛن ﻋﻣل ذﻟك ﺑـ اﻟوراﺛﺔ ﻣﻊ ﺗﻌدد اﻷﺷﻛﺎل ‪.‬‬ ‫واﻟﻠﻐﺎت اﻟﺗﻲ ﺗدﻋم أﺳﻠوب اﻟﺑرﻣﺟﺔ اﻟﺷﯾﺋﯾﺔ ﻛﺛﯾرة ﻧذﻛر ﻣﻧﮭﺎ‪..‬‬ ‫‪C++‬و ‪ java‬و ‪ C#‬و‪vb.net‬‬ ‫اﻟﺪرس اﻟﺜﺎﻧﻲ ‪:‬‬ ‫اﻷﺻﻧﺎف‪Classes :‬‬ ‫ﺗﻌرﯾف اﻟﺻﻧف ‪ :‬ھو ﻋﺑﺎرة ﻋن وﺣدة ﺗﺣوي ﻣﺟﻣوﻋﺔ ﻣن اﻟﺑﯾﺎﻧﺎت )اﻟﺧﺎﺻﺔ واﻟﻌﺎﻣﺔ (ﺑﺎﻹﺿﺎﻓﺔ إﻟﻰ ﺗﻌرﯾف اﻟدوال )‬ ‫اﻟﻌﻣﻠﯾﺎت ( ﺣﯾث ﯾطﻠق ﻋﻠﻰ اﻟدوال اﻟﻣﻌرﻓﺔ داﺧل اﻟﺻﻧف ﺑـ " أﻋﺿﺎء داﻟﯾﺔ" ‪. member Function‬‬ ‫ﺗﻌرﯾف اﻟﻛﺎﺋﻧﺎت‪.::‬‬ ‫‪Object-Oriented Programming‬‬ ‫ﯾﺗم ﺗﻌرﯾف اﻟﻛﺎﺋﻧﺎت ﻓﻲ اﻟﺑرﻧﺎﻣﺞ اﻟرﺋﯾﺳﻲ وﻓﻘﺎً ﻟﻠﺻﯾﻐﺔ اﻟﺗﺎﻟﯾﺔ‪:‬‬ ‫ﻛﻮد‪:‬‬ ‫ﺣﯾث‪:‬‬ ‫‪ :class‬ﻛﻠﻣﺔ ﻣﺣﺟوزة ﺗدل ﻋﻠﻰ اﻟﺗﻌرﯾف ﺑﻛﻼس ﻣﺎ وﻣﺎﯾﺄﺗﻰ ﯾﻌد ھده اﻟﻛﻠﻣﺔ ھو اﺳم ﻟﮭدا اﻟﻛﻼس‬ ‫‪ :student‬اﺳم اﻟﻛﻼس اﻟدى ﺳﻧﺗﻌﺎﻣل ﻣﻌﮫ ﻓﻲ ﺑﻘﯾﺔ اﻟﺑرﻧﺎﻣﺞ‪.‬‬ ‫أﻣﺎ ﺑﺎﻟﻧﺳﯾﺔ ﻟﻠﺗﻌرﯾف ﻋن اﻻوﺑﺟﯾﻛت ‪ object‬ﻓﮭو ﯾﺄﺧد اﻟﺷﻛل اﻟﺗﺎﻟﻰ‪-:‬‬ ‫)(‪class object=new class‬‬ ‫ﻣﺛﺎل‪.::‬‬ ‫ﻛﻮد‪:‬‬ ‫ﺣﯾث‬ ‫‪abdallah‬اﺳم اﻟﺻﻧف ‪ ،‬و ‪ student‬اﺳم اﻟﻛﺎﺋن‪.‬‬ ‫اﺳﺗدﻋﺎء اﻷﻋﺿﺎء‪:.‬‬ ‫أﻋﺿﺎء اﻟﺻﻧف ﻻ ﯾﻣﻛن أن ﻧﺻل إﻟﯾﮭﺎ ﻣن ﺧﺎرج اﻟﺻﻧف إﻻ ﻋن طرﯾق اﻟﻛﺎﺋﻧﺎت وﯾﺗم ذﻟك ﺑﺎﻟﺻﯾﻐﺔ اﻟﺗﺎﻟﯾﺔ‪:‬‬ ‫ﻛﻮد‪:‬‬ ‫‪Object_name.member‬‬ ‫ﺣﯾث‪.::‬‬ ‫‪Object_name :‬اﺳم اﻟﻛﺎﺋن ‪.‬‬ ‫‪member :‬اﺳم اﻟﻌﺿو اﻟذي ﻧرﯾد اﻟوﺻول إﻟﯾﮫ‪.‬‬ ‫ﻣﺛﺎل ‪ :‬إذا أردﻧﺎ اﻟوﺻول ﻻﺳم اﻟطﺎﻟب او اﻟرﻗم اﻟﺟﺎﻣﻌﻲ او اﻟﻌﻼﻣﺔ ﺑﺎﺳﺗﺧدام اﻟﻛﺎﺋن ‪ abdallah‬ﻧﻛﺗب اﻵﺗﻲ‪:‬‬ ‫ﻛﻮد‪:‬‬ ‫‪Object-Oriented Programming‬‬ ‫أﻣﺜﻠﺔ ﺑﺴﯿﻄﺔ وﻣﺘﺮاﺑﻄﺔ ﺗﻌﻠﻤﻚ أﺳﺎﺳﯿﺎت ال‪Abstraction‬‬ ‫اﻵن ﺳﻨﻘﻮم ﺑﺘﻌﺮﯾﻒ ﻛﻼس إﺳﻤﮫ ‪A,‬ﻧﻮﻋﮫ ‪abstract,‬ﯾﻤﻠﻚ ﻣﺘﻐﯿﺮ إﺳﻤﮫ ‪x,‬و داﻟﺔ إﺳﻤﮭﺎ ‪print().‬‬ ‫ﺑﻌﺪھﺎ ﺳﻨﻘﻮم ﺑﺒﻨﺎء اﻟﻜﻼس ‪ Main‬ﻟﺘﺠﺮﺑﺔ اﻟﻜﻮد‪.‬‬ ‫‪A.java‬‬ ‫{ ‪public abstract class A‬‬ ‫اﻟﻜﻼس ‪ A‬ﻧﻮﻋﮫ ‪ ,abstract‬إذاً ﻻ ﯾﻤﻜﻦ إﻧﺸﺎء ﻛﺎﺋﻨﺎت ﻣﻨﮫ ‪//‬‬ ‫;‪int x‬‬ ‫‪Object-Oriented Programming‬‬ public void print() { System.out.println("This is just an example."); } } Main.java public class Main { public static void main(String[] args) { A a = new A(); // Incompatible Type: abstraction.A is abstract; cannot be instantiated

Use Quizgecko on...
Browser
Browser