Professional Documents
Culture Documents
ﺍﻻﻭﺑﺠﻴﻜﺖ ﺍﻭﺭﻳﺎﻧﺘﻴﺪ ﻫﻮ ﻓﻜﺮﺓ ﺍﻥ ﻛﻞ ﺣﺎﺟﺔ ﺗﺒﻘﻰ ﺍﻭﺑﺠﻴﻜﺖ ﺍﻗﺪﺭ ﺍﺳﺘﻌﻤﻠﻪ ﺑﻌﺪ ﻛﺪﻩ ﻑ ﺍﺑﻠﻴﻜﺎﺷﻦ ﺗﺎﻧﻰ ﺑﺪﻝ ﻣﺎ ﻛﺎﻥ ﺍﻟﻤﻮﺿﻮﻉ ﻋﺒﺎﺭﺓ ﻋﻦ
ﺳﺘﺮﺍﻛﺘﺸﺮ ﺑﺮﻭﺟﺮﺍﻣﻨﺞ .ﺍﻟﻔﺎﻧﻜﺸﻦ ﺗﺘﻜﺘﺐ ﻣﺮﺓ ﻭﺍﺣﺪﻩ ﺑﺘﻌﻤﻞ ﺣﺎﺟﺔ ﻣﻌﻴﻨﺔ ﻭ ﺥﻻﺹ ﺧﻠﺼﻨﺎﻋﻠﻰ ﻛﺪﻩ .ﻑ ﺍﻻﻭﺑﺠﻴﻜﺖ ﺍﻭﺭﻳﺎﻧﺘﺪ ﺑﻨﻘﺴﻢ ﺍﻟﻤﺸﻜﻠﺔ
ﻛﻠﻬﺎ ﺍﻭ ﺍﻻﺑﻠﻴﻜﺎﺷﻦ ﺍﻟﻠﻰ ﻋﺎﻳﺰ ﺍﻋﻤﻠﻪ ﻛﻠﻪ ﻻﺟﺰﺍء ﺍﺻﻐﺮ ﻛﻞ ﺷﻮﻳﺔ ﺩﺍﺗﺎ ﻣﺮﺗﺒﻄﻴﻦ ﺑﺒﻌﺾ ﺍﺣﻄﻬﻢ ﻓﻰ ﻣﻮﺩﻳﻮﻝ ﻓﻴﻪ ﺍﻟﺪﺍﺗﺎ ﻭ ﺍﻟﻤﻴﺜﻮﺩﺯ ﺍﻟﻠﻰ ﻟﻴﻬﺎ
ﻉﻻﻗﺔ ﺑﻨﻔﺲ ﺍﻟﺤﺎﺟﺔ ﺍﻟﻤﻮﺩﻳﻮﻝ ﺩﻩ ﻫﻮ ﺍﻟﻠﻰ ﺑﻴﻘﻮﻟﻮﺍ ﻋﻠﻴﻪ ﺍﻟﻚﻻﺱ Classﻣﺜﺎﻝ ﻟﻮ ﺍﻧﺎ ﺑﻌﻤﻞ ﺍﺑﻠﻴﻜﺎﺷﻦ ﺣﻀﻮﺭ ﻭ ﺍﻧﺼﺮﺍﻑ ﻫﻰ ﺩﻯ ﺍﻟﻤﺸﻜﻠﺔ
ﻫﻘﺴﻤﻬﺎ ﻣﻮﺩﻳﻮﻟﺰ ﺍﻭ ﻙﻻﺳﺰ ﻳﺒﻘﻰ ﻋﻨﺪﻯ ﻣﺚﻻ ﻙﻻﺱ ﻟﻠﻤﻮﻇﻔﻴﻦ ﻭ ﻙﻻﺱ ﻟﻠﺸﻴﻔﺘﺎﺕ ﻟﻮ ﺍﺧﺪﻧﺎ ﻙﻻﺱ ﺍﻟﻤﻮﻇﻔﻴﻦ ﻧﺤﻂ ﻓﻴﻬﺎ ﺩﺍﺗﺎ ﺍﺳﻢ ﺍﻟﻤﻮﻇﻒ
ﻭ ﺭﻗﻤﻪ ﺍﻟﺘﺄﻣﻴﻨﻰ ﻭ ﻋﻨﻮﺍﻧﻪ ﻭ ﺍﻯ ﺣﺎﺟﺔ ﺗﺎﻧﻴﺔ ﻭ ﻧﺤﻂ ﻓﻴﻬﺎ ﻣﻴﺜﻮﺩﺯ ﺑﺘﻌﻤﻞ ﺍﻯ ﺣﺎﺟﺔ ﺑﺘﻄﺒﻊ ﻫﺎﻟﻮ ﻣﺚﻻ ﻭ ﻣﻴﺜﻮﺩ ﺗﺎﻧﻴﺔ ﺑﺘﻌﻤﻞ ﺍﻯ ﺣﺎﺟﺔ ﻣﺶ ﻣﻬﻢ
ﻳﺒﻘﻰ ﻛﺪﻩ ﺑﻘﻰ ﻋﻨﺪﻯ ﻙﻻﺱ ﻓﻴﻬﺎ ﺩﺍﺗﺎ ﻭ ﻣﻴﺜﻮﺩﺯ ﻑ ﻛﻞ ﻣﺮﺓ ﻫﻜﺮﻳﻴﺖ ﻣﻮﻇﻒ ﺟﺪﻳﺪ ﻭ ﺍﺑﺪﺃ ﺍﺣﻄﻠﻪ ﺑﻘﻰ ﺍﺳﻤﻪ ﻭ ﺭﻗﻢ ﺍﻟﺘﺄﻣﻴﻨﻰ ﻭ ﺑﺎﻗﻰ ﺍﻟﺪﺍﺗﺎ
ﺑﺘﺎﻋﺘﻪ ﺑﻘﻰ ﺍﻧﺎ ﻛﺪﻩ ﻋﻨﺪﻯ ﺍﻭﺑﻜﻴﺠﺖ ﻣﻦ ﺍﻟﻚﻻﺱ .
class
{ Employee
int
;socialSecurityNumber
String
;name
String
;email
public
{)(void printHello
System. out
“(.println
Hello
;)”
}
}
ﺩﻯ ﺍﻟﻚﻻﺱ .ﻧﺮﻭﺡ ﻟﻠـ main methodﻭ ﻧﻌﻤﻞ ﺍﻭﺑﺠﻴﻜﺖ ﻳﻌﻨﻰ ﻧﻜﺮﻳﻴﺖ ﻣﻮﻇﻒ ﺑﺎﻟﻜﻮﺩ ﺷﻜﻠﻬﺎ ﻛﺪﻩ
public void
static String
(main {)][args
= Employee mohamed new ;)(Employee
mohamed. socialSecurityNumer =
1
;
mohamed. name “ =Mohamed ;”
mohamed. email
“ =
mohamed@gmail.com ;”
}
ﻛﺪﻩ ﺑﻘﻰ ﻋﻨﺪﻯ ﺍﻭﺑﺠﻴﻜﺖ ﻣﻦ ﻙﻻﺱ ﺍﻭ ﺑﻤﻌﻨﻰ ﺍﺑﺴﻂ ﺑﻘﻰ ﻋﻨﺪﻯ ﻣﻮﻇﻒ ﺍﺳﻤﻪ ﻣﺤﻤﺪ …
____________________________________________________________________________
____________________________________________________________________________
Prepared By
ﺍﻟﻤﻬﻢ ﻧﺮﺟﻊ ﻟﻤﻮﺿﻮﻋﻨﺎ ﺍﻟﻜﻮﻧﺴﺘﺮﺍﻛﺘﻮﺭ ﺩﻩ ﺑﻴﺒﻘﻰ ﺷﻜﻠﻪ ﻣﻴﺜﻮﺩ ﺯﻯ ﺍﻯ ﻣﻴﺜﻮﺩ ﺑﺲ ﻭﺍﺧﺪﺓ ﻧﻔﺲ ﺍﺳﻢ ﺍﻟﻚﻻﺱ
ﻃﺐ ﻳﻨﻔﻊ ﺍﻟﻚﻻﺱ ﺍﻟﻮﺍﺣﺪﺓ ﻳﺒﻘﻰ ﻓﻴﻬﺎ ﺍﻛﺘﺮ ﻣﻦ ﻛﻮﻧﺴﺘﺮﺍﻛﺘﻮﺭ ؟ ﺍﻩ ﻳﻨﻔﻊ ﻣﺶ ﺍﻧﺖ ﻋﻨﺪﻙ ﺣﺎﺟﺔ ﺍﺳﻤﻬﺎ overloadingﻳﺒﻘﻰ ﻳﻨﻔﻊ ﻃﺐ ﺍﻳﻪ
ﺍﻻﻭﻓﺮ ﻟﻮﺩﻧﺞ ﺍﺑﻘﻰ ﺑﺺ ﻋﻠﻴﻪ ﺗﺤﺖ ﻓﻰ ﺍﻟﺴﺆﺍﻝ ﺑﺘﺎﻋﻪ ..
ﺍﻧﺎ ﺩﻟﻮﻗﺘﻰ ﻋﺎﻳﺰ ﻟﻤﺎ ﺍﻛﺮﻳﻴﺖ ﺍﻭﺑﺠﻴﻜﺖ ﻳﺮﻭﺡ ﻳﺤﻄﻠﻰ ﻓﻴﻪ ﺩﺍﺗﺎ ﺑﺎﻟﻜﻮﺩ ﺍﻋﻤﻞ ﺍﻳﻪ .ﻫﻨﻜﻤﻞ ﻋﻠﻰ ﺍﻟﻚﻻﺱ ﺍﻟﻠﻰ ﻓﻮﻕ
class
{ Employee
int
;socialSecurityNumber
String
;name
String
;email
{)(Employee ←
// the constructor
= socialSecurityNumber
1
;
“ = nameAhmed;”
“ = email
me@example.com ;”
}
public
void
(createNewEmployee int
SSN,
String tring
empName, S {)mail
;socialSecurityNumber = SSN
;name = empName
;email = mail
}
}
____________________________
____________________________________________________________________________
Prepared By
ﺍﻟـInheritance
ﻓﻜﺮﺓ ﺍﻻﻧﻬﺮﻳﺘﺎﻧﺲ ﺯﻯ ﻣﺎ ﻗﻮﻟﻨﺎ ﺍﻥ ﺍﻻﻭﺑﺠﻴﻜﺖ ﺍﻭﺭﻳﺎﻧﺘﻴﺪ ﺍﺗﻌﻤﻞ ﻋﺸﺎﻥ ﺍﻟـ reusabilityﻭ ﺍﻗﺪﺭ ﺍﺳﺘﻌﻤﻞ ﺍﻟﺤﺎﺟﺔ ﺍﻛﺘﺮ ﻣﻦ ﻣﺮﺓ ﻑ ﺍﻛﺘﺮ ﻣﻦ
ﻣﻜﺎﻥ .ﻃﻴﺐ ﻋﻠﻰ ﺍﻟﻤﺜﺎﻝ ﺍﻟﻠﻰ ﻓﻮﻕ ﻟﻮ ﺍﻧﺎ ﻋﺎﻳﺰ ﺍﻋﻤﻞ ﻙﻻﺱ ﻣﻮﻇﻔﻴﻦ ﻣﻜﺎﺗﺐ ﻭ ﻙﻻﺱ ﻋﻤﺎﻝ ﺍﻧﺘﺎﺝ ﻛﻞ ﻙﻻﺱ ﻓﻴﻬﻢ ﻟﻴﻬﺎ ﺍﻟﺪﺍﺗﺎ ﺑﺘﺎﻋﺘﻬﺎ ﻭ ﻟﻴﻬﺎ
ﺍﻟﻤﻴﺜﻮﺩ ﺑﺘﺎﻋﺘﻬﺎ ) ﺑﺎﻟﻤﻨﺎﺳﺒﺔ ﺍﻟﻤﻴﺜﻮﺩ ﺳﺎﻋﺎﺕ ﺑﻴﺘﻘﺎﻝ ﻋﻠﻴﻬﺎ ﺑﻴﻬﺎﻓﻴﻮﺭ behaviorﻋﻠﻰ ﺍﺳﺎﺱ ﺍﻧﻬﺎ ﺑﺘﻌﻤﻞ ﺣﺎﺟﺔ ﺑﺘﻄﺒﻊ ﺑﺘﻜﺮﻳﻴﺖ ﻭ ﻫﻜﺬﺍ ﻓﻴﺒﻘﻰ
ﺍﻟﻚﻻﺱ ﻟﻴﻬﺎ ﺩﺍﺗﺎ ﻭ ﺑﻴﻬﺎﻓﻴﻮﺭ ( ﺍﻟﻤﻬﻢ ﻧﻜﻤﻞ .ﺩﻟﻮﻗﺘﻰ ﺍﻟﻚﻻﺳﺰ ﺍﻻﺗﻨﻴﻦ ﺩﻭﻝ ﻛﻞ ﻭﺍﺣﺪﻩ ﻣﺨﺘﻠﻔﺔ ﻋﻦ ﺍﻟﺘﺎﻧﻴﺔ ﻓﻰ ﺍﻟﺪﺍﺗﺎ ﻭ ﺍﻟﺒﻴﻬﺎﻓﻴﻮﺭ ﺍﻟﺨﺎﺻﺔ ﺑﻴﻬﺎ
ﺑﺲ ﻫﻢ ﺍﻻﺗﻨﻴﻦ ﻫﻴﺒﻘﻰ ﻓﻴﻬﻢ ﺍﻟﺪﺍﺗﺎ ﻭ ﺍﻟﺒﻴﻬﺎﻓﻴﻮﺭ ﺑﺘﺎﻋﻪ class employeeﻷﻥ ﺍﻟﻤﻮﻇﻒ ﺳﻮﺍء ﻛﺎﻥ ﻋﺎﻣﻞ ﺍﻧﺘﺎﺝ ﺍﻭ ﻣﻮﻇﻒ ﻋﻠﻰ ﻣﻜﺘﺐ ﻻﺯﻡ
ﻳﻜﻮﻥ ﻋﻨﺪﻩ ﺭﻗﻢ ﺗﺄﻣﻴﻨﻰ ﻭ ﺍﺳﻢ ﻭ ﺍﻳﻤﻴﻞ ﻃﺐ ﻣﻌﻨﻰ ﻛﺪﻩ ﺍﻧﻰ ﻫﻜﺘﺐ ﺍﻟﺪﺍﻧﺎ ﺩﻯ ﻣﺮﺗﻴﻦ ﻳﻌﻨﻰ ﻣﺮﺓ ﻓﻰ ﻙﻻﺱ ﻋﻤﺎﻝ ﺍﻻﻧﺘﺎﺝ ﻭ ﻣﺮﺓ ﺗﺎﻧﻴﺔ ﻑ
ﻙﻻﺱ ﻣﻮﻇﻔﻴﻦ ﺍﻟﻤﻜﺎﺗﺐ ﻳﺒﻘﻰ ﺍﻧﺎ ﻛﺪﻩ ﻣﻌﻤﻠﺘﺶ ﺍﻭﺑﺠﻴﻜﺖ ﺍﻭﺭﻳﺎﻧﺘﻴﺪ .ﻃﺐ ﺍﻳﻪ ﺍﻟﺤﻞ ؟ ﻗﺎﻟﻚ ﺍﻧﺖ ﺗﺠﻴﺐ ﺍﻟﺪﺍﺗﺎ ﺍﻟﻠﻰ ﻣﺸﺘﺮﻛﺔ ﺑﻴﻨﻬﻢ ﻭ ﺗﺤﻄﻬﺎ ﻓﻰ
ﻙﻻﺱ ﻛﺒﻴﺮﺓ ﺗﺒﻘﻰ parentﻟﻴﻬﻢ ﻫﻢ ﺍﻻﺗﻨﻴﻦ ﻭ ﻫﻢ ﺍﻻﺗﻨﻴﻦ ﻳﻮﺭﺛﻮﺍ ﻣﻦ ﺍﻟﻚﻻﺱ ﺩﻯ ﺍﻟﺪﺍﺗﺎ ﻭ ﺍﻟﺒﻴﻬﺎﻓﻴﻮﺭ ﺑﺘﻮﻋﻬﺎ ﻭ ﻳﺒﻘﻰ ﻫﻢ ﻛﻞ ﺍﻟﻠﻰ ﻓﻴﻬﻢ ﺍﻟﺪﺍﺗﺎ
ﻭ ﺍﻟﺒﻴﻬﺎﻓﻴﻮﺭ ﺍﻟﻠﻰ ﺧﺎﺹ ﺑﻴﻬﻢ ﻫﻢ ﺑﺲ .ﻳﻌﻨﻰ ﺑﻔﺮﺽ ﺍﻥ ﻋﺎﻣﻞ ﺍﻻﻧﺘﺎﺝ ﻫﻴﺒﻘﻰ ﻋﻨﺪﻩ ﺩﺍﺗﺎ ﺯﻳﺎﺩﻩ ﻋﻦ ﺍﻟﻠﻰ ﻣﻮﺟﻮﺩﻩ ﻓﻰ class employee
ﺭﻗﻢ ﺍﻟﻤﻜﻨﺔ ﺍﻟﻠﻰ ﺷﻐﺎﻝ ﻋﻠﻴﻬﺎ ﻭ ﻣﻮﻇﻒ ﺍﻟﻤﻜﺘﺐ ﻫﻴﺒﻘﻰ ﻋﻨﺪﻩ ﺭﻗﻢ ﺍﻟﻤﻜﺘﺐ ﺍﻟﻠﻰ ﻗﺎﻋﺪ ﻋﻠﻴﻪ ﻫﻴﺒﻘﻰ ﺷﻜﻠﻬﺎ ﻛﺪﻩ ﻑ ﺍﻟﻜﻮﺩ
ﺍﻟـEncapsulation
ﺍﺣﻨﺎ ﻣﺘﻔﻘﻴﻦ ﻣﻦ ﻓﻮﻕ ﺍﻥ ﺍﻟﻚﻻﺱ ﺑﻴﺒﻘﻰ ﻓﻴﻬﺎ ﺩﺍﺗﺎ Dataﻭ ﺑﻴﻬﺎﻓﻴﻮﺭ Behaviorﺍﻧﺎ ﺑﺎﻟﻨﺴﺒﺎﻟﻰ ﺍﻟﺪﺍﺗﺎ ﺩﻯ ﻣﻬﻤﺔ ﺍﻭﻯ ﻣﻴﻨﻔﻌﺶ ﺍﻯ ﺣﺪ ﻳﺨﺶ
ﻋﻠﻴﻬﺎ ﺯﻯ ﻣﺎ ﺣﺼﻞ ﻓﻮﻕ ﻭ ﻋﻤﻠﻨﺎ mohamed.nameﻣﻴﻨﻔﻌﺶ ﻛﺪﻩ ﺍﺧﺶ ﺑﺸﻜﻞ ﻣﺒﺎﺷﺮ ﻋﻠﻰ ﺍﻟﺪﺍﺗﺎ nameﻓﺎﻧﺎ ﺍﻋﻤﻞ ﺍﻳﻪ ﺍﺧﻠﻰ ﺍﻟﺪﺍﺗﺎ
ﻛﻠﻬﺎ privateﻣﻴﻨﻔﻌﺶ ﺍﺧﺶ ﻋﻠﻴﻬﺎ ﺑﺸﻜﻞ ﻣﺒﺎﺷﺮ ,ﻭ ﺍﻋﻤﻞ ﺍﻧﺎ ﻣﻴﺜﻮﺩ publicﺍﺳﻤﻬﻢ settersﻭ gettersﺍﺟﻴﺐ ﻭ ﺍﺣﻂ ﺑﻴﻬﻢ ﺍﻟﺪﺍﺗﺎ ﺩﻯ
.ﻣﻌﻨﻰ ﻛﺪﻩ ﺍﻥ ﺍﻯ ﻙﻻﺱ ﻫﺘﺘﻌﻤﻞ ﻫﻴﺒﻘﻰ ﻣﺤﺘﻮﺍﻫﺎ Dataﻭ Behaviorﻭ setters&gettersﻟﻠﺪﺍﺗﺎ ﺑﺘﺎﻋﺘﻰ .
ﻧﺸﻮﻑ ﺑﺎﻟﻜﻮﺩ ﺷﻜﻠﻬﺎ:
____________________________________________________________________________
Prepared By
ﺍﻟﻠﻰ ﺍﻧﺎ ﻋﻤﻠﺘﻬﻢ ﺩﻭﻝ ﻋﺸﺎﻥ ﺍﺣﻂ ﺍﻭ ﺍﺟﻴﺐ ﺍﻯ ﻗﻴﻤﺔgetters ﻭsetters ﻻﺯﻡ ﺍﺳﺘﻌﻤﻞ ﺍﻟﻤﻴﺜﻮﺩmain methodﻭ ﻛﺪﻩ ﻟﻤﺎ ﺍﺭﻭﺡ ﺍﻟـ
ﻟﻠﺪﺍﺗﺎ ﺍﻟﻠﻰ ﻓﻮﻕ ﻣﺶ ﻫﻌﺮﻑ ﺍﻋﻤﻞ
name
object. = “ahmed ”; / // ← this is wrong
object.
setName( “
ahmed ”); /// ← this is valid
Polymorphismﺍﻟـ
: ﻣﻌﻨﺎﻫﺎ ﺑﺎﻟﺒﻠﺪﻯ ﺍﺧﻠﻰ ﺍﻟﻤﻴﺜﻮﺩ ﻳﺒﻘﺎﻟﻬﺎ ﺍﻛﺘﺮ ﻣﻦ ﺷﻜﻞ ﺃﻭ ﺍﺧﻠﻰ ﻧﻔﺲ ﺍﻟﻤﻴﺜﻮﺩ ﺗﻌﻤﻞ ﺍﻛﺘﺮ ﻣﻦ ﺣﺎﺟﺔ ﻭ ﺩﻩ ﺑﻴﺤﺼﻞ ﻋﻦ ﻃﺮﻳﻖ ﺣﺎﺟﺘﻴﻦ
: overloadingﺍﻟـ
ﺍﻟﻤﻴﺜﻮﺩ ﺍﻟﻠﻰ ﺑﻜﺘﺒﻬﺎ ﺑﻴﺒﻘﻰ ﻟﻴﻬﺎ ﺟﺰﺃﻳﻦ ﺍﻟﺠﺰﺃ ﺍﻟﻠﻰ ﺑﻴﺒﻘﻰ ﻓﻴﻪ ﺍﺳﻤﻬﺎ ﻭ ﺍﻟﺒﺎﺭﺍﻣﺘﺮﺯ ﺍﻟﻠﻰ ﺑﺘﺎﺧﺪﻫﺎ ﺩﻩ ﺍﺳﻤﻪ
Signnatureﺍﻟـ
public void int
printData( data)
{ } ﺍﻟﻠﻰ ﺑﻴﺘﻨﻔﺬ ﻭ ﺑﻴﺘﻜﺘﺐ ﺑﻴﻦ ﺍﻟﻘﻮﺳﻴﻦ
bodyﻭ ﺍﻟﺠﺰء ﺍﻟﺘﺎﻧﻰ ﺍﻟـ
____________________________________________________________________________
Prepared By
ﻓﻰ ﺍﻟـ overloadingﻗﺎﻟﻚ ﺍﻥ ﻣﻤﻜﻦ two functionsﻳﺎﺧﺪﻭﺍ ﻧﻔﺲ ﺍﻻﺳﻢ ﺑﺸﺮﻁ ﺍﻧﻚ ﺗﻐﻴﻴﺮ ﺍﻟﺪﺍﺗﺎ ﺗﺎﻳﺒﺲ ﺑﺘﺎﻋﻪ ﺍﻟﺒﺎﺭﺍﻣﻴﺘﺮﺯ ﺍﻟﻠﻰ
ﺩﺍﺥﻻﻟﻬﺎ ﻣﺚﻻ ﺑﺪﻝ int dataﺗﺒﻘﻰ double dataﺍﻭ ﺗﻐﻴﺮ ﻓﻰ ﻋﺪﺩﻫﻢ ﻳﻌﻨﻰ ﻳﺒﻘﻰ
( printData int
data, double )anotherData
ﻭ ﻓﻰ ﺍﻟﺤﺎﻟﺔ ﺩﻯ ﻟﻤﺎ ﺍﺟﻰ ﺍﻧﺎﺩﻯ ﻋﻠﻰ ﺍﻟﻤﻴﺜﻮﺩ ﻋﺸﺎﻥ ﺍﻧﻔﺬﻫﺎ ﻫﻴﺸﻮﻑ ﺍﻧﺎ ﻫﻨﺎﺩﻯ ﻋﻠﻰ ﺍﻧﻬﻮ signatureﻭ ﻳﻨﻔﺬ ﺍﻟـ bodyﺑﺘﺎﻋﻪ
ﻣﺜﺎﻝ ﺑﺎﻟﻜﻮﺩ
void{)(print
System. out
“(.printlninside empty print ;)”
}
void int
( print {)data
system. out. inside print int
“(println ;)”
}
v oid double
( print {)data
system. out.“(println
inside print double ;)”
}
void int
( print data,
double {)anotherData
System. out.
“(printlninside data and another data
;)”
}
ﻟﻤﺎ ﺍﺟﻰ ﺍﻧﺎﺩﻯ ﻋﻠﻰ ﺍﻟﻤﺒﻴﺜﻮﺩ ﺍﻟﻠﻰ ﺍﺳﻤﻬﺎ printﻫﺘﻄﺒﻊ ﺍﻧﻬﻮ ﺳﻄﺮ ﺑﻨﺎءﺍ ﻋﻠﻰ ﺍﻧﺎ ﻫﻨﺎﺩﻯ ﻋﻠﻴﻬﺎ ﺍﺯﺍﻯ
class
{Parent
void int
( print {)data
System. out.
“(println
inside the parent class
;)”
}
}
____________________________________________________________________________
Prepared By
___________________________________________________________________________
ﺍﻟـAbstraction
ﺩﻩ ﻣﻌﻨﺎﻩ ﺍﻥ ﻳﺒﻘﻰ ﻋﻨﺪﻯ ﻙﻻﺱ ﻣﻘﻔﻮﻟﻪ ﻣﺤﺪﺵ ﻳﻘﺪﺭ ﻳﻌﻤﻞ ﻣﻨﻬﺎ ﺍﻭﺑﺠﻴﻜﺖ ﻭ ﺩﻩ more encapsulationﻳﺒﻘﻰ ﻋﻨﺪﻯ ﻙﻻﺱ ﻓﻴﻬﺎ ﺩﺍﺗﺎ ﻭ
ﺑﻴﻬﺎﻓﻴﻮﺭ ﻣﻴﻘﻔﻮﻟﻴﻦ ﻣﺤﺪﺵ ﻳﻘﺪﺭ ﻳﻌﻤﻞ ﺍﻭﺑﺠﻴﻜﺖ ﻳﺴﺘﺨﺪﻡ ﺑﻴﻪ ﺍﻟﺪﺍﺗﺎ ﻭ ﺍﻟﺒﻴﻬﺎﻓﻴﻮﺭ ﺩﻭﻝ ﺍﻭﻣﺎﻝ ﻳﺒﻘﻰ ﺍﻳﻪ ﺍﻟﺤﻞ ؟ ﻳﺒﻘﻰ ﺍﻟﺤﻞ ﺍﻧﻰ ﺍﻋﻤﻞ ﻙﻻﺱ
ﺗﺄﻧﻬﺮﺕ ﺍﻟﺪﺍﺗﺎ ﻭ ﺍﻟﺒﻴﻬﺎﻓﻴﻮﺭ ﺩﻭﻝ ﻭ ﺗﺒﻘﻰ ﻛﺪﻩ ﺍﺧﺪﺗﻬﻢ ﻭ ﺍﻋﻤﻞ ﺑﻘﻰ ﺍﻭﺑﺠﻴﻜﺖ ﻣﻦ ﺍﻟﻚﻻﺱ ﺍﻟﺠﺪﻳﺪﺓ ﺩﻯ ﺍﺧﺶ ﺑﻴﻬﺎ ﻋﻠﻰ ﺍﻟﺪﺍﺗﺎ ﺑﺘﺎﻋﺘﻬﺎ ﻭ ﺑﺘﺎﻋﻪ
ﺍﻟﻚﻻﺱ ﺍﻻﺑﺴﺘﺮﺍﻛﺖ ﺩﻯ
ﻓﻴﻪ ﺣﺎﺟﺔ ﺍﺳﻤﻬﺎ Interfaceﺑﺘﻌﻤﻞ ﻧﻔﺲ ﺍﻟﻚﻻﻡ ﺩﻩ ﺑﺎﻟﻈﺒﻂ .ﻃﺐ ﺍﻳﻪ ﺍﻟﻔﺮﻕ ﺑﻴﻦ ﺍﻻﻧﺘﺮﻓﻴﺲ ﻭ ﺍﻻﺑﺴﺘﺮﺍﻛﺖ ﻙﻻﺱ ؟ ﻃﺎﻟﻤﺎ ﺍﻻﺗﻨﻴﻦ ﺑﻴﻌﻤﻠﻮﺍ
ﻧﻔﺲ ﺍﻟﺤﺎﺟﺔ ؟ !
ﺍﻟﻚﻻﺱ ﺍﻻﺑﺴﺘﺮﺍﻛﺖ ﺣﻠﻬﺎ ﺍﻧﻰ ﺍﻋﻤﻞ ﺍﻧﻬﺮﺕ ﻟﻴﻬﺎ .ﺍﻻﻧﺘﺮﻓﻴﺲ ﺣﻠﻪ ﺍﻧﻰ ﺍﻋﻤﻠﻪ ﺣﺎﺟﺔ ﺷﺒﻪ ﺍﻻﻧﻬﺮﺕ ﻛﺪﻩ ﺍﺳﻤﻬﺎ implementﺯﻳﻬﺎ ﺑﺎﻟﻈﺒﻂ .
ﺍﻟﻔﺮﻕ ﺑﻘﻰ ﺍﻧﻰ ﻣﻘﺪﺭﺵ ﺍﻋﻤﻞ ﺍﻧﻬﺮﺕ ﻷﻛﺘﺮ ﻣﻦ ﻙﻻﺱ
ﻳﻌﻨﻰ ﺍﻧﺎ ﺍﻟﻚﻻﺱ ﺑﺘﺎﻋﺘﻰ ﻛـ childﺑﺘﻮﺭﺙ ﻣﻦ ﻙﻻﺱ ﺍﺑﺴﺘﺮﺍﻛﺖ ﻛـ parentﻣﺶ ﻫﻘﺪﺭ ﻳﻜﻮﻧﻠﻰ ﺍﻛﺘﺮ ﻣﻦ ﺑﺎﺭﻧﺖ ﻭﺍﺣﺪ ﺑﺲ ﻳﻌﻨﻰ
class child extends
ﺍﻟﻚﻻﻡ ﺩﻩ ﻏﻠﻂ ← parentone , parent two ///
ﻣﻘﺪﺭﺵ ﺍﻭﺭﺙ ﻏﻴﺮ ﻣﻦ ﻙﻻﺱ ﻭﺍﺣﺪﻩ ﺑﺲ
ﺍﻧﻤﺎ ﺑﻘﻰ ﺍﻻﻧﺘﺮﻓﻴﺲ ﺍﻗﺪﺭ ﺍﻋﻤﻞ ﺍﻣﺒﻠﻴﻤﻨﺖ ﻷﻛﺘﺮ ﻣﻦ ﺍﻧﺘﺮﻓﻴﺲ
class child implementinterfaceOne , interfaceTwo , interfaceThree ﺍﻟﻚﻻﻡ ﺩﻩ ﺻﺢ ← //
____________________________________________________________________________
Prepared By