Lecture 8 - Built in and User-Defined Methods
Lecture 8 - Built in and User-Defined Methods
By : Faraj Najem
Spring , 2020
اﻟﮭدف ﻣن اﻟﻣﺣﺎﺿرة اﻟﺛﺎﻣﻧﺔ
ﻣﺎ ھﻲ اﻟداﻟﺔ Method؟ ❑
ﻟﻣﺎذا ﻧﺣﺗﺎج اﻟﻰ اﻟدوال ؟ ❑
ﻣزاﯾﺎ او ﻓواﺋد اﺳﺗﺧدام اﻟدوال . ❑
اﻧواع اﻟدوال ﻓﻰ ﻟﻐﺔ اﻟﺟﺎﻓﺎ ؟ ❑
ﻛﯾف ﻧﻛون داﻟﺔ ﺧﺎﺻﺔ ﺑﻧﺎ user -methods؟ ❑
راس اﻟداﻟﺔ او ﺗوﻗﯾﻊ اﻟداﻟﺔ method signature
اﻻﻣر void
اﻻﻣر return
? What is a method and why it is needed
ﻣﺎ ھﻲ اﻟداﻟﺔ ؟
اﻟداﻟﺔ ھﻰ ﻋﺑﺎرة ﻋن ﻣﺟﻣوﻋﺔ ﻣن اﻟﺗﻌﻠﯾﻣﺎت اﻟﻣﺟﻣﻌﺔ ﺗﺣت اﺳم واﺣد . ❑
❑ ﯾﻣﻛن اﺳﺗدﻋﺎؤھﺎ ﻓﻰ اى ﻧﻘطﺔ ﻣن اﻟﺑرﻧﺎﻣﺞ ﻣن ﺧﻼل ﻛﺗﺎﺑﺔ اﺳﻣﮭﺎ ﻓﻰ اﻟﺑرﻧﺎﻣﺞ
❑ وﺑﻌد اﻟﺗﻧﻔﯾذ ﯾﺗم اﻟرﺟوع اﻟﻰ ﻧﻘطﺔ اﻻﺳﺗدﻋﺎء اﻟرﺋﯾﺳﯾﺔ ﻓﻰ اﻟﺑرﻧﺎﻣﺞ
وھﻲ ﻋﺑﺎرة ﻋن طرق ودوال ﻣن ﺗﻌرﯾف )ﺗﺻﻣﯾم( اﻟﻣﺑرﻣﺞ أو ﺗﻛون ﺟﺎھزة ﻣﺳﺑﻘﺎ ﻓﻲ اﻟﺑرﻧﺎﻣﺞ ❑
,واﻟﻐرض ﻣﻧﮭﺎ ھو ﺗﺳﮭﯾل ﻋﻣﻠﯾﺔ اﻟﺑرﻣﺟﺔ ﻓﻲ اﻷﺷﯾﺎء اﻟﺗﻲ ﺗﺗﻛرر أﻛﺛر ﻣن ﻣرة ﻓﻲ اﻟﺑرﻧﺎﻣﺞ.
ﻓﻲ ﺣﺎﻟﺔ ﺗﻛرار ﻣﺟﻣوﻋﺔ ﻣن ﺳطور اﻷواﻣر أﻛﺛر ﻣن ﻣرة ﻓﻲ ﻣواﺿﻊ ﻣﺧﺗﻠﻔﺔ ﻓﻲ اﻟﺑرﻧﺎﻣﺞ ﻓﺈن ❑
أواﻣر اﻟﺗﻛرار > <for-while-do whileﻟن ﺗﻛون ذات ﻣﻧﻔﻌﺔ.
وﻟذﻟك ﯾﺗم ﻛﺗﺎﺑﺔ ھذه اﻟﺟﻣل او اﻻواﻣر ﺑﺷﻛل ﻣﻧﻔﺻل ﻋن اﻟﺑرﻧﺎﻣﺞ اﻟرﺋﯾﺳﻲ ﺑواﺳطﺔ اﻟدوال . ❑
? What is a method and why it is needed
ﻣزاﯾﺎ و ﻓواﺋد اﺳﺗﺧدام اﻟدوال
ﻋدم اﻟﺣﺎﺟﺔ إﻟﻰ ﺗﻛرار اﻟﺗﻌﻠﯾﻣﺎت ﺣﯾث ﯾﺗم إﻧﺷﺎء اﻟداﻟﺔ ﻣرة واﺣدة وﯾﻣﻛن اﺳﺗدﻋﺎﺋﮭﺎ أﻛﺛر ❑
ﻣن ﻣرة ﻋﻧد اﻟﺣﺎﺟﺔ إﻟﯾﮭﺎ .
ﺗﻘﺳﯾم اﻟﺑرﻧﺎﻣﺞ اﻟﻰ ﻣﺟﻣوﻋﺔ ﺑراﻣﺞ ﻓرﻋﯾﺔ )دوال( ﺑﺣﯾث ﯾﻛون ﻟﻛل ﻣﻧﮭﺎ وظﯾﻔﺔ ﻣﺣددة , ❑
ﻓﺗﺻﺑﺢ ھﯾﻛﻠﯾﺔ اﻟﺑرﻧﺎﻣﺞ اﻛﺛر وﺿوﺣﺎ و ﺗﻧظﯾﻣﺎ .
اﺳﺗﺧدام اﻟدوال ﯾﺳﮭل ﻋﻣﻠﯾﺔ ﻣﺗﺎﺑﻌﺔ وﺻﯾﺎﻧﺔ اﻟﺷﻔرة اﻟﻣﺻدرﯾﺔ ﻟﻠﺑرﻧﺎﻣﺞ . ❑
اﻟﺑرﻣﺟﺔ اﻟﺧوارزﻣﯾﺔ اﻟﻌﺎدﯾﺔ. java.utilﺗﺣﺗوي ھذه اﻟﺑﺎﻗﺔ ﻋﻠﻰ ﻓﺋﺎت ﺗﻣﺛل ھﯾﺎﻛل ﺑﯾﺎﻧﺎت ﻋﺎﻣﺔ اﻻﺳﺗﻌﻣﺎل ﻣﺛل اﻟﺻﻔوف و
اﻟﻣﺟﻣوﻋﺎت و ﻏﯾرھﺎ.
اﻟﺑراﻣﺞ اﻟﺗﻲ ﺗﺗطﻠب ﻣﻌﺎﻣﻠﺔ ﻓورﯾﺔ ﻣﻊ اﻟﻣﺳﺗﺧدم. java.ioﺗﺣﺗوي ھذه اﻟﺑﺎﻗﺔ ﻋﻠﻰ ﻓﺋﺎت ﺗﺗﺻرف ﻓﻲ ﻋﻣﻠﯾﺎت ﺗﺻدﯾر و ﺗورﯾد اﻟﺑﯾﺎﻧﺎت.
ﻛل اﻟﺑراﻣﺞ /ﻛل اﻟﺗطﺑﯾﻘﺎت. java.langﺗﺣﺗوي ھذه اﻟﺑﺎﻗﺔ ﻋﻠﻰ اﻟﻔﺋﺎت اﻟﻣﺗﻌﻠﻘﺔ ﺑﺗﻧﻔﯾذ اﻟﺑرﻧﺎﻣﺞ و ﻣراﻗﺑﺗﮫ ،ﺑﻣﺎ ﻓﯾﮭﺎ اﻟﻔﺋﺎت
اﻟﺗﻲ ﺗﻌﺎﻟﺞ أﺧطﺎء اﻟﺗﻧﻔﯾذ و ﺑﻌض اﻟﻔﺋﺎت اﻟﻌﺎﻣﺔ .ﻧظرا ﻷھﻣﯾﺗﮭﺎ ،ﻓﺈن ھذه اﻟﺑﺎﻗﺔ
ﯾﻘﻊ ﺗورﯾدھﺎ ﺿﻣﻧﯾﺎ ﻓﻲ ﻛل ﺑرﻧﺎﻣﺞ.
اﻟﺗطﺑﯾﻘﺎت اﻟﮭﻧدﺳﯾﺔ و ﺗطﺑﯾﻘﺎت اﻟرﯾﺎﺿﯾﺎت. java.mathﺗﺣﺗوي ھذه اﻟﺑﺎﻗﺔ ﻋﻠﻰ ﻓﺋﺎت ﺗﻘوم ﺑﻌﻣﻠﯾﺎت ﺣﺳﺎﺑﯾﺔ ،ﺑﺄي دﻗﺔ ﯾطﻠﺑﮭﺎ اﻟﻣﺳﺗﺧدم.
ﺗطﺑﯾﻘﺎت اﻟﺗﺻرف اﻟﺗﻲ ﺗﺗطﻠب ﻗواﻋد ﺑﯾﺎﻧﺎت. java.sqlﺗﺣﺗوي ھذه اﻟﺑﺎﻗﺔ ﻋﻠﻰ ﻓﺋﺎت ﺗﺧﺗص ﻓﻲ ﻋﻣﻠﯾﺎت ﻋﻠﻰ ﻗواﻋد اﻟﺑﯾﺎﻧﺎت.
ﺗطﺑﯾﻘﺎت ﺗﺗطﻠب واﺟﮭﺎت رﺳوﻣﯾﺔ ﻣﻊ اﻟﻣﺳﺗﺧدم. java.awtﺗﺣﺗوي ھذه اﻟﺑﺎﻗﺔ ﻋﻠﻰ ﻓﺋﺎت ﺗﺧﺗص ﻓﻲ اﻟرﺳم و ﻓﻲ إﻧﺟﺎز واﺟﮭﺎت رﺳوﻣﯾﺔ.
ﺗطﺑﯾﻘﺎت ﺗﺗطﻠب واﺟﮭﺎت رﺳوﻣﯾﺔ ﻣﻊ اﻟﻣﺳﺗﺧدم. java.swingﺗﻣدد ھذه اﻟﺑﺎﻗﺔ إﻣﻛﺎﻧﯾﺎت و ﻗدرات اﻟﺑﺎﻗﺔ اﻟﺳﺎﺑﻘﺔ.
ﺗطﺑﯾﻘﺎت ﺗﺗطﻠب إﺟراءات أﻣﻧﯾﺔ. java.securityﺗﺣﺗوي ھذه اﻟﺑﺎﻗﺔ ﻋﻠﻰ ﻓﺋﺎت ﺗﺧﺗص ﻓﻲ ﺗﻧﻔﯾذ إﺟراءات أﻣﻧﯾﺔ ﻓﻲ اﻟﺑرﻧﺎﻣﺞ ،ﻣﺛل
ﻣراﻗﺑﺔ اﻟﻣﺳﺗﺧدﻣﯾن و ﺻﯾﺎﻧﺔ اﻟوارد و ﻏﯾر ذﻟك.
Math class methods اﻟدوال اﻟﺟﺎھزة-1
-1اﻟدوال اﻟﺟﺎھزة Math class methods
ﻛﯾﻔﯾﺔ اﺳﺗدﻋﺎء و اﺳﺗﺧدام اﻟدوال اﻟﺟﺎھزة . built–in
وﯾﻣﻛن اﺳﺗدﻋﺎء اﻟدوال ﺑﻛﺗﺎﺑﺔ اﺳم اﻟﻔﺻﯾﻠﺔ )اﻟﻔﺋﺔ( classﻣﺗﺑوﻋﺎ ً ﺑﻧﻘطﺔ ﺑﻌدھﺎ اﺳم اﻟطرﯾﻘﺔ ﺛم
ﻗﺎﺋﻣﺔ اﻟﻣﻌﺎﻣﻼت داﺧل أﻗواس داﺋرﯾﺔ ﻛﻣﺎ ﯾﻠﻲ:
)Class_Name.method_Name(Argument List
ﻓﻣﺛﻼ إذا أردﻧﺎ اﻟﺣﺻول ﻋﻠﻰ اﻟﺟذر أﻟﺗرﺑﯾﻌﻲ ﻟﻠﻌدد) (25ﻓﯾﻣﻛن ﻛﺗﺎﺑﺔ اﻟﺻﯾﻐﺔ ﻛﺎﻟﺗﺎﻟﻲ:
; ))System.out.print(Math.sqrt (25
-1اﻟدوال اﻟﺟﺎھزة Math class methods
اﻟﻣطﻠوب ﻋﻣل ﺑرﻧﺎﻣﺞ ﯾﺳﺗﻘﺑل ﻗﯾﻣﺔ ﻣن ﻟوﺣﺔ اﻟﻣﻔﺎﺗﯾﺢ ﺛم ﯾﻘوم ﺑﺈﯾﺟﺎد اﻟﺟذر اﻟﺗرﺑﯾﻌﻲ وﻣرﺑﻊ
ھذا اﻟرﻗم وذﻟك ﺑﺎﺳﺗﺧدام اﻟدوال اﻟﺟﺎھزة ﻓﻲ ﻟﻐﺔ اﻟﺟﺎﻓﺎ .
-2اﻟدوال اﻟﻣﻌرﻓﺔ ﻣن ﻗﺑل اﻟﻣﺳﺗﺧدم user-defined
اﻟﺷﻛل اﻟﻌﺎم ﻟﻠداﻟﺔ :
-2اﻟدوال اﻟﻣﻌرﻓﺔ ﻣن ﻗﺑل اﻟﻣﺳﺗﺧدم user-defined
اﻟﺷﻛل اﻟﻌﺎم ﻟﻠداﻟﺔ :
ﻗﺎﺑﻠﯾﺔ اﻟوﺻول Access Modifier
ﻋﺎﻣﺔ : publicإﻣﻛﺎﻧﯾﺔ اﻟوﺻول إﻟﯾﮭﺎ ﻣن ﻛﺎﻓﺔ classesﻣن داﺧل وﺧﺎرج ال ❑
.package
ﻣﺣﻣﯾﺔ : protectedﻓﮭﻲ ﻋﺎدة ﺗﺳﺗﻌﻣل ﻋﻧد اﻟوراﺛﺔ ﻓﯾﻣﻛن ل classاﻻﺑن ﻣن ❑
اﻟوﺻول إﻟﻲ إي ﺷﻲ ﻣﻌرف ﻣﺣﻣﻲ داﺧل ال classاﻷب.
ﻋﻧد اﺳﺗﺧدام اﻟﻛﻠﻣﺔ staticﻓﻰ ﺗﻌرﯾف اﻟداﻟﺔ :ﺗﺻﺑﺢ اﻟداﻟﺔ داﻟﺔ اﻟﻔﺋﺔ و ﻟﻠﯾﺳت داﻟﺔ اﻟﻛﺎﺋن
class’s method not object’s methodﺑﺎﻟﺗﺎﻟﻲ ﯾﻣﻛن اﺳﺗدﻋﺎﺋﮭﺎ ﻣن ﺧﺎرج
اﻟﻛﻼس ﻣن ﺧﻼل اﺳم اﻟﻔﺋﺔ ﺛم ﻧﻘطﺔ ﺛم اﺳم اﻟداﻟﺔ .اﻣﺎ ﻓﻰ ﺣﺎﻟﺔ ﻋدم وﺟود اﻟﻛﻠﻣﺔ static
ﯾﻌﻧﻲ ﺿروري ﻣن ﺗﻌرﯾف ﻛﺎﺋن ﻣن ھذه اﻟﻔﺋﺔ ﻗﺑل اﺳﺗﺧداﻣﮭﺎ
-2اﻟدوال اﻟﻣﻌرﻓﺔ ﻣن ﻗﺑل اﻟﻣﺳﺗﺧدم user-defined
اﻟدوال ﯾﻣﻛن ان ﺗﺣﺗوي ﻋﻠﻰ ﻣﻌﺎﻣﻼت parametersاو ﻻ :
دوال ﻻ ﺗﺣﺗﺎج اﻟﻰ ﺗﻣرﯾر ﻣﻌﺎﻣﻼت : have no parameterوھﻰ دوال ﻻﺗﺣﺗﺎج .1
اﻟﻰ ﺗﻣرﯾر ﻗﯾم اﺛﻧﺎء اﺳﺗدﻋﺎؤھﺎ ﺣﯾث ﻻﯾﺗم ﻛﺗﺎﺑﺔ اى ﻗﯾم ﺑﯾن ﻗوﺳﻲ اﻟداﻟﺔ .
دوال ﺗﺣﺗﺎج اﻟﻰ ﺗﻣرﯾر ﻣﻌﺎﻣﻼت : have parameterوھﻰ دوال ﺗﺣﺗﺎج اﻟﻰ ﺗﻣرﯾر .2
ارﺳﺎل ﻣﻌﺎﻣﻼت( ﺛواﺑت او ﻣﺗﻐﯾرات) اﺛﻧﺎء اﺳﺗدﻋﺎؤھﺎ
-2اﻟدوال اﻟﻣﻌرﻓﺔ ﻣن ﻗﺑل اﻟﻣﺳﺗﺧدم user-defined
اﻟدوال ﺗﻘﺳم اﻟﻰ ﻧوﻋﯾن ﻣن ﻧﺎﺣﯾﺔ روﺟﻌﮭﺎ ﺑﻘﯾﻣﺔ او ﻻ :
.1دوال ﺗرﺟﻊ ﺑﻘﯾﻣﺔ return value method
• ﻓﻲ ھذا اﻟﻧوع ﻣن اﻟدوال اوﻻ ﯾﺟب ﺗﺣدﯾد ﻧوع اﻟﻘﯾﻣﺔ اﻟﺗﻰ ﺗرﺟﻊ ﺑﮭﺎ ھذه اﻟداﻟﺔ ﺑﺣﯾث ﻧﺣدد
ﻧوع اﻟﺑﯾﺎﻧﺎت ﻓﻰ رأس اﻟداﻟﺔ method header or signature
• ﺛﺎﻧﯾﺎ ﯾﺟب اﺳﺗﺧدام اﻟﻌﺑﺎرة returnﻓﻰ ﺟﺳم اﻟداﻟﺔ method bodyﻟﻠرﺟوع ﺑﻘﯾﻣﺔ ﻣن
اﻟﻧوع اﻟﻣﺣدد ﻣﺗﺑوﻋﺔ ﺑﺎﻟﻘﯾﻣﺔ اﻟﻣراد اﻟرﺟوع ﺑﮫ اﻟﻰ ﻧﻘطﺔ اﻻﺳﺗدﻋﺎء.
اﻣﺛﻠﺔ :اﻟدوال اﻟﺗﻰ ﺗرﺟﻊ ﺑﻘﯾﻣﺔ return value method
return value method اﻟدوال اﻟﺗﻰ ﺗرﺟﻊ ﺑﻘﯾﻣﺔ: اﻣﺛﻠﺔ
Class Date
{
private int day;
public int getDay( )
{
return day;
}
}
user-defined اﻟدوال اﻟﻣﻌرﻓﺔ ﻣن ﻗﺑل اﻟﻣﺳﺗﺧدم-2
void method دوال ﻻ ﺗرﺟﻊ ﺑﻘﯾﻣﺔ: ﺛﺎﻧﯾﺎ
. ﻓﻰ راس اﻟداﻟﺔvoid • وﻓﻲ ھذا اﻟﻧوع ﻣن اﻟدوال ﻓﻰ ﺗﻌرﯾف اﻟداﻟﺔ ﯾﺟب ﻛﺗﺎﺑﺔ اﻟﻛﻠﻣﺔ
Class Date{
private int day;
private int month;
private int year;