You are on page 1of 19

Introduction To Java Programming

Chapter 7
Classes & Objects

‫ 
د‬,4 ‫ن‬.‫ ﺕ‬7‫ذن ا‬9‫ة و‬$$‫;  ﺝ‬1‫ ﺝ‬2 ‫ي‬$ &‫ ه‬7‫إن <ء ا‬

class , object ‫ زي  ا‬$‫ﺝت آﻥ( ﻡ& '& آ‬+ , -,. ‫ء د ه‬1‫ ا‬2 +‫ا‬

7‫ذن ا‬9 -BC‫ﺝ ﺕ‬+ ‫ وآ‬-‫ ﻡه‬, ‫ه 


ف‬

7.2. Defining Classes for Objects

‫ ؟‬object ‫   ه  ا‬I


‫واول ﺕ‬

  > ?‫ ا& @ ا‬2 ‫ &رة  <ء ﻡﺝد‬object ‫ ل   ان اـ‬

objects -‫ ﻥ &


ه‬.‫  ا
ض ﻡ‬+ ‫ او‬button ‫ا
ة او ال‬$‫ هل ا‬,H‫  ' اﻡ‬

: ‫ن ﻡ‬.   'E‫ﻥﺕ ه‬.‫  ﺝ  ﻥ


ف ﻡ‬object ‫اي‬

‫ او ا
ات اد‬data fields ‫ و   دي ال‬object ‫ ال‬I‫ ودي  ﺹ‬state ‫ال‬ -١
 ?‫ ا‬- 
‫ د    ا و م  دي ﻡ ﻡ ال‬object ‫ك ال‬,4 ‫ وه‬behavior ‫ال‬ -٢
. methods

. ‫ د م !  ﻡ‬object ‫ د ﻡ اﻥ وز ال‬object


bject ‫د ﻡ‬H ‫ ﻡ‬$ L ‫وﻡ اﻥ‬
‫ﻡ‪H‬ل ‪ :‬ال ‪  object‬ع ا‪$‬ا
ة ‪  2‬ﻡ
ا‪ radius 4‬ود  ﺹ‪ I‬ا‪$‬ا
ة وﻡ‪ .‬ال ‪behavior‬‬
‫‪.‬ن ‪L+‬ب ﻡ‪ +L‬ا‪$‬ا
ة دي  ‪ R
S‬ا‪$ 4‬ء ا ‪H‬د ا‪ ,‬ا‪getArea() 4‬‬

‫ﻥ   
‪ I‬ﺕﻥ وه  ا ‪ class‬؟‬

‫ ل ان ا‪E.‬س &‪& SL‬رة  وء  ‪ objects‬ا‪ ,‬ﻡ ﻥ ‪ V‬اع‬

‫وء  اﻥ 


ف ‪  2‬ا
ات وا ‪H‬دس ا‪C‬ﺹ ل‪ . objects‬و ل آن ان ال‪object‬‬
‫ & ﺝ‪1‬ء ﻡ ال‪ class‬وﻡ‪ .‬ﻥ اآ
ﻡ ‪ object‬ﻡ ﻥ ‪ V‬ا‪E.‬س و & ا‪instance 4‬‬
‫وآ‪ object ,‬و ‪ instance‬ﺕ
&  ‪ V‬ا‪.‬‬

‫ ل ان ا‪   'E‬ال ‪ class‬وال ‪ object‬ﺕ


& زي ‪
>2‬ة ا ح و‪
>2  
S‬ة ا ح‬
‫ﻡ‪ .‬ا اآ
ﻡ ‪
>2‬ة ﺕ ح ‪$C 49‬ام اﺹ  اا‪$+‬ة‪.‬‬

‫آ‪E‬س ا‪$C L  2‬م ا


ات ‪ 2‬ﺕ
‪ I‬ال ‪ data fields‬وا ‪H‬دس ‪ 2‬ﺕ
‪ I‬ال ‪behavior‬‬
‫وآن ا‪E.‬س   ﻡ ‪H‬د ﻡ ﻥع ﺥص ا‪ constructor 4‬ا ‪H‬د دي   ‪ Z‬اول ﻡ‬
‫‪ object‬ﻡ ا‪E.‬س د‪  .‬ل ان ال‪ constructor‬ﻡ‪ .‬ﺕم \ي و!  و‪ 2 .‬ا [  م‬
‫‪>9‬ء ا
ات ا   ‪ - ' objects‬ﻡ&‪  ;$‬زي آ‪: $‬‬
]‫^ اﻥ ﻡ‬+E‫& اول <ء ه‬S $ ‫ ﻡ د اآ‬+‫ ا‬,‫ ا‬._‫ <  ا‬I, C‫ د ﻡ‬circle ‫س‬E‫آ‬

S  ‫_ن‬, ‫ ﻡل‬V ‫ ه‬.‫ و‬run  ‫ر ا‬$ ]‫ ود ﻡ اﻥ ﻡ‬main ‫د ال‬H ‫  ﻡ‬2
‫س‬E.‫ ا‬4‫ ه & ا‬main ‫د ال‬H ‫  ﻡ‬2 & ‫ ه‬,‫س ا‬E.‫ وا‬-, 4‫ وا‬objects ‫ر ا‬$'‫ا‬
. 44`‫ا‬

CLASS UML ‫ ل‬L‫ ﻡ‬,‫ ﻡ


ف   دو  & ه‬- B‫س   ﺕ‬E., ‫&  ﻥ‬+ 
: $‫ ﻡ آ‬,.< & ‫ و‬DIAGRAM

: ‫  >
 دي‬2 ‫  ا
ات  
ف‬2‫و‬
dataFieldName: dataFieldType
: $‫   آ‬constructor‫وال‬
ClassName(parameterName: parameterType)
: $‫د  
ف آ‬H ‫وا‬
methodName(parameterName: parameterType): returnType

7.3. Constructors

 2 ‫ ه‬,‫س ا‬E.‫ ا‬-4‫ ا‬V ‫ ﻥ‬4‫ ه اﻥ  & ا‬constructor ‫  ال‬2
‫زم ﻥ‬c ‫ﻡ‬,‫اول ﻡ‬
-4`‫ ا‬V  constructor ‫ ) ا اآ
ﻡ‬overload  ‫ ا‬.‫دس ﻡ‬H ‫وز زي آ ا‬
.‫ا‬$‫;  ﺝ‬$&‫ ﻡ‬- ' ‫ إ>ء ا
ات‬L  &S ‫( ود‬I
 ‫ ' ا‬2  , C‫  &ا ﻡ‬.‫و‬
,‫ام آ‬$C 49 ‫س د‬E.‫  ع ا‬constructor ‫س دي ال‬E‫ ﻡ اي آ‬object ‫ ﻥ?[ ﻥ‬
: $‫ زي آ‬new ,‫  وه آ‬,‫ ا‬2 ! ?‫ﻡ‬
new ClassName(arguments);

constructor ‫ام اول‬$C 49 circle ‫س ال‬E‫ ﻡ آ‬object  $‫ آ‬new circle() ‫  ل‬EH‫ﻡ‬
‫ام ال‬$C 49 .‫س و‬E.‫ ا‬V ‫ ﻡ ﻥ‬object  &‫ ه‬new circle(5)
circle ' ‫س و‬E.‫ ا‬2
. ‫س‬E.‫ ا‬V ‫ ﻥ‬2 ‫ ﻡ 
ف‬,‫ ا ﻥ ا‬constructor

‫ ال‬-4‫ن ا‬. ‫ و‬argument ‫ اي‬$‫ ﻡ]  ﺥ‬constructor f‫ اوﺕﻡﺕ‬R,C  ‫س ﻡ‬E.‫ا‬


. no-argument
argument constructor ‫ او‬no-arg
arg constructor ‫ ا? دي‬2 constructor

‫ن‬. ‫ و‬d2 constructor R,C  ‫ ا? دي‬2‫ و‬constructor ‫ون اي‬$   .‫س ﻡ‬E.‫ا‬
] ‫ اﻥ ﻡ‬+ 2 e2  ‫ و‬default constructor 4‫س و & ا‬E.‫ ا‬2  d ‫ﻡﺝد‬
.‫س‬E.‫ ا‬2 ‫ح‬d constructor I
‫ﺕ‬

: !?,‫ﻡ‬

: ‫د اد‬H ‫


'  ا‬2‫د ﻡ ﻥع ﺥص و‬H ‫ ه ﻡ‬constructor ‫ال‬

. 2 R,C‫ اﺕ‬,‫س ا‬E.‫ ا‬-4` R>‫ ﻡ‬4‫ن ا‬. ‫زم‬c constructor‫ال‬ •


. void  + c‫ و‬return type   ]‫ ﻡ‬constructors‫ال‬ •
I
‫ دور ﺕ‬constructor ‫[ ال‬, ‫ و‬new ,‫م آ‬$C 4 constructor ‫ دي اي‬ •
.  ;$&‫ '  ﻡ‬-;>‫ا
ات وإ‬

:: !?,‫ﻡ‬

: $‫ زي آ‬constructor ‫ ال‬g‫ ﻡ‬void  ‫ﻡ ا`ﺥ>ء ا_


ة آ‬
public void Circle() {
}
. constructor ]‫د د ﻡ‬H ‫ ه & ﻡ‬Circle() ‫ ا? دي‬2‫و‬

7.4. Accessing Objects via Reference Variables


‫ ازاي اﺕﻡ ﻡ ؟‬object ‫ ال‬, +‫ [ د'  ا‬S

7.4.1. Reference Variables and Reference Types

‫  اﻥ‬reference variable ‫ ﻡ


ف ل‬R
S  ‫  ﻡ ﻡ‬object ‫ اي‬g‫_ن اﺕﻡ ﻡ‬,
: $‫ ه @ ﻡ
زي آ‬, object ‫
ف ال‬
ClassName objectRefVar;

: ‫ ه & ^
د‬object ‫( ﻡ‬2
  circle‫س ال‬E‫ آ‬EH‫ ﻡ‬object ‫د ﻥع ال‬$?  ‫س‬E.‫وا‬
Circle myCircle;
$‫ آ‬$‫ و‬Circle ‫س‬E.‫ ﻡ ا‬object ‫ ل‬reference ‫ او‬g‫  ﻡ
ﺝ‬myCircle
‫ ا‬R
S 
:$‫ آ‬myCirle
,   reference
refere ‫ او ال‬g‫ وه&( ا
ﺝ‬object‫ ال‬I
‫ ﺕ‬.‫ه‬
myCircle = new Circle();
‫   
ﻡ  زي‬reference‫س ﻡ  وا( ال‬E‫ ﻡ آ‬object ‫ة ا
ف‬$+‫ وا‬,‫ ﺝ‬2 .‫ﻡ‬
: $‫آ‬
ClassName objectRefVar = new ClassName();

: ‫م د‬E.‫ ا‬, ‫ل‬H‫وﻡ‬


Circle myCircle = new Circle();

. Circle ‫س‬E.‫ ﻡ ا‬,‫ ا‬object g‫ او ﻡ


ﺝ‬reference , ‫  ? ي‬myCircle
‫ا‬

:: !?,‫ﻡ‬

Circle ‫س‬E.‫ ﻡ ا‬object‫ ل‬g‫ ﻡ


ﺝ‬, ‫  ? ي‬myCircle
‫
ق   اﻥ ا'ل ان ا‬2 R 2
 L  .‫ و‬Circle‫س‬E.‫ ﻡ ا‬object  ‫ ه &رة‬myCircle
‫و  اﻥ ا'ل ان ا‬
‫زم‬c ‫ ا
ق‬i d‫[ ﺕ‬,>‫&  اﻥ‬S‫ و‬Circle ‫س‬E‫ ﻡ آ‬object ‫ ه‬myCircle ‫ا`ﻡر هل ان‬
. 2‫ن ر‬.‫ﻥ‬

7.4.2. Accessing an Object's Data and Methods


:   ‫ﺹ‬C‫دس ا‬H ‫ ا
ات وا‬g‫ وز ﻥ ﻡ ﻡ‬object , +‫د'  ا‬

objectRefVar.dataField : ‫ هد >


 دي‬data field g‫  وز ﻥ ﻡ ﻡ‬-١

objectRefVar.method(arguments) : ‫د هد >


 دي‬H ‫ ﻡ‬g‫  وز ﻥ ﻡ ﻡ‬-٢

myCircle 4‫ ا‬,‫ ا‬object‫  ع ال‬radius‫ ال‬g‫ & ه ﻡ ﻡ‬myCircle.radius EH‫ ﻡ‬
,‫ ا‬object ‫ ال‬, getArea() 4‫ ا‬,‫د ا‬H ‫ ا‬Z ‫ & ه‬myCircle.getArea() ' ‫و‬
. myCircle 4‫ا‬

:: !?,‫ﻡ‬

.‫ و‬object reference ‫ او‬g‫  ﻡ


ﺝ‬2 & ‫_ن‬,
‫زم ا
ف ﻡ‬c ]‫ ن ﻡ‬+`‫ ا‬j 2
: $‫>ل زي آ‬, object ‫ ا ال‬.‫ﻡ‬
new Circle();

‫او‬
System.out.println("Area is " + new Circle(5).getArea());

. anonymous object 4‫  & ا‬object ‫ ا? دي ال‬2‫و‬

7.4.3. Example: Declaring Classes and Crea)ng Objects

: ‫ت‬2 ,‫م ا‬E.‫ ا‬, ‫ل‬H‫ود ﻡ‬


1 public class TestCircle1
TestCircle {
2 /** Main method */
3 public static void main(String[] args) {
4 // Create a circle with radius 5.0
5 Circle myCircle = new Circle1(5.0
Circle1 Circle 5.0);
6 System
System.out.println
println("The
"The area of the circle of radius "
7 + myCircle.radius + " is " + myCircle.getArea());
myCircle.getArea());
8
9 // Create a circle with radius 1
10 Circle yourCircle = new Circle1()
Circle1 Circle ();
11 System
System.out.println
println("The
"The area of the circle of radius "
12 + yourCircle.
yourCircle.radius + " is " + yourCircle.getArea());
13
14 // Modify circle radius
15 yourCircle radius = 100;
yourCircle.radius ;
16 System.out.println("The area of the circle of radius "
17 + yourCircle.radius + " is " + yourCircle.getArea());
18 }
19 }
20
21 // Define the circle class with two constructors
22 class Circle1 {
23 double radius;
24
25 /** Construct a circle with radius 1 */
26 Circle1() {
27 radius = 1.0;
28 }
29
30 /** Construct a circle with a specified radius */
31 Circle1(double newRadius) {
32 radius = newRadius;
33 }
34
35 /** Return the area of this circle */
36 double getArea() {
37 return radius * radius * Math.PI;
38 }
39 }

: ‫س‬E‫ﻥ اﺕ  آ‬$ 'E‫ د ه‬k‫ ا&


ﻥﻡ‬,?‫ ﺝ  ﻥ‬

. Circle ‫س ا ﻥ‬E.‫ ا‬, Test  ‫ وﻡ  ه‬44`‫س ا‬E.‫ ود ا‬TestCircle1 ‫ا`ول‬

‫س‬E.‫ وه ا‬public & ,‫ ه ا‬V - 2 $+‫زم وا‬c .‫ و‬I,‫ ا‬V ‫ ﻥ‬2  4E.‫ ا‬e+‫ ا‬.‫ﻡ‬
& ‫  ه‬44`‫س ا‬E.‫ ا‬-4\ I,‫ ا‬L ‫ ا? دي‬2‫ و‬main ‫د ال‬H ‫  ﻡ‬2 ,‫ ا‬44`‫ا‬
. TestCircle1.java I,‫ ا‬-4‫ا‬

‫ ال‬R
S  $+‫ اول وا‬objects  ‫( اﺕ‬, main‫د ال‬H ‫ وﺝ ﻡ‬44`‫س ا‬E.‫ ا‬2
,‫  ا‬d‫
ا‬2l‫ &   ا‬L‫ ا ﻥ ه‬object‫ وال‬5.0  ' ,$‫ '  وه‬$‫  ﺥ‬,‫ ا‬constructor
. 1.0 ‫ه‬

‫دس‬H ‫ ا‬V ‫ ﻥ‬2 j g‫  _


آا ﻡ‬.‫ و‬- 2 ,‫اﺕ ا‬$‫ ا‬- ' 2 ‫ ا‬, C  ‫ دول‬object  ‫& ا`ﺕ‬S
. +L‫ ا‬- 2 object . [L+‫ ا‬.‫ ﻡ‬$.‫و‬

. object‫ ال‬-4\ ‫ ﻥده‬object ‫ آ‬g‫ ﻡ‬getArea() ‫د‬H ‫ ﻡ‬Z ‫&  ﻥ‬+ ‫و‬

: $‫ زي آ‬$+‫ وا‬I,‫ ﻡ‬2 ‫س‬E‫ اآ


ﻡ آ‬k‫ دﻡ‬.‫ ﻡ‬EH‫ ﻡ‬2‫ ا‬k‫  
اﻡ‬. 
S ‫  اآ
ﻡ‬2
1 public class Circle1 {
2 /** Main method */
3 public static void main(String[] args) {
4 // Create a circle with radius 5.0
5 Circle myCircle = new Circle1(5.
Circle1 Circle .0);
6 System
System.out.println
println("The
"The area of the circle of radius "
7 + myCircle.radius
myCircle radius + " is " + myCircle.getArea());
8
9 // Create a circle with radius 1
10 Circle yourCircle = new Circle1()
Circle1 ();
11 System
System.out.println
println("The
"The area of the circle of radius "
12 + yourCircle.
yourCircle.radius + " is " + yourCircle.getArea());
13
14 // Modify circle radius
15 yourCircle.radius
yourCircle radius = 100;
;
16 System
System.out.println
println("The
"The area of the circle of radius "
17 + yourCircle.
yourCircle.radius + " is " + yourCircle.getArea());
18 }
19
20 double radius;
21
22 /** Construct a circle with radius 1 */
23 Circle1()
() {
24 radius = 1.0;
25 }
26
27 /** Construct a circle with a specified radius */
28 Circle1(
(double newRadius) {
29 radius = newRadius;
newRadius
30 }
31
32 /** Return the area of this circle */
33 double getArea() {
34 return radius * radius * Math.PI;
35 }
36 }
‫  ه & ﻡ‬,C‫ ﺕ‬-‫ ﺕ‬,‫ ا‬object ‫ا وال‬$‫ & ه _  دي ﺝ‬main ‫د ال‬H ‫  ﻡ‬2 ‫س‬E.‫ ا‬S &S
. Circle
rcle1 ‫س‬E‫آ‬

:: !?,‫ﻡ‬

 2 ‫دي‬H ‫ اﻥ دي اي ﻡ‬Math ‫س‬E‫ آ‬g‫دس '  ﺝ  ﻥ ﻡ ﻡ‬H ‫ ا‬g‫ ﺝ  ﻥ ﻡ ﻡ‬
‫_ن آ‬, ‫ د آن‬V ‫د‬H ‫ ا‬-4‫ ا‬$‫س و‬E.‫ ا‬-4‫م ا‬$C L ‫ آ‬Math.pow
pow(2,3) ‫>
 دي‬
‫ ه‬.‫ام و‬$' static ‫ وه_
ح  ا‬static ‫ ﻡ ﻥع‬Math ‫س ال‬E‫ آ‬2 ‫ ﻡﺝدة‬,‫دس ا‬H ‫ا‬
R
S  ‫ن‬. ‫زم‬c ‫_ن اﻥد‬,  non-static
static ‫او‬static ‫د ﻡ] ﻡ ﻥع‬H ‫ ا‬H‫ ﻡ‬2
.
m c e2 object

7.4.4. Reference Data Fields and the null Value


2 ! ?‫  ﻡ] ﻡ ا`ﻥاع ا‬reference type ‫ﻥا‬. .‫ ﻡ‬k‫ ا&
ﻥﻡ‬2 ‫  ان ا
ات‬
: $‫ زي آ‬int , double‫  زي ال‬,‫ا‬
class Student {
String name; // name has default value null
int age; // age has default value 0
boolean isScienceMajor; // isScienceMajor has default value false
char gender; // c has default value '\
'\u0000'
}
4‫ ا‬2‫ ا‬2 ‫ ا? دي ? '  ﺥﺹ‬2 object ‫ `ي‬reference ?  ]‫ ا
ﻡ‬
reference ?  null .‫ و‬Boolean - ' ‫ دول  &ل‬.‫ و‬true , false ‫ زي‬,‫ ﻡ‬,‫ وا‬null
.

null‫  & ـ‬object‫ ال‬+ 2 null  ‫وا‬

0 ‫د  & ـ‬$‫ ا


ات ا‬+ 2‫و‬

false ‫  & ـ‬Boolean ‫ ا


ال‬+ 2‫و‬

\uu0000 ‫ ا?


وف  & ـ‬+ 2‫و‬

:: !?,‫ﻡ‬

\>‫ ﺥ‬g,> ‫  آد زي د ه‬c‫  او‬d‫


ا‬2‫;  او ا‬$&‫ ﻡ إ>ءة '  ﻡ‬$c
‫ اي ﻡ‬g‫'& ا ﻡ ﻡ‬
:
class Test {
public static void main(String[]
main(String[] args) {
int x; // x has no default value
String y; // y has no default value
System.out.println(
System.out.println("x is " + x);
System.out.println(
System.out.println("y is " + y);
}
}

:: !?,‫ﻡ‬


‫ ﻡ‬, ‫ة‬$ ‫د ﻡ‬H ‫ ﻡ‬Z ‫ء وﺕ‬$ 4‫ ا‬+ 2 g,>  g;< \>‫د ﺥ‬ NullPointerException
. null  ' ?
7.4.5. Differences Between Variables of Primi)ve Types and
Reference Types

‫   ﻡ  و 
ف ﻡ

ف ال‬n ?  ‫ ا ري‬2 g'‫ﻥ &رة  ﻡ‬$
‫آ ﻡ‬
! ?‫  آن ا
ﻥع ﻡ ا`ﻥاع ا‬.  n ? ‫ر‬$ ‫ ا
د‬,‫ ا‬- ‫ ﻥع ا‬compiler
‫ ه & '   ه‬object‫ ل‬reference ? 
‫  آن ا‬+ 2‫ و‬، ‫ ﻥ‬V ‫ه & '   ﻡ ﻥ‬
,‫ وا‬i 4‫ ا‬,‫' ان '  ا
ا‬E‫ ه‬:$‫ ا ري زي آ‬2 ‫ د‬object ‫ن ال‬. Reference
‫'   _ر او‬E‫ ه‬Circle ‫ وﻡ ﻥع‬c 4‫ ا‬,‫ ا‬object‫ وال‬int value =1 & ‫ ه‬int ‫ﻡ ﻥع‬
: ‫ ا ري‬2 Circle object‫ن ال‬. Reference ? 

‫ ا
ات‬+ 2 ‫ [ د‬S i‫ ال‬2 pL  j‫ ال‬2 ,‫ ان ا  ا‬B?  ,‫ ا‬i = j ‫ ﺝ ا'ل‬
‫ د ﻡ ان '  ال‬c1=c2 '  object‫ ل‬reference ?  ,‫ ا
ات ا‬+ 2 ، ‫اد‬
: reference ‫ ال‬V ‫ا ﻥ‬,? ‫ وه ا`ﺕ  ه _روا او ه‬c1 2 pL ‫ ه‬c2 2 ,‫ ا‬Reference

:: !?,‫ﻡ‬
c1  '‫ د‬c1 4‫ ا‬,‫ ا‬object‫ ال‬2 c2
c 4‫ ا‬,‫ ا‬object‫  ع ال‬reference ‫>  '  ال‬+ 
2‫ وا‬garbage ‫ام ود ﻡ
ف ل‬$C 4s ?‫
ﺹ‬m‫زﻡ و‬c ‫ش‬,‫ اﺹ&?( ﻡ‬$‫'   ا‬
‫ه ﻡ ا ري ود ﻡ
ف‬$‫  ﺥ‬,‫ ا‬+L‫ ا‬q  f‫ ﻡ اع د واوﺕﻡﺕ‬,‫ ا‬- ‫ 
ف ا‬
. garbage collection ‫ل‬

7.5.
.5. Using Classes from the Java Library

‫ة‬1‫ت ﺝه‬4E‫ آ‬g‫ ﻥ? ج ﻥ ﻡ ﻡ‬.‫ ﻡ‬k‫ ا&


اﻡ‬2 V objects  2 ,‫س وﺥ‬E‫ آ‬, $‫ '& آ‬+‫ا‬
. 2‫ ا‬2 ‫ة‬1‫ت اه‬4E.‫ ا‬j , ,H‫ي اﻡ‬$  ‫_ د‬.L‫  وا‬,‫ ا‬2

7.5.1 The Date Class


7.5.1.

 '‫ د‬System.currentTimeMillis() ‫د‬H ‫ام ﻡ‬$C 49 ('‫ ازاي ﻥ


ي ا‬,‫ اﺕ‬$‫ '& آ‬+‫ا‬
: java.util 4‫ ا‬package 2 ‫ وﻡﺝد‬Date 4‫ ا‬1‫س ﺝه‬E‫ام آ‬$C 49 .‫ه
ي ا'( و‬

‫س‬E.‫ ﻡ ا‬instance ‫ او‬object R,‫_ن اﺥ‬, constructors ‫ﺝ ال‬+ ‫ <  اول‬+‫& زي ﻡ‬S
g‫ 
ﺝ‬,‫ وا‬toString() ‫د‬H ‫ ا'( ا? وﻡ‬g‫ 
ﺝ‬,‫ وا‬getTime() ‫د‬H ‫' ﻡ‬E‫ ه‬$‫ آ‬$‫د و‬
: $‫ زي آ‬string @ ‫ ه‬, ('‫ا‬
java.util.Date date = new jave.util.Date();
jave.util.Date()
System.out.println( The elapsed time since Jan 1,
System.out.println("The , 1970 is " +
date.getTime() + " milliseconds");
milliseconds"
System.out.println(date.toString());

: ‫ ^
د‬k‫ه 
ض اﺕ‬
The elapse time since Jan 1, 1970 is 1100547210284 milliseconds
Mon Nov 15 14:33:30 EST 2004

7.5.2. The Random Class

‫س‬E‫' ه آ‬E‫ ه‬. 0-1.0    ' g‫ 


ﺝ‬,‫ وا‬Math.random() ‫د‬H ‫ﻡ ﻡ‬$C 4‫ 
د ا‬$‫'& آ‬
4‫ ا‬package 2 ‫ ﻡﺝد‬,‫وا‬Random ‫س‬E‫ وه آ‬L+‫ وا‬,‫ﻥ ت ا‬.‫  اﻡ‬2 1‫ﺝه‬
: java.util

‫دس‬H ‫' ﻡ ﻡ ا‬E‫ ه‬$‫ آ‬$‫ و‬constructors‫& ال‬S ‫ﺝ‬+ ‫ ' اول‬,‫م ا‬E.‫ ا‬V ‫ﻥ‬
. ‫ آ ﻥع ﻡ اﻥاع ا
ات‬+ 2 ‫ا‬$‫ة ﺝ‬$ ‫ا‬

7.6. Sta)c Variables, Constants, and Methods

object g&  ‫  اﻥ‬Instance variable  L ‫ د‬radius -4\ $‫ '& آ‬, ,‫ا
ا‬
: $‫س زي آ‬E.‫ ﻡ ا‬e2 $+‫وا‬
Circle circle1
Circle circle = new Circle();
Circle circle2
circle = new Circle(5);
Circle(


‫ و اي ﺕ‬j   B ‫ ﻡ‬circle2
circle ‫  ع‬radius ‫ واـ‬circle1 ‫  ع‬radius‫ ﻡ اـ‬E‫آ‬
.i ?‫ ﺹ‬V.‫ وا‬u‫ ا ﻥ ﻡ]  \ﺙ
  ﺥ‬- 2 $+‫ اي وا‬2 B? 
‫ ود ﻡ ان آ‬static -‫ اﻥ‬, -2
 ‫اﺕ‬$‫ ا‬V ‫ ﻥ‬2 ‫ ا
ات ﺕ _رك‬,C‫ وز ﻥ‬
,
‫  \ﺙ‬-‫ ﻡ‬$+‫ اي وا‬2 B? 
‫ ﻡ ﻡ ا ري واي ﺕ‬+L‫ ﻡ‬2 ‫ا
ات  _
ك‬

m ‫ر اﻥد ﻡ‬$ ‫ ودي‬static methods ‫  
د‬2 static variables  2 ‫ زي ﻡ‬H‫ و‬.'&‫ا‬
.‫س‬E.‫ ﻡ ا‬object ‫ﻡا‬

‫ﻡ‬$C L‫ ه‬numberOfObjects  L‫ ه‬static


‫ود ﻡ‬1‫ وﻥ‬circle‫س ال‬E‫ آ‬, ‫ل‬$‫ ﺝ  ﻥ‬
‫ آن‬object ‫ اول‬,  ‫  ان‬.‫س‬E.‫ ا‬2 , -‫ ﺕ‬,‫د ا
ات ا‬$ $ 2
 L‫ وه‬static ‫د‬H ‫ا وه ﻡ‬Z.‫ وه‬١ ‫وي‬L  numberOfObjects
‫دس‬H ‫ ان ا
ات وا‬n+E‫س وﻥ‬E., uml ‫ ال‬4‫ ودي ر‬getNumberOfObjects()
: e‫ ﺕ?  ﺥ‬static‫ال‬

‫" ﺕ ی 
ع اﻝ  او‬#$ static ‫  آ‬static ‫ن اف   او
د  ا‬
: %&‫اﻝ
د زي آ‬
static int numberOfObjects;

static int getNumberObjects() {


return numberOfObjects;
}

final ‫ اﻥ‬, ‫زم اﻥ ﺕ 


ف‬c ‫ن‬.2 ‫س‬E.‫ ا‬2 objects‫ ال‬. + ‫   & ﻡ‬H‫`ن ا
ات ا‬
: Math‫س ال‬E‫ آ‬2 PI
‫ ا‬- , ‫ل‬H‫ وﻡ‬static
final static double PI = 3.14159265358979323846;

: $‫ آ‬circle‫س ال‬E‫ آ‬.< & ‫ ه‬$.‫و‬


1 public class Circle2 {
2 /** The radius of the circle */
3 double radius;
4
5 /** The number of the objects created */
6 static int numberOfObjects = 0;
7
8 /** Construct a circle with radius 1 */
9 Circle2() {
10 radius = 1.0;
11 numberOfObjects++;
12 }
13
14 /** Construct a circle with a specified radius */
15 Circle2(double newRadius) {
16 radius = newRadius;
17 numberOfObjects++;
18 }
19
20 /** Return numberOfObjects */
21 static int getNumberOfObjects() {
22 return numberOfObjects;
23 }
24
25 /** Return the area of this circle */
26 double getArea() {
27 return radius * radius * Math.PI;
28 }
29 }

: - ‫ &
  ا‬C‫ ه‬,‫س ا‬E.‫ود ا‬
1 public class TestCircle2 {
2 /** Main method */
3 public static void main(String[] args) {
4 // Create c1
5 Circle2 c1 = new Circle2();
6
7 // Display c1 BEFORE c2 is created
8 System.out.println("Before creating c2");
9 System.out.println("c1 is : radius (" + c1.radius +
10 ") and number of Circle objects (" +
11 c1.numberOfObjects + ")");
12
13 // Create c2
14 Circle2 c2 = new Circle2(5);
15
16 // Change the radius in c1
17 c1.radius = 9;
18
19 // Display c1 and c2 AFTER c2 was created
20 System.out.println("\nAfter creating c2 and modifying " +
21 "c1's radius to 9");
22 System.out.println("c1 is : radius (" + c1.radius +
23 ") and number of Circle objects (" +
24 c1.numberOfObjects + ")");
25 System.out.println("c2 is : radius (" + c2.radius +
26 ") and number of Circle objects (" +
27 c2.numberOfObjects +")");
28 }
29 }
‫‪7.7. Visibility Modifiers‬‬
‫ا‪ modifiers
2  2‬آ
‪_,‬ن ا ?‪ 2 -.‬ا
ات وا‪$‬اﺕ وﻡ ا<
ه‪ -‬ال ‪ public‬و ال‬
‫‪. private‬‬

‫‪ : Public -‬ود ا‪ gd‬ام  زي ﻡﻡ  ل آ‪ $‬اي آ‪E‬س ‪$‬ر _ف ا& ﻥت‬
‫وا
ات وا ‪H‬دس ا‪C‬ﺹ  ‪E.‬س د‪.‬‬
‫‪ : Private -‬و
د زي ﻡﻡ  ل ﻡ ] اي آ‪E‬س ‪$‬ر _ف او  ﻡ ﻡ‪  g‬ﻥت او‬
‫ﻡ
ات او ﻡ ‪H‬دس ا‪E.‬س د‪.‬‬
‫‪ -  -  -‬ﺕ?‪ $$‬اي ‪ modifier‬إذا ‪ 2‬ا? دي ‪ V‬ا‪$ ,‬ر _ف و ﻡ ﻡ‪ g‬ا
ات‬
‫وا& ﻥت وا ‪H‬دس ا‪C‬ﺹ ‪E.‬س د ه ا‪4E.‬ت ا‪ ,‬ﻡ ‪ 2‬ﻥ ‪ V‬ال‪e2 package‬‬
‫‪
m c‬و & ا‪ -4‬ال‪ 2 modifier‬ا? دي إﻡ ‪ default‬او ‪.protected‬‬

‫‪: c1,c2 and c3‬‬


‫ود ﻡ‪H‬ل ‪ ,‬ا‪E.‬م د ‪ ٣ ,‬آ‪E‬س ‪c‬‬

‫ه‪ n+E‬ه ان ‪ c1‬و‪ c22‬ﻡﺝد ‪ 2‬ﻥ ‪ V‬ال‪ package‬وا‪ ,‬ا‪ p11 4‬و‪ c3‬ﻡﺝد ‪2‬‬
‫‪ package‬ﺕﻥ  وا‪ ,‬ا‪. p2 4‬‬
-q g‫  ﻡ‬, C‫ت ا‬4E.‫ ت ا‬+E‫ ﺹ‬$$?‫  ه ﺕ‬44`‫ ا‬- ‫ ﻡ‬visibality modifiers‫ال‬
$+‫س اا‬E.‫
ﻡ ] اي ' د ﻡ اي ﻥع داﺥ ا‬B C . ‫& ﻥت‬, +
2  &S ‫ ود‬j&‫ا‬
: $‫ زي آ‬. 2 ‫دس اﺝد‬H ‫ آ ا& ﻥت وا
ات وا‬2 -.?  ‫ر‬$ ‫س‬E.‫ ان ا‬

7.8. Data Field Encapsula)on

?‫
ا‬2‫_ن او‬,‫ن و‬.‫ﻡ‬l‫ر ا‬$'  ?‫ن ﻡ‬.‫ ان '  ا
ﺕ‬L+`‫ن ﻡ ا‬.  ‫ ن‬+`‫ ا‬j 2
g‫ اﻡ‬$.‫ و‬data field encapsulation ‫ ل‬L‫ ود ﻡ‬private ‫ اﻥ‬, ‫دي 
ف ا
ات‬
. ‫ '  ا
ات‬2
 ‫س اﻥ‬E‫اي آ‬

1 public class Circle3


Circle {
2 /** The radius of the circle */
3 private double radius = 1;
;
4
5 /** The number of the objects created */
6 private static int numberOfObjects = 0;
7
8 /** Construct a circle with radius 1 */
9 public Circle3()
Circle () {
10 numberOfObjects
numberOfObjects++;
11 }
12
13 /** Construct a circle with a specified radius */
14 public Circle3(doubl
Circle double newRadius) {
15 radius = newRadius;
newRadius
16 numberOfObjects
numberOfObjects++;
17 }
18
19 /** Return radius */
20 public double getRadius() {
21 return radius;
22 }
23
24 /** Set a new radius */
25 public void setRadius(double
setRadius(double newRadius) {
26 radius = (newRadius >= 0)
0) ? newRadius : 0;
;
27 }
28
29 /** Return numberOfObjects */
30 public static int getNumberOfObjects() {
31 return numberOfObjects;
32 }
33
34 /** Return the area of this circle */
35 public double getArea() {
36 return radius * radius * Math.PI;
37 }
38 }

‫_ن‬,set() ‫ا وه‬$‫د ﻡ  ﺝ‬H ‫م اﺕ  ﻡ‬$C L private


‫ ﻡ‬g‫ ه اﻥ   ﻡ ﻡ‬n+E‫ﻥ‬

‫ '  ا‬$‫_ن اﺥ‬, get() ‫د‬H ‫م ﻡ‬$C L‫ و‬mutator ‫او‬setter ‫ 
د‬4‫  '  وا‬2 e+‫ا‬
accssor‫ او‬getter ‫ 
د‬4‫وا‬

7.9. Immutable Objects and Classes

immutable object ‫ ا? دي‬2 4‫ر ﻥ


ه  & ا‬$ ]‫ وﻡ? ﺕ ﻡ‬object  
‫ ﻡ‬set() ‫د‬H ‫ ﻡ‬, <  ‫  اﻥ‬immutable class 4‫   & ا‬2 ‫ ه ﻡﺝد‬,‫س ا‬E.‫وا‬
. object - ' ‫ﺥ اي‬$‫ر ﻥ‬$‫س د ﻡ اﻥ ﻡ] ه‬E.‫ا‬
7.10. Passing Objects to Methods

V  object‫ ال‬pass ‫ ا( او‬.‫ [ ه ﻡ‬S ‫د‬H 


‫ '  او ﻡ‬pass‫ ازاي ن‬2
 ‫ آ‬+‫ا‬
reference ?  object‫ `ﻥ ال‬e&^ array‫ ال‬,‫ ﻡﻡ‬,‫& وهﻡ‬S .‫ﺝ ﻡ‬l‫ا>
؟؟؟ ا‬
: ‫ل‬H‫ ود ﻡ‬.$‫ ا ري زي ﻡ' '& آ‬2 ‫ د‬object‫ن ال‬.
public class TestPassObject {
public static void main(String[] args) {
Circle3 myCircle = new Circle3(5.0);
Circle );
printCircle(myCircle);
}

public static void printCircle(Circle3


printCircle 3 c) {
System.out.println("The area of the circle of radius "
System.out.println("The
+ c.getRadius() + " is " + c.getArea());
}
}

7.12. The this Keyword


‫ اﻥ ﻥ‬$‫ ﻡ ا ري وآ‬+L‫ ﻡ‬1?‫ وﻥ‬object < ‫ل ﻡ ﻥ آ‬$ ‫ اﻥ‬q  ‫ ﻥ‬+‫ا‬
2 ‫ﻡ‬$C L‫ ادي و‬object‫ ال‬,‫ و ﻡ ﻡﻡ‬this ,‫ام آ‬$C 49 hidden ‫ن‬.  .‫ و‬object
: $‫ زي آ‬set ‫د ال‬H ‫ﻡ‬
7.14. Class Abstrac)on and Encapsula)on
V ‫ 
د‬$‫ر ﻥ آ‬$‫س ﻥ‬E.‫د  ' ا‬H ‫ ا‬-L‫ ﺝ‬B ‫دس ازاي ﻥ‬H ‫ <
ا‬2 ,‫زي ﻡاﺕ‬
I‫ ا>
 دي 
ف ﺹ‬2‫ و‬abstraction 4‫ ود  & ا‬q‫ت و‬4E‫ ي ال آ‬L‫ ﻡ‬,
 < g‫س ﻡ‬E.‫ ا‬I‫زﻡ ووﺹ‬E‫دس ا‬H ‫م ا
ات وا‬$C L  user‫س   ا وال‬E.‫ ا‬V
‫س‬E.‫م ا‬$C L ‫م اﻥ‬$C L, i  &S ‫ ود‬class's contract ‫ ل‬L‫ا ﻡ‬,   , user‫ال‬
‫ ل‬L‫  ود ﻡ‬C‫دس  & ﻡ‬H ‫ [ ازاي  ان ا
ات وا‬.‫
ﻡ 
ف اﺕ‬m ‫ﻡ‬
. encapsulation

u,‫ن ﺥ‬.
_‫ ا‬$.‫و‬
7‫ذن ا‬9 R 2 

You might also like