برمجة موجهة بالكائنات بلغة الجافا PDF
Document Details
Uploaded by UnaffectedEuropium2796
Tags
Related
- CS0070 Object-Oriented Programming Module 1 PDF
- Object Oriented Programming (2nd Year 1st Sem) PDF
- CCS0023 OBJECT ORIENTED PROGRAMMING Past Paper PDF
- VILLASAN Object-Oriented Programming PDF
- Introduction To Object Oriented Programming PDF
- Unit-1 Introduction to Object Oriented Programming and Basic Concepts 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