University of Benghazi- Department of Computer
Faculty of Arts and Sciences Tocra Science
Java 1 Course , Lecture NO: 8
Built in and User-defined Methods
By : Faraj Najem
Spring , 2020
اﻟﮭدف ﻣن اﻟﻣﺣﺎﺿرة اﻟﺛﺎﻣﻧﺔ
ﻣﺎ ھﻲ اﻟداﻟﺔ Method؟ ❑
ﻟﻣﺎذا ﻧﺣﺗﺎج اﻟﻰ اﻟدوال ؟ ❑
ﻣزاﯾﺎ او ﻓواﺋد اﺳﺗﺧدام اﻟدوال . ❑
اﻧواع اﻟدوال ﻓﻰ ﻟﻐﺔ اﻟﺟﺎﻓﺎ ؟ ❑
ﻛﯾف ﻧﻛون داﻟﺔ ﺧﺎﺻﺔ ﺑﻧﺎ user -methods؟ ❑
راس اﻟداﻟﺔ او ﺗوﻗﯾﻊ اﻟداﻟﺔ method signature
ﺟﺳم اﻟداﻟﺔ method body
ﻣﺣددات اﻟوﺻول Access Modifiers
اﻻﻣر void
اﻻﻣر return
? What is a method and why it is needed
ﻣﺎ ھﻲ اﻟداﻟﺔ ؟
اﻟداﻟﺔ ھﻰ ﻋﺑﺎرة ﻋن ﻣﺟﻣوﻋﺔ ﻣن اﻟﺗﻌﻠﯾﻣﺎت اﻟﻣﺟﻣﻌﺔ ﺗﺣت اﺳم واﺣد . ❑
❑ ﯾﻣﻛن اﺳﺗدﻋﺎؤھﺎ ﻓﻰ اى ﻧﻘطﺔ ﻣن اﻟﺑرﻧﺎﻣﺞ ﻣن ﺧﻼل ﻛﺗﺎﺑﺔ اﺳﻣﮭﺎ ﻓﻰ اﻟﺑرﻧﺎﻣﺞ
❑ وﺑﻌد اﻟﺗﻧﻔﯾذ ﯾﺗم اﻟرﺟوع اﻟﻰ ﻧﻘطﺔ اﻻﺳﺗدﻋﺎء اﻟرﺋﯾﺳﯾﺔ ﻓﻰ اﻟﺑرﻧﺎﻣﺞ
وھﻲ ﻋﺑﺎرة ﻋن طرق ودوال ﻣن ﺗﻌرﯾف )ﺗﺻﻣﯾم( اﻟﻣﺑرﻣﺞ أو ﺗﻛون ﺟﺎھزة ﻣﺳﺑﻘﺎ ﻓﻲ اﻟﺑرﻧﺎﻣﺞ ❑
,واﻟﻐرض ﻣﻧﮭﺎ ھو ﺗﺳﮭﯾل ﻋﻣﻠﯾﺔ اﻟﺑرﻣﺟﺔ ﻓﻲ اﻷﺷﯾﺎء اﻟﺗﻲ ﺗﺗﻛرر أﻛﺛر ﻣن ﻣرة ﻓﻲ اﻟﺑرﻧﺎﻣﺞ.
ﻟﻣﺎذا ﻧﺣﺗﺎج اﻟﻰ اﻟدوال ؟ Why the needs to the methods
ﻓﻲ ﺣﺎﻟﺔ ﺗﻛرار ﻣﺟﻣوﻋﺔ ﻣن ﺳطور اﻷواﻣر أﻛﺛر ﻣن ﻣرة ﻓﻲ ﻣواﺿﻊ ﻣﺧﺗﻠﻔﺔ ﻓﻲ اﻟﺑرﻧﺎﻣﺞ ﻓﺈن ❑
أواﻣر اﻟﺗﻛرار > <for-while-do whileﻟن ﺗﻛون ذات ﻣﻧﻔﻌﺔ.
وﻟذﻟك ﯾﺗم ﻛﺗﺎﺑﺔ ھذه اﻟﺟﻣل او اﻻواﻣر ﺑﺷﻛل ﻣﻧﻔﺻل ﻋن اﻟﺑرﻧﺎﻣﺞ اﻟرﺋﯾﺳﻲ ﺑواﺳطﺔ اﻟدوال . ❑
? What is a method and why it is needed
ﻣزاﯾﺎ و ﻓواﺋد اﺳﺗﺧدام اﻟدوال
ﻋدم اﻟﺣﺎﺟﺔ إﻟﻰ ﺗﻛرار اﻟﺗﻌﻠﯾﻣﺎت ﺣﯾث ﯾﺗم إﻧﺷﺎء اﻟداﻟﺔ ﻣرة واﺣدة وﯾﻣﻛن اﺳﺗدﻋﺎﺋﮭﺎ أﻛﺛر ❑
ﻣن ﻣرة ﻋﻧد اﻟﺣﺎﺟﺔ إﻟﯾﮭﺎ .
ﺗﻘﺳﯾم اﻟﺑرﻧﺎﻣﺞ اﻟﻰ ﻣﺟﻣوﻋﺔ ﺑراﻣﺞ ﻓرﻋﯾﺔ )دوال( ﺑﺣﯾث ﯾﻛون ﻟﻛل ﻣﻧﮭﺎ وظﯾﻔﺔ ﻣﺣددة , ❑
ﻓﺗﺻﺑﺢ ھﯾﻛﻠﯾﺔ اﻟﺑرﻧﺎﻣﺞ اﻛﺛر وﺿوﺣﺎ و ﺗﻧظﯾﻣﺎ .
اﺳﺗﺧدام اﻟدوال ﯾﺳﮭل ﻋﻣﻠﯾﺔ ﻣﺗﺎﺑﻌﺔ وﺻﯾﺎﻧﺔ اﻟﺷﻔرة اﻟﻣﺻدرﯾﺔ ﻟﻠﺑرﻧﺎﻣﺞ . ❑
ﺑﺎﺳﺗﺧدام اﻟدوال اﻟﺟﺎھزة ﯾﻣﻛن ﺗوﻓﯾر اﻟﻛﺛﯾر ﻣن اﻟوﻗت واﻟﺟﮭد. ❑
اﻧواع اﻟدوال ﻓﻰ اﻟﺟﺎﻓﺎ Java methods types
ﺗﻧﻘﺳم اﻟدوال ﻓﻲ ﻟﻐﺔ اﻟﺟﺎﻓﺎ إﻟﻰ ﻗﺳﻣﯾن رﺋﯾﺳﯾﯾن ھﻣﺎ
اﻟدوال اﻟﺟﺎھزة . built–in Methods ❑
وھﻰ ﻣﺟﻣوﻋﺔ ﻣن اﻟدوال اﻟﻣﺟﮭزة ﻣﺳﺑﻘﺎ ً ﺿﻣن ﺣزﻣﺔ اﻟﻣﺗرﺟم اﻟﺧﺎص ﺑﺟﺎﻓﺎ ﻣﺛل ﻋﻠﯾﮭﺎ اﻟدوال
اﻟرﯾﺎﺿﯾﺔ و ﻛذﻟك دوال اﻟﺗﻌﺎﻣل ﻣﻊ اﻟﺑﯾﺎﻧﺎت اﻟﻧﺻﯾﺔ .
اﻟدوال اﻟﻣﻌرﻓﺔ ﻣن ﻗﺑل اﻟﻣﺑرﻣﺞ . user-defined Methods ❑
وھﻰ اﻟدوال اﻟﺗﻲ ﯾﺗم إﻧﺷﺎؤھﺎ ﻣن ﻗﺑل اﻟﻣﺑرﻣﺞ ﻷداء وظﯾﻔﺔ ﻣﻌﯾﻧﺔ وﺗﺗﻛون ﻣن ﺟزأﯾن ,
ھﻣﺎ رأس اﻟداﻟﺔ Method Headerو ﺟﺳم اﻟداﻟﺔ Method Body
-1اﻟدوال اﻟﺟﺎھزة java packages -
اﻟﺗطﺑﯾﻘﺎت اﻟﺧدﻣﺎت /اﻟﻔﺋﺎت اﻟﻣﻛﺗﺑﺔ
اﻟﺑرﻣﺟﺔ اﻟﺧوارزﻣﯾﺔ اﻟﻌﺎدﯾﺔ. [Link]ﺗﺣﺗوي ھذه اﻟﺑﺎﻗﺔ ﻋﻠﻰ ﻓﺋﺎت ﺗﻣﺛل ھﯾﺎﻛل ﺑﯾﺎﻧﺎت ﻋﺎﻣﺔ اﻻﺳﺗﻌﻣﺎل ﻣﺛل اﻟﺻﻔوف و
اﻟﻣﺟﻣوﻋﺎت و ﻏﯾرھﺎ.
اﻟﺑراﻣﺞ اﻟﺗﻲ ﺗﺗطﻠب ﻣﻌﺎﻣﻠﺔ ﻓورﯾﺔ ﻣﻊ اﻟﻣﺳﺗﺧدم. [Link]ﺗﺣﺗوي ھذه اﻟﺑﺎﻗﺔ ﻋﻠﻰ ﻓﺋﺎت ﺗﺗﺻرف ﻓﻲ ﻋﻣﻠﯾﺎت ﺗﺻدﯾر و ﺗورﯾد اﻟﺑﯾﺎﻧﺎت.
ﻛل اﻟﺑراﻣﺞ /ﻛل اﻟﺗطﺑﯾﻘﺎت. [Link]ﺗﺣﺗوي ھذه اﻟﺑﺎﻗﺔ ﻋﻠﻰ اﻟﻔﺋﺎت اﻟﻣﺗﻌﻠﻘﺔ ﺑﺗﻧﻔﯾذ اﻟﺑرﻧﺎﻣﺞ و ﻣراﻗﺑﺗﮫ ،ﺑﻣﺎ ﻓﯾﮭﺎ اﻟﻔﺋﺎت
اﻟﺗﻲ ﺗﻌﺎﻟﺞ أﺧطﺎء اﻟﺗﻧﻔﯾذ و ﺑﻌض اﻟﻔﺋﺎت اﻟﻌﺎﻣﺔ .ﻧظرا ﻷھﻣﯾﺗﮭﺎ ،ﻓﺈن ھذه اﻟﺑﺎﻗﺔ
ﯾﻘﻊ ﺗورﯾدھﺎ ﺿﻣﻧﯾﺎ ﻓﻲ ﻛل ﺑرﻧﺎﻣﺞ.
اﻟﺗطﺑﯾﻘﺎت اﻟﮭﻧدﺳﯾﺔ و ﺗطﺑﯾﻘﺎت اﻟرﯾﺎﺿﯾﺎت. [Link]ﺗﺣﺗوي ھذه اﻟﺑﺎﻗﺔ ﻋﻠﻰ ﻓﺋﺎت ﺗﻘوم ﺑﻌﻣﻠﯾﺎت ﺣﺳﺎﺑﯾﺔ ،ﺑﺄي دﻗﺔ ﯾطﻠﺑﮭﺎ اﻟﻣﺳﺗﺧدم.
ﺗطﺑﯾﻘﺎت اﻟﺗﺻرف اﻟﺗﻲ ﺗﺗطﻠب ﻗواﻋد ﺑﯾﺎﻧﺎت. [Link]ﺗﺣﺗوي ھذه اﻟﺑﺎﻗﺔ ﻋﻠﻰ ﻓﺋﺎت ﺗﺧﺗص ﻓﻲ ﻋﻣﻠﯾﺎت ﻋﻠﻰ ﻗواﻋد اﻟﺑﯾﺎﻧﺎت.
ﺗطﺑﯾﻘﺎت ﺗﺗطﻠب واﺟﮭﺎت رﺳوﻣﯾﺔ ﻣﻊ اﻟﻣﺳﺗﺧدم. [Link]ﺗﺣﺗوي ھذه اﻟﺑﺎﻗﺔ ﻋﻠﻰ ﻓﺋﺎت ﺗﺧﺗص ﻓﻲ اﻟرﺳم و ﻓﻲ إﻧﺟﺎز واﺟﮭﺎت رﺳوﻣﯾﺔ.
ﺗطﺑﯾﻘﺎت ﺗﺗطﻠب واﺟﮭﺎت رﺳوﻣﯾﺔ ﻣﻊ اﻟﻣﺳﺗﺧدم. [Link]ﺗﻣدد ھذه اﻟﺑﺎﻗﺔ إﻣﻛﺎﻧﯾﺎت و ﻗدرات اﻟﺑﺎﻗﺔ اﻟﺳﺎﺑﻘﺔ.
ﺗطﺑﯾﻘﺎت ﺗﺗطﻠب إﺟراءات أﻣﻧﯾﺔ. [Link]ﺗﺣﺗوي ھذه اﻟﺑﺎﻗﺔ ﻋﻠﻰ ﻓﺋﺎت ﺗﺧﺗص ﻓﻲ ﺗﻧﻔﯾذ إﺟراءات أﻣﻧﯾﺔ ﻓﻲ اﻟﺑرﻧﺎﻣﺞ ،ﻣﺛل
ﻣراﻗﺑﺔ اﻟﻣﺳﺗﺧدﻣﯾن و ﺻﯾﺎﻧﺔ اﻟوارد و ﻏﯾر ذﻟك.
Math class methods اﻟدوال اﻟﺟﺎھزة-1
-1اﻟدوال اﻟﺟﺎھزة Math class methods
ﻛﯾﻔﯾﺔ اﺳﺗدﻋﺎء و اﺳﺗﺧدام اﻟدوال اﻟﺟﺎھزة . built–in
وﯾﻣﻛن اﺳﺗدﻋﺎء اﻟدوال ﺑﻛﺗﺎﺑﺔ اﺳم اﻟﻔﺻﯾﻠﺔ )اﻟﻔﺋﺔ( classﻣﺗﺑوﻋﺎ ً ﺑﻧﻘطﺔ ﺑﻌدھﺎ اﺳم اﻟطرﯾﻘﺔ ﺛم
ﻗﺎﺋﻣﺔ اﻟﻣﻌﺎﻣﻼت داﺧل أﻗواس داﺋرﯾﺔ ﻛﻣﺎ ﯾﻠﻲ:
)Class_Name.method_Name(Argument List
ﻓﻣﺛﻼ إذا أردﻧﺎ اﻟﺣﺻول ﻋﻠﻰ اﻟﺟذر أﻟﺗرﺑﯾﻌﻲ ﻟﻠﻌدد) (25ﻓﯾﻣﻛن ﻛﺗﺎﺑﺔ اﻟﺻﯾﻐﺔ ﻛﺎﻟﺗﺎﻟﻲ:
; ))[Link]([Link] (25
-1اﻟدوال اﻟﺟﺎھزة Math class methods
اﻟﻣطﻠوب ﻋﻣل ﺑرﻧﺎﻣﺞ ﯾﺳﺗﻘﺑل ﻗﯾﻣﺔ ﻣن ﻟوﺣﺔ اﻟﻣﻔﺎﺗﯾﺢ ﺛم ﯾﻘوم ﺑﺈﯾﺟﺎد اﻟﺟذر اﻟﺗرﺑﯾﻌﻲ وﻣرﺑﻊ
ھذا اﻟرﻗم وذﻟك ﺑﺎﺳﺗﺧدام اﻟدوال اﻟﺟﺎھزة ﻓﻲ ﻟﻐﺔ اﻟﺟﺎﻓﺎ .
-2اﻟدوال اﻟﻣﻌرﻓﺔ ﻣن ﻗﺑل اﻟﻣﺳﺗﺧدم user-defined
اﻟﺷﻛل اﻟﻌﺎم ﻟﻠداﻟﺔ :
-2اﻟدوال اﻟﻣﻌرﻓﺔ ﻣن ﻗﺑل اﻟﻣﺳﺗﺧدم user-defined
اﻟﺷﻛل اﻟﻌﺎم ﻟﻠداﻟﺔ :
ﻗﺎﺑﻠﯾﺔ اﻟوﺻول Access Modifier
ﻋﺎﻣﺔ : publicإﻣﻛﺎﻧﯾﺔ اﻟوﺻول إﻟﯾﮭﺎ ﻣن ﻛﺎﻓﺔ classesﻣن داﺧل وﺧﺎرج ال ❑
.package
ﺧﺎﺻﺔ : privateﻻ ﯾﻣﻛن اﻟوﺻول إﻟﯾﮭﺎ إﻻ ﻣن داﺧل ال classﻧﻔﺳﮫ . ❑
ﻣﺣﻣﯾﺔ : protectedﻓﮭﻲ ﻋﺎدة ﺗﺳﺗﻌﻣل ﻋﻧد اﻟوراﺛﺔ ﻓﯾﻣﻛن ل classاﻻﺑن ﻣن ❑
اﻟوﺻول إﻟﻲ إي ﺷﻲ ﻣﻌرف ﻣﺣﻣﻲ داﺧل ال classاﻷب.
Defaultأو Package-privateوھﻲ ﻋدم وﺟود إي modifierاي ﻋدم ﻛﺗﺎﺑﮫ ❑
اي ﻛﻠﻣﮫ ﻋﻧد اﻟﺗﻌرﯾف وﯾﻣﻛن اﻟوﺻول ﻟﮫ ﻣن داﺧل ال packageﻓﻘط.
ﻋﻧد اﺳﺗﺧدام اﻟﻛﻠﻣﺔ 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
.2دوال ﻻ ﺗرﺟﻊ ﺑﻘﯾﻣﺔ void method
اوﻻ :دوال ﺗرﺟﻊ ﺑﻘﯾﻣﺔ 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;
public void writeOutput( )
{
[Link](month +" "+day + " " + year);
}
ﻣﺛﺎل :دوال ﻻ ﺗرﺟﻊ ﺑﻘﯾﻣﺔ void method