Professional Documents
Culture Documents
3 التغليف في جافا - Java encapsulation
3 التغليف في جافا - Java encapsulation
Java
اﻟﺘﻐﻠﻴﻒ ﻓﻲ ﺟﺎﻓﺎ
اﻟﺘﻐﻠﻴﻒ :ﻳﻌﻨﻲ Encapsulationﻓﻲ اﻟﻠﻐﺔ اﻹﻧﺠﻠﻴﺰﻳﺔ .و ﻫﻮ ﻋﺒﺎرة ﻋﻦ أﺳﻠﻮب ﻳﻤﻜﻦ اﺗﺒﺎﻋﻪ ﻹﺧﻔﺎء اﻟﺒﻴﺎﻧﺎت اﻷﺳﺎﺳﻴﺔ ﻓﻲ اﻟﻜﻼس ,أي ﻹﺧﻔﺎء اﻟﺨﺼﺎﺋﺺ اﻟﻤﻮﺟﻮدة ﻓﻴﻪ ) ,( Global Variablesو
ﻋﻠﻰ اﻟﺘﻌﺎﻣﻞ ﻣﻊ ﻫﺬه اﻟﺨﺼﺎﺋﺺ ﻓﻘﻂ ﻣﻦ ﺧﻼل دوال ﻳﻘﻮم ﺑﺈﻧﺸﺎﺋﻬﺎ اﻟﻤﺒﺮﻣﺞ اﻷﺳﺎﺳﻲ ﻟﻠﻜﻼس.
ﺑﻤﺎ أن ﻓﻜﺮة اﻟﺘﻐﻠﻴﻒ اﻷﺳﺎﺳﻴﺔ ﻫﻲ إﺧﻔﺎء اﻟﺒﻴﺎﻧﺎت ﻣﻦ ﺟﻬﺔ و إﺗﺎﺣﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ ﻣﻦ ﺟﻬﺔ أﺧﺮى.
أول ﻣﺎ ﻳﺠﺐ أن ﻳﺨﻄﺮ ﻓﻲ ﺑﺎﻟﻚ ﻫﻮ أﻧﻪ ﻳﺠﺐ ﺗﻌﺮﻳﻒ ﺟﻤﻴﻊ اﻟﺨﺼﺎﺋﺺ ) أي اﻟﻤﺘﻐﻴﺮات اﻟﺘﻲ ﺳﺘﺤﻔﻆ اﻟﺒﻴﺎﻧﺎت ( اﻟﻤﻮﺟﻮدة ﻓﻲ اﻟﻜﻼس ﻛـ privateﻷن ﺗﻌﺮﻳﻒ اﻟﺨﺼﺎﺋﺺ ﻛـ privateﻳﻌﻨﻲ أﻧﻪ
ﺛﺎﻧﻲ ﺷﻴﻰء ﻋﻠﻴﻚ اﻟﺘﻔﻜﻴﺮ ﻓﻴﻪ ﻫﻮ إﻳﺠﺎد ﻃﺮﻳﻘﺔ ﻟﻠﻮﺻﻮل إﻟﻰ ﻫﺬه اﻟﺨﺼﺎﺋﺺ ﻣﻦ اﻟﺨﺎرج .ﻟﺬﻟﻚ ﻋﻠﻴﻚ ﺗﺠﻬﻴﺰ دوال ﻧﻮﻋﻬﺎ publicﻟﻠﺘﻌﺎﻣﻞ ﻣﻊ ﻫﺬه اﻟﺨﺼﺎﺋﺺ ,ﻷن اﻟﺪوال اﻟﺘﻲ ﻧﻮﻋﻬﺎ public
ﻣﻜﺎن.
ً
إذا ﻟﺘﺤﻘﻴﻖ ﻣﺒﺪأ اﻟﺘﻐﻠﻴﻒ ,ﻋﻠﻴﻚ ﺗﻌﺮﻳﻒ اﻟﺨﺼﺎﺋﺺ ﻛـ privateو ﺗﻌﺮﻳﻒ اﻟﺪوال اﻟﺘﻲ ﺗﺴﺘﺨﺪم ﻟﻠﻮﺻﻮل إﻟﻴﻬﻢ ﻛـ . public
ﻋﻨﺪ اﻟﺘﻌﺎﻣﻞ ﻣﻊ أي ﻣﺘﻐﻴﺮ ) أو ﺧﺎﺻﻴﺔ ( ﻓﻌﻨﺪك ﺧﻴﺎرﻳﻦ و ﻫﻤﺎ إﻣﺎ إﻋﻄﺎءه ﻗﻴﻤﺔ ﺟﺪﻳﺪة و إﻣﺎ اﻟﺤﺼﻮل ﻋﻠﻰ اﻟﻘﻴﻤﺔ اﻟﻤﻮﺟﻮدة ﻓﻴﻪ .و ﺑﻤﺎ أﻧﻪ ﻳﺠﺐ ﺑﻨﺎء دوال ﻟﻠﺘﻌﺎﻣﻞ ﻣﻊ ﻛﻞ ﺧﺎﺻﻴﺔ ﻣﻦ اﻟﺨﺼﺎﺋﺺ
إﺑﺪأ إﺳﻢ ﻛﻞ داﻟﺔ اﻟﻬﺪف ﻣﻨﻬﺎ إﻋﻄﺎء ﻗﻴﻤﺔ ﻟﻠﺨﺎﺻﻴﺔ ﺑﺎﻟﻜﻠﻤﺔ setﺛﻢ إﺳﻢ اﻟﺨﺎﺻﻴﺔ.
إﺑﺪأ إﺳﻢ ﻛﻞ داﻟﺔ اﻟﻬﺪف ﻣﻨﻬﺎ اﻟﺤﺼﻮل ﻋﻠﻰ ﻗﻴﻤﺔ اﻟﺨﺎﺻﻴﺔ ﺑﺎﻟﻜﻠﻤﺔ getﺛﻢ إﺳﻢ اﻟﺨﺎﺻﻴﺔ.
اﻵن ﺳﻨﻘﻮم ﺑﺈﻧﺸﺎء ﻛﻼس إﺳﻤﻪ Employeeو ﻓﻜﺮﺗﻪ ﺗﺨﺰﻳﻦ ﻣﻌﻠﻮﻣﺎت اﻟﻤﻮﻇﻔﻴﻦ ﻣﺜﻞ اﻹﺳﻢ , nameاﻟﺮاﺗﺐ , salaryاﻟﻌﻤﺮ . age
اﻟﻤﺜﺎل اﻷول
{ yee
اﻟﻜﻼس Employeeﻳﻤﻠﻚ 3ﺧﺼﺎﺋﺺ //
اﻹﺳﻢ ﻧﻮﻋﻪ Stringﻷﻧﻪ ﻋﺒﺎرة ﻋﻦ ﻧﺺ //
اﻟﻌﻤﺮ ﻧﻮﻋﻪ intﻷﻧﻪ ﻋﺒﺎرة ﻋﻦ رﻗﻢ //
اﻟﺮاﺗﺐ ﻧﻮﻋﻪ doubleﻷﻧﻪ ﻋﺒﺎرة ﻋﻦ رﻗﻢ ﻛﺒﻴﺮ ﻳﻤﻜﻦ أن ﻳﺤﺘﻮي ﻋﻠﻰ ﻓﺎﺻﻠﺔ //
https://harmash.com/java/java-encapsulation/ 1/5
23/04/2021 | Java encapsulationاﻟﺗﻐﻠﯾف ﻓﻲ ﺟﺎﻓﺎ
{
اﻵن ﺳﻨﻘﻮم ﺑﺘﻌﺮﻳﻒ اﻟﺨﺼﺎﺋﺺ ﻛـ privateو ﺳﻨﻘﻮم ﺑﺘﻌﺮﻳﻒ دوال ﻧﻮﻋﻬﺎ publicﻟﻠﺘﻌﺎﻣﻞ ﻣﻊ ﻫﺬه اﻟﺨﺼﺎﺋﺺ.
اﻟﻤﺜﺎل اﻟﺜﺎﻧﻲ
{ yee
{ )tName(String n ﻫﺬه اﻟﺪاﻟﺔ ﻧﻌﻄﻴﻬﺎ إﺳﻢ ﻓﺘﻘﻮم ﺑﻮﺿﻌﻪ ﻟﻠﺨﺎﺻﻴﺔ // name
{ )tAge(int a ﻫﺬه اﻟﺪاﻟﺔ ﻧﻌﻄﻴﻬﺎ رﻗﻢ ﻓﺘﻘﻮم ﺑﻮﺿﻌﻪ ﻟﻠﺨﺎﺻﻴﺔ // age
{ )tSalary(double s ﻫﺬه اﻟﺪاﻟﺔ ﻧﻌﻄﻴﻬﺎ رﻗﻢ ﻓﺘﻘﻮم ﺑﻮﺿﻌﻪ ﻟﻠﺨﺎﺻﻴﺔ // salary
;
https://harmash.com/java/java-encapsulation/ 2/5
23/04/2021 | Java encapsulationاﻟﺗﻐﻠﯾف ﻓﻲ ﺟﺎﻓﺎ
ً
أﻳﻀﺎ أﻧﻪ ﻳﺘﻴﺢ ﻟﻚ وﺿﻊ ﺷﺮوط ﻟﺘﺨﺰﻳﻦ اﻟﺒﻴﺎﻧﺎت ,ﻛﻤﺎ أﻧﻪ ﻳﺘﻴﺢ ﻟﻚ اﻟﺤﺼﻮل ﻋﻠﻰ اﻟﺒﻴﺎﻧﺎت ﺑﺎﻟﻄﺮﻳﻘﺔ اﻟﺘﻲ ﺗﺮﻳﺪﻫﺎ. ﻣﻦ ﻓﻮاﺋﺪ اﻟﺘﻐﻠﻴﻒ
اﻵن ﺳﻨﻘﻮم ﺑﺈﺿﺎﻓﺔ ﺑﻌﺾ اﻟﺘﻌﺪﻳﻼت ﻋﻠﻰ دوال اﻟـ Setterو اﻟـ . Getter
ً
أﻳﻀﺎ ﻣﻊ وﺿﻊ ﺑﻌﺾ اﻟﻘﻴﻮد ﻋﻨﺪ إدﺧﺎل اﻟﺒﻴﺎﻧﺎت ,و إﺿﺎﻓﺔ ﺑﻌﺾ اﻟﺘﻌﺪﻳﻼت ﻋﻨﺪ ﺟﻠﺐ اﻟﺒﻴﺎﻧﺎت ً
إذا ﻫﻨﺎ ﻗﻤﻨﺎ ﺑﺘﻄﺒﻴﻖ ﻣﺒﺪأ اﻟﺘﻐﻠﻴﻒ
اﻟﻤﺜﺎل اﻟﺜﺎﻟﺚ
{ yee
;name
;age
;salary
{ )(getName ﻫﺬه اﻟﺪاﻟﺔ ﺗﺮﺟﻊ ﻗﻴﻤﺔ اﻟﺨﺎﺻﻴﺔ nameﻣﻊ إﻇﻬﺎر ﺟﻤﻠﺔ ﺻﻐﻴﺮة ﻗﺒﻠﻬﺎ //
;me: " +name
{ )(Age
;
{ )(getSalary
;ary
{ )tName(String n ﻫﺬه اﻟﺪاﻟﺔ ﻧﻌﻄﻴﻬﺎ رﻗﻢ ﻓﺘﻘﻮم ﺑﻮﺿﻌﻪ ﻟﻠﺨﺎﺻﻴﺔ nameﺑﺸﺮط أن ﻳﻜﻮن اﻹﺳﻢ أﻛﺒﺮ ﻣﻦ 3أﺣﺮف //
{ )th() < 3
;)"!.out.println("Name is too short, name can't be less then 3 characters
;n
{ )tAge(int a ﻫﺬه اﻟﺪاﻟﺔ ﻧﻌﻄﻴﻬﺎ رﻗﻢ ﻓﺘﻘﻮم ﺑﻮﺿﻌﻪ ﻟﻠﺨﺎﺻﻴﺔ // age
https://harmash.com/java/java-encapsulation/ 3/5
23/04/2021 | Java encapsulationاﻟﺗﻐﻠﯾف ﻓﻲ ﺟﺎﻓﺎ
HARMASH.COM
tSalary(double { )s ﻫﺬه اﻟﺪاﻟﺔ ﻧﻌﻄﻴﻬﺎ رﻗﻢ ﻓﺘﻘﻮم ﺑﻮﺿﻌﻪ ﻟﻠﺨﺎﺻﻴﺔ // salary ﻣﻘﺎﻻت اﻟﻤﻜﺘﺒﺔ ▾
;
{
;))(.println(e.getName
" .println("Age: ;))(+e.getAge
;))(.println("Salary: " +e.getSalary
• ﻻﺣﻆ أﻧﻪ ﻟﻢ ﻳﻘﺒﻞ اﻹﺳﻢ اﻟﺬي أدﺧﻠﻨﺎه ﻟﻪ ﻷﻧﻪ أﺻﻐﺮ ﻣﻦ ﺛﻼﺛﺔ أﺣﺮف ,ﻟﺬﻟﻚ ﻃﺒﻊ اﻟﺮﺳﺎﻟﺔ اﻟﺘﻲ ﻗﻤﻨﺎ ﺑﺘﺠﻬﻴﺰﻫﺎ ﻓﻲ ﺣﺎل ﺗﻢ إدﺧﺎل ﻗﻴﻤﺔ أﺻﻐﺮ ﻣﻦ ﺛﻼﺛﺔ أﺣﺮف ,ﻛﻤﺎ أﻧﻪ ﻟﻢ ﻳﻀﻊ اﻹﺳﻢ اﻟﺬي ﻗﻤﻨﺎ ﺑﺈ
ﻓﻮاﺋﺪ اﻟﺘﻐﻠﻴﻒ
ﻳﻤﻜﻨﻪ ﺟﻌﻞ اﻷﺷﻴﺎء اﻟﻤﻮﺟﻮدة ﻓﻲ اﻟﻜﻼس ﻗﺎﺑﻠﺔ ﻟﻠﻘﺮاءة أو ﻟﻠﻜﺘﺎﺑﺔ ﻣﻦ ﻗﺒﻞ اﻟﻜﻼﺳﺎت اﻟﺨﺎرﺟﻴﺔ.
ّ
ﻣﻔﺼﻞ ,و ﻫﻮ اﻟﻤﻜﺎن ﻣﺒﺴﻂ و
ّ ﻫﺮﻣﺶ ﻫﻮ ﻣﻮﻗﻊ ﺗﻌﻠﻴﻤﻲ ﻣﺠﺎﻧﻲ ﻳﻬﺘﻢ ﺑﻌﻠﻮم اﻟﻜﻤﺒﻴﻮﺗﺮ و ﻳﻘﺪم إﻟﻴﻚ اﻟﻤﻌﺮﻓﺔ ﺑﺸﻜﻞ
ً
ﻣﺒﺪﻋﺎ ﻓﻲ اﻟﻌﺎﻟﻢ اﻟﺮﻗﻤﻲ. ً
ﻣﺤﺘﺮﻓﺎ و ً
ﻣﺒﺮﻣﺠﺎ اﻟﻤﻨﺎﺳﺐ ﻷي ﺷﺨﺺ ﻳﻄﻤﺢ ﺑﺄن ﻳﺼﺒﺢ
https://harmash.com/java/java-encapsulation/ 4/5
23/04/2021 | Java encapsulationاﻟﺗﻐﻠﯾف ﻓﻲ ﺟﺎﻓﺎ
ﻓﻲ ﺣﺎل ﻛﻨﺖ ﺗﺮﻏﺐ ﺑﺘﻘﺪﻳﻢ دﻋﻢ ﻣﺎدي ﻟﻠﻤﻮﻗﻊ ,ﻳﻤﻜﻨﻚ اﻟﺘﺒﺮع ﻋﺒﺮ Paypalأو Patreonﺑﺎﻟﻤﺒﻠﻎ اﻟﺬي ﺗﺮﻳﺪه
ﻣﺤﺘﻮى اﻟﻤﻮﻗﻊ ﻳﺨﻀﻊ ﻟﺮﺧﺼﺔ ) (CC BY-NC-ND 4.0اﻟﺘﻲ ﻻ ﺗﺴﻤﺢ ﺑﺎﺳﺘﺨﺪام اﻟﺸﺮوﺣﺎت ﻷﻏﺮاض ﺗﺠﺎرﻳﺔ ,إﺟﺮاء ﺗﻌﺪﻳﻞ
ﻋﻠﻴﻬﺎ و ﻧﺸﺮﻫﺎ ﻓﻲ ﻣﻮﻗﻊ آﺧﺮ ,وﺿﻊ اﻟﺸﺮوﺣﺎت ﻓﻲ ﺗﻄﺒﻴﻖ أو ﻓﻲ ﻛﺘﺎب إﻻ ﻓﻲ ﺣﺎل أﺧﺬ ﻣﻮاﻓﻘﺔ ﺻﺮﻳﺤﺔ ﻣﻦ إدارة اﻟﻤﻮﻗﻊ.
© 2020 Harmash. All Content is licensed under CC BY-NC-ND 4.0 unless mentioned otherwise.
https://harmash.com/java/java-encapsulation/ 5/5