CS503: Second Lecture, Fall 2008 Basic Java, OOP, and Arrays.
Java Second Oop
Transcript of Java Second Oop
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 1/62
Zahid Aslam
Classes and Objects
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 2/62
Zahid Aslam
Overview
Implementing classes and objects in Java.
Understand important features in Java classes.
Visibility Control
Static Metods and !ttributes
"arameter "assing
Object #elegation
Object Cleanup
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 3/62
Zahid Aslam
Classes ! class is a collection of felds $data or attributes% and methods
$procedure or function% tat operate on tat data.
centre¢re'radius
area$%circumference$%
Circle
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 4/62
Zahid Aslam
#e(ning a Class
)e basic synta* for a class de(nition+class ClassName [extends SuperClassName]
{
[fields declaration]
[methods declaration] }
,are bone class +
// Circle.java
// Circle class definition
class Circle {
}
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 5/62
Zahid Aslam
!dding -ields+ Class Circle wit(elds
!dd felds
// Circle.java
class Circle {
double centreX, centreY; //centre coordinate
double radius; //radius
}
)e (elds $data% are also called te instance variables.
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 6/62
Zahid Aslam
!dding Metods ! class wit only data (elds are not useful. Objects created by
suc a class cannot respond to any messages.
Metods are declared inside te body of te class butimmediately after te declaration of data (elds.
)e general form of a metod declaration is+
t!e method"ame #!arameter$list%
{
method$bod;}
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 7/62Zahid Aslam
Circle Class /*ample
// Circle.java
class Circle {
double centreX, centreY;
double radius;
//ðods to return circumference and area double circumference#% {
double circum ' ()*.+)radius;
return circum;
}
double area#% {
double area ' *.+ ) radius ) radius;
return area;
}
}
Metod ,ody
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 8/62Zahid Aslam
Compiling te class
Create a (le Circle.java and enter te code for te classsown in te previous e*ample $0ote+ te (le namesould matc te class name%.
Compiling te class +javac Circle.java
Creates (le Circle.class
Circle becomes a derived data t!e that can be
used in a java !ro-ram.
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 9/62Zahid Aslam
#ata !bstraction #eclaring te Circle class1 as created a new data type Circle 2
#ata !bstraction
Variables of te data type can be now de(ned in a program.
// Circleest.java// est !ro-ram to test the Circle class
class Circleest {
!ublic static void main# trin- ar-s[] % {
Circle aCircle; Circle bCircle;
}
}
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 10/62Zahid Aslam
Class of Circle cont. )e de(nitions+ Circle aCircle3 Circle bCircle3 in te above
e*ample did not create Circle objects.
aCircle1 bCircle are simply references to a Circle object1 not anobject itself.
aCircle
"oints to noting
$0ull 4eference%
bCircle
"oints to noting
$0ull 4eference%
null null
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 11/62Zahid Aslam
Creating objects of a class Objects are created dynamically using te new 5eyword.
aCircle and bCircle refer to Circle objects
bCircle ' ne0 Circle#%;aCircle ' ne0 Circle#%;
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 12/62Zahid Aslam
Creating objects of a class
// Circleest.java
// est !ro-ram to test the Circle class
class Circleest {
!ublic static void main# trin- ar-s[]%{
Circle aCircle;
Circle bCircle;
aCircle ' ne0 Circle#%;
bCircle ' ne0 Circle#%;
}
}
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 13/62Zahid Aslam
Creating objects of a class
aCircle ' ne0 Circle#%;bCircle ' ne0 Circle#% ;
bCircle ' aCircle;
"
aCircle
6
bCircle
,efore !ssignment
"
aCircle
6
bCircle
,efore !ssignment
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 14/62Zahid Aslam
!utomatic garbage collection )e object does not ave a reference and cannot be
used in future.
)e object becomes a candidate for automatic garbagecollection.
Java automatically collects garbage periodically and releaseste memory used to be used in te future.
6
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 15/62Zahid Aslam
!ccessing Variables andMetods
Similar to C synta* for accessing data de(ned in a structure.
Circle aCircle ' ne0 Circle#%;
// initiali1e centre and radius
aCircle.centreX ' (.2;
aCircle.centreY ' (.2;
aCircle.radius ' +.2;
ObjectName.VariableName
ObjectName.MethodName(parameter-list)
i d i
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 16/62Zahid Aslam
/*ecuting Metods inObject7Circle
Using Object Metods+
Circle aCircle ' ne0 Circle#%;
double area;
area ' aCircle.area#%;
sent 8message9 to aCircle
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 17/62Zahid Aslam
Using Circle Class /*ample
// Circleest.javaclass Circleest {
!ublic static void main#trin- ar-s[]%{
Circle aCircle;
aCircle ' ne0 Circle#%;
aCircle.centreX ' +2;aCircle.centreY ' (2;
aCircle.radius ' 3;
double area ' aCircle.area#%;
double circumf ' aCircle.circumference#%;
stem.out.!rintln# 45adius'46aCircle.radius64 7rea'46area%;
stem.out.!rintln#45adius'46
aCircle.radius64Circumference '46circumf%;
}
}
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 18/62Zahid Aslam
Using Circle Class /*ample "rogram Output +
5adius'3.2 7rea'89.3
5adius'3.2 Circumference '*+.2222222222222(
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 19/62Zahid Aslam
,etter way of Initialising or!ccess #ata Members *1 y1 r
Information :iding is important;
!void giving direct access to attributes.
#e(ne !ccess metods. an interface for te rest of te system to use.
)o initialise7Update a value+
aCircle.setX# +2 % )o read a value+
aCircle.-etX#%
)ese metods are informally called as !ccessors orSetters7<etters Metods.
0ote + Java te*t boo5 uses a di=erent convention from wat isused in tese notes. <et metod in te te*t boo5 ise>uivalent to set metod in tese e*amples.
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 20/62
Zahid Aslam
!ccessors 2 ?<etters7Setters@
// Circle.java
class Circle {
double centreX, centreY, radius;
//ðods to set and -et fields
double -etX#% { return centreX;} double -etY#% { return centreY;}
double -et5#% { return radius;}
void setX#double x:in% { centreX ' x:in;}
void setY#double :in% { centreY ' :in;}
void set5#double r:in% { radius ' r:in;}
// ther methods -o here
}
U i t7 t t d
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 21/62
Zahid Aslam
Using get7set metods /*ample
// Circleest.java
class Circleest {
!ublic static void main#trin- ar-s[]%{
Circle aCircle;
aCircle ' ne0 Circle#%;
aCircle.setX#+2%;aCircle.setY#(2%;
aCircle.set5#3%;
double area ' aCircle.area#%;
double circumf ' aCircle.circumference#%;
stem.out.!rintln# 45adius'46aCircle.-et5#%64 7rea'46area%;
stem.out.!rintln#45adius'46
aCircle.-et5#%64Circumference '46circumf%;
}
}
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 22/62
Zahid Aslam
Object InitialiAation
Ben objects are created1 te initial value of data (elds isun5nown unless its users e*plicitly do so.
In te previous e*amples te initial values were set afterobject creation using synta*+
Object0ame.#ata-ield D E3Object0ame.Set#ata-ield$E%3
In many cases1 it would be useful if tis initialisation can
be carried out by default witout te users e*plicitlyinitialiAing tem.
In Java1 tis can be acieved troug a mecanism calledconstructors.
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 23/62
Zahid Aslam
Bat is a ConstructorF
Constructor is a special metod tat is invo5ed?automatically@ at te time of object creation.
Constructor is normally used for initialiAing objects witdefault values unless di=erent values are supplied.
Constructor as te same name as te class name.
Constructor cannot return values.
! class can ave more tan one constructor as long astey ave di=erent input arguments Overloading
)ere is 0O e*plicit invocation statement needed+ Bente object creation statement $new% is e*ecuted1 teconstructor metod will be e*ecuted automatically.
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 24/62
Zahid Aslam
#e(ning a Constructor
!ublic class Class"ame {
// <ata =ields>
// Constructor
ClassName() {
// Method Body Statements
}
//ðods to mani!ulate data fields
}
!ddi C t t t Ci l
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 25/62
Zahid Aslam
!dding a Constructor to Circleclass+ /*ample
// Circle.java
class Circle {
double centreX, centreY, radius;
Circle#% {
centreX ' 2;
centreY ' 2;
radius ' +2.2;
}
//ðods to set and -et fields
// ther methods -o here
}
!ddi M lti l " t
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 26/62
Zahid Aslam
!dding a Multiple"arametersConstructor to our Circle Class
class Circle {
double centreX, centreY, radius;
// Constructor
Circle#double x, double , double r%
{
centreX ' x;
centreY ' ;
radius ' r; }
//ðods to set and -et fields
// ther methods -o here
}
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 27/62
Zahid Aslam
Constructors initialise Objects 4ecall te following OG# Code Segment+
Circle aCircle ' ne0 Circle#%;
aCircle.x ' +2.2;
aCircle. ' (2.2aCircle.r ' 3.2;
aCircle = new Circle() 3
!t creation time te center and radius
are not de(ned.
)ese values are e*plicitly set later.
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 28/62
Zahid Aslam
Constructors initialise Objects Bit de(ned constructor
Circle aCircle ' ne0 Circle#+2.2, (2.2, 3.2%;
aCircle ' ne0 Circle#+2.2, (2.2, 3.2%;
aCircle is created wit center $E1 HE%and radius
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 29/62
Zahid Aslam
Constructor )est /*ample
// CircleConstructorest.javaclass CircleConstructorest {
!ublic static void main#trin- ar-s[]%{
Circle aCircle ' ne0 Circle#+2.2, (2.2, 3.2%;
stem.out.!rintln#?CentreX'?6aCircle.-etX#%%; stem.out.!rintln#?CentreY'?6aCircle.-etY#%%;
stem.out.!rintln#45adius'46aCircle.-et5#%%;
}
}
"rogram Output @ CentreX'+2.2
CentreY'(2.2
5adius'3.2
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 30/62
Zahid Aslam
Multiple Constructors
Sometimes want to initialiAe in a number of di=erent ways1depending on circumstance.
)is can be supported by aving multiple constructorsaving di=erent input arguments.
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 31/62
Zahid Aslam
Multiple Constructors
class Circle {
double centreX, centreY, radius;
// Constructor
Circle#double x, double , double r%{
centreX ' x; centreY ' ; radius ' r;
}
Circle#double r%{
centreX ' 2.2; centreY ' 2.2; radius '
r;
}
Circle#double x, double %{centreX ' x; centreY ' ; radius '
+2.2;
}
//ðods to set and -et fields
// ther methods -o here
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 32/62
Zahid Aslam
InitialiAing wit constructors!ublic class estCircles {
!ublic static void main#trin- ar-s[]%{
Circle circle7 ' ne0 Circle#+2.2, +(.2, (2.2%;
Circle circleA ' ne0 Circle#+2.2%;
Circle circleC ' ne0 Circle#3.2,+2.2%;
}}
circle! D new Circle$E1 H1 HE%circle, D new Circle$E%
Centre D $E1E%4adiusDE
circleC D new Circle$1E%
Centre D $1E%
4adius D E
Centre D $E1H%
4adius D HE
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 33/62
Zahid Aslam
Metod Overloading Constructors all ave te same name. Metods are distinguised by teir signature+
name number of arguments type of arguments position of arguments
)at means1 a class can also ave multiple metods wit tesame name + metod overloading. )is is a form of polymorpism.
0ot to confuse wit method overriding $coming up%.
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 34/62
Zahid Aslam
"olymorpism !llows a single method or operator associated wit di=erent
meaning depending on te type of data passed to it. It can berealised troug+ Metod Overloading
#e(ning te same method wit di=erent argument types$metod overloading% polymorpism.
)e metod body can ave di=erent logic depending on tedate type of arguments.
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 35/62
Zahid Aslam
)e 0ew this 5eyword
class Circle {
double centreX, centreY, radius; // Constructor
Circle #double centreX, double centreY, B double radius% {
this.centreX ' centreX;
this.centreY ' centreY; this.radius ' radius;
}
// ther methods
}
this 5eyword can be used to refer to te object itself. It isgenerally used for accessing class members $from its ownmetods% wen tey ave te same name as tose passedas arguments.
Visibility Control+ #ata :iding and
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 36/62
Zahid Aslam
Visibility Control+ #ata :iding and/ncapsulation
Java provides control over te visibility of variables andmetods.
)is allows encapsulation, wic is safely sealing data witin
te capsule of te class.
"revents programmers from relying on details of classimplementation1 so you can update witout worry.
:elps in protecting against accidental or wrong usage.
eeps code elegant and clean $easier to maintain%.
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 37/62
Zahid Aslam
Visibility
area
Circle
circumference
Center $*1y%4adius r
message
Construction time message
message
Circle
Visibility Modi(ers+ "ublic
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 38/62
Zahid Aslam
Visibility Modi(ers+ "ublic1"rivate1 "rotected
Public 5eyword applied to a class1 ma5es it available7visible
everywere. !pplied to a metod or variable1 completelyvisible.
#efault $0o visibility modi(er is speci(ed%+ it beaves li5epublic in its pac5age and private in oter pac5ages.
Private (elds or metods for a class only visible witin tatclass. "rivate members are not visible witin subclasses1 andare not inerited.
Protected members of a class are visible witin te class1subclasses and also witin all classes tat are in te samepac5age as tat class. )ey are also visible to subclasses inoter pac5ages.
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 39/62
Zahid Aslam
Visibility
!ublic class Circle { !rivate double centreX, centreY, radius;
// Constructor
!ublic Circle #double x, double , double r%
{
this.x ' x;this. ' ;
this.r ' r;
}
!ublic double circumference#%{return ()*.+)r;
}
!ublic double area#% {
return *.+ ) r ) r;
}
}
centre¢re'radius
Karea$%
Kcircumferenc
Circle
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 40/62
Zahid Aslam
!ccessors 2 ?<etters7Setters@
!ublic class Circle { !rivate double x,,r;
//ðods to return circumference and area
!ublic double -etX#% { return x;}
!ublic double -etY#% { return ;} !ublic double -et5#% { return r;}
!ublic void setX#double x% { this.x ' x;}
!ublic void serY#double % { this. ' ;}
!ublic void set5#double r% { this.r ' r;}
}
More on ?Visibility@ during Ineritance and "ac5age #iscussion
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 41/62
Zahid Aslam
Static Members
Java supports de(nition of global metods and attributes tatare common to all objects of te type of class. Suc membersare called Static members.
!n attribute or a metod can be de(ned to be static.
)is feature is useful wen we want to create a variablecommon to all instances $objects% of a class.
One of te most common e*amples of a static attribute is onetat 5eeps count of te number of objects of te class tatave been created.
0ote+ Java creates only one copy for a static variable wic
can be used even if te class is never instantiated.
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 42/62
Zahid Aslam
Static Variables /*ample
// Cricle.java
class Circle {
// static #class % variable
// ne for the Circle class, number of circles static int numCircles ' 2;
double centreX, centreY, radius;
// Constructors and other methods
Circle#double x, double , double r%{
centreX ' x; centreY ' ; radius ' r;
numCircles66;
}
}
Us ng Stat c Var a es
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 43/62
Zahid Aslam
Us ng Stat c Var a es /*ample
// CountCircles.javaclass CountCircles {
!ublic static void main#trin- ar-s[]%{
Circle circle7 ' ne0 Circle# +2, +(, (2%;
B // numCircles ' +
stem.out.!rintln#?"umber of Circles ' 6
Circle.numCircles %;
Circle circleA ' ne0 Circle# 3, *, +2%;
// numCircles ' (
stem.out.!rintln#?"umber of Circles ' 6
Circle.numCircles %;
}
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 44/62
Zahid Aslam
Static Variables /*ample
circle! D new Circle$E1 H1 HE% circle, D new Circle$1 L1 E%
numCircl
es
"umber of Circles ' +
"umber of Circles ' (
"rogram output@
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 45/62
Zahid Aslam
Instance Vs Static Variables
Instance variables + One copy per object. /very objectas its own instance variable.
/.g. centre&1 centre'1 radius $centre and radius inte circle%
Static variables + One copy per class. /.g. numCircles $total number of circle objects created%
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 46/62
Zahid Aslam
Static Metods ! class can ave metods tat are de(ned as static $e.g.1 main
metod%.
Static metods can be accessed witout using objects. !lso1tere is 0O need to create objects.
)ey are pre(*ed wit 5eyword ?static@
Static metods are generally used to group related libraryfunctions tat don9t depend on data members of its class. -ore*ample1 Mat library functions.
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 47/62
Zahid Aslam
Static metods restrictions Static metods can only call oter static metods.
Static metods can only access static data.
Static metods cannot refer to ?tis@ or ?super@ $more later% inanyway.
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 48/62
Zahid Aslam
Static Metods /*ample
// Circle.javaclass Circle {
// static #class % variable
// ne for the Circle class, number of circles
!rivate static int numCircles ' 2;
!rivate double centreX, centreY, radius;
// Constructors and other methods
!ublic Circle#double x, double , double r%{
centreX ' x; centreY ' ; radius ' r;
numCircles66;}
!ublic static void !rint"umCircles#%{
stem.out.!rintln#?"umCircles'?6numCircles%;
}
}
Using Static Metods
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 49/62
Zahid Aslam
Using Static Metods /*ample
// CountCircles.java
class CountCircles {
!ublic static void main#trin- ar-s[]%{
Circle circle7 ' ne0 Circle# +2, +(, (2%;
Circle circleA ' ne0 Circle# 3, *, +2%;
Circle.!rint"umCircles#%;
}
}"rogram Output+"umCircles'(
, 5 t : ll B ld
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 50/62
Zahid Aslam
,ac5 to :elloBorldSystem invo5es static main
metodN // DelloEorld.java@ Dello Eorld !ro-ram
class DelloEorld
{
!ublic static void main#trin- ar-s[]%
{
stem.out.!rintln#?Dello Eorld%;
}
}
,ac5 to Constants
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 51/62
Zahid Aslam
,ac5 to Constants(nal can also be made as staticN
// Fuared"umbers.java
class Fuared"umbers{
static final int &7X:"G&AH5 ' (3;
!ublic static void main#trin- ar-s[]%{
final int &7X:"G&AH5 ' (3; int lo ' +;
int sFuared ' 2;
0hile #sFuared I' &7X:"G&AH5%{
sFuared ' lo ) lo;
stem.out.!rintln#sFuared%; lo ' lo 6 +;
}
}
}
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 52/62
Zahid Aslam
-inal ! java variable can be declared using te 5eyword (nal. )en
te (nal variable can be assigned only once. ! variable tat is declared as (nal and not initialiAed is called a
blan5 (nal variable. ! blan5 (nal variable forces teconstructors to initialise it.
Java classes declared as (nal cannot be e*tended. 4estricting
ineritance; Metods declared as (nal cannot be overridden. In metods
private is e>ual to (nal1 but in variables it is not.
(nal parameters 2 values of te parameters cannot becanged after initialiAation. #o a small java e*ercise to (nd outte implications of (nal parameters in metod overriding.
Java local classes can only reference local variables andparameters tat are declared as (nal.
! visible advantage of declaring a java variable as static (nal
is1 te compiled java class results in faster performance.
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 53/62
Zahid Aslam
"arameter passing
Metod parameters wic are objects are passed byreference.
Copy of te reference to te object is passed into metod1original value uncanged.
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 54/62
Zahid Aslam
"arameter passing /*ample
// 5eferenceest.java!ublic class 5eferenceest {
!ublic static void main #trin-[] ar-s%
{
Circle c+ ' ne0 Circle#3, 3, (2%;
Circle c( ' ne0 Circle#+, +, +2%;
stem.out.!rintln#?c+ 5adius ' ?
6c+.-et5#%%;
stem.out.!rintln#?c( 5adius ' ?
6c(.-et5#%%;
!arameterester#c+, c(%;
stem.out.!rintln#?c+ 5adius ' ? 6c+.-et5#%%;
stem.out.!rintln#?c( 5adius ' ? 6c(.-et5#%%;
}
........ cont
i l
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 55/62
Zahid Aslam
"arameter passing /*ample
!ublic static void !arameterester#Circlecircle7,
Circle circleA%
{
circle7.set5#+3%;
circleA ' ne0 Circle#2, 2, +22%; stem.out.!rintln#?circle7 5adius'? 6
circle7.-et5#%%;
stem.out.!rintln#?circleA5adius'? 6
circleA.-et5#%%;}
}
i l
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 56/62
Zahid Aslam
"arameter passing /*ample "rogram Output +
c+ 5adius ' (2.2
c( 5adius ' +2.2
circle7 5adius ' +3.2circleA 5adius ' +22.2
c+ 5adius ' +3.2
c( 5adius ' +2.2
" i / l
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 57/62
Zahid Aslam
"arameter passing /*ampleSTEP1 – Before calling
parameterTester()
c
$11HE%
cH
$.1E%
&
circle!
&circle,
&
circle!
STEP2 – parameterTester(c1, c2)
c
$11HE%
cH
$.1E%circle!
circle,
circle!
STEP3 –circlA.setRadis(1!)
c
$11%
cH
$.1E%circle! circle,circle!
STEP" – circlB # ne$%irlce(&,&,1&&)c
$11%
cH
$.1E%circle! circle,circle!
$E.E1EE%
" t i / l
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 58/62
Zahid Aslam
"arameter passing /*ample
STEP! – After Retrning from parameterTester
c
$11%
cH
$.1E%
&
circle!
&
circle,
&
circle!
# l ti 7! i ti
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 59/62
Zahid Aslam
#elegation7!ssociation
!bility for a class to delegate its responsibilities to anoterclass.
! way of ma5ing an object invo5e services of oter objectstroug containersip.
# l ti / l
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 60/62
Zahid Aslam
#elegation /*ample
"oint
*Coord
yCoord
get&Coord$%get'Coord$%
class Joint {
!rivate double xCoord;
!rivate double Coord;
// Constructor
>>>>.
!ublic double -etXCoord#%{
return xCoord;
}
!ublic double -etYCoord#%{return Coord;
}
}
# l ti / l
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 61/62
Zahid Aslam
#elegation /*ample
"oint
*CoordyCoord
get&Coord$%get'Coord$%
!ublic class Circle {
!rivate Joint centre;
!ublic double -etX#%{
return centre.-etXCoord#%;
} !ublic double -etY#%{
return centre.-etYCoord#%;
}
} Circle
centre
getCentre&$%getCentre'$%
Obj t Cl 7# t t
8/16/2019 Java Second Oop
http://slidepdf.com/reader/full/java-second-oop 62/62
Objects Cleanup7#estructor Unli5e C and CKK1 memory deallocation is automatic in java1
don9t worry about it. no dangling pointers and no memory lea5 problem.
Java allows you to de(ne a fnalize metod1 wic is invoked $ifde(ned% just before te object destruction.
!llows recordmaintenance operations or cleaning up of anyspecial allocations made by te user.
// done 0ith this circle
!rotected void finali1e#% thro0s BHxce!tion {
Circle.numCircles ' Circle.numCircles$$
stem.out.!rintln#?number of circles@6
Circle.num:circles%;
}