BAB 9
Be k e r j a de n ga n Ja va Cla ss Libr a r y
9 .1 Tu j u a n
Pada sesi ini, kit a akan m engant arkan beberapa konsep dasar dari Obj ect - Orient ed obj ct s, dan Program m ing ( OOP) . Selanj ut nya kit a akan m em bahas konsep dari classes dan
bagaim ana m enggunakan class dan anggot anya. Perubahan dan pem ilihan obj ect j uga akan dibahas. Sekarang, kit a akan focus dalam m enggunakan class yang t elah dij abarkan dalam Java Class library, kit a akan m em bahas nant i t ent ang bagaim ana m em bikin class anda sendiri.
Pada akhir pelaj aran, siswa seharusnya dapat : 1. m enj elaskan OOP dan beberapa konsepnya 2. perbedaan ant ara class dan obj ect
3. pebedaan ant ara inst ance variables/ m et hod dan class ( st at ic) variable/ m et hod 4. m enj elaskan m et hod apa dan bagaim ana m em anggil m et hod param et er 5. m engident ifikasi beberapa j angkauan dari sebuah variable
6. m em ilih t ipe dat a prim it ive dan obj ect
7. m em bandingkan obj ect s dan m enj abarkan class dari obj ect s.
9 .2 Pe n ge n a la n Pe m r ogr a m a n Be r or ie n t a si Obj e ct
OOP berput ar pada konsep dari obj ect sebagai dasar elem ent dari program anda. Ket ika kit a m em bandingkan dengan dunia nyat a, kit a dapat m enem ukan beberapa obj ek disekit ar kit a, sepert i m obil, singa, m anusia dan set erusnya. Obj ect ini dikarakt erisasi oleh sifat / at t ribut nya dan t ingkah lakunya.
Cont ohnya, obj ek sebuah m obil m em punyai sifat t ipe t ransm isi, w arna dan m anufakt ur. Mem punyai kelakuan berbelok, m engerem dan berakselerasi. Dengan cara yang sam a pula kit a dapat m endefinisikan perbedaan sifat dan t ingkah laku dari singa. Coba perhat ikan t able dibawah ini sebagai cont oh perbandingan :
Obj e ct Pr ope r t ie s Be h a vior
Car t ype of t ransm ission m anufact urer color
t urning braking accelerat ing Lion Weight
Color
hungry or not hungry t am ed or wild
roaring sleeping hunt ing
Dengan deskripsi ini, obj ek pada dunia nyat a dapat secara m udah dim odelisasi sebagai obj ek soft ware m enggunakan sifat sebagai dat a dan t ingkah laku sebagai m et hod. Dat a disini dan m et hod dapat digunakan dalam pem rogram an gam e at ausoft w are int erakt if unt uk m enst im ulasi obj ek dunia nyat a. Cont ohnya adalah sebagai soft ware obj ek m obil dalam perm ainan balap m obil at au soft ware obj ek singadalam sebuah soft ware pendidikan int erakt if pada kebun binat ang unt uk anak anak.
9 .3 Cla ss da n Obj e ct
9 .3 .1 Pe r be da a n Cla ss da n Obj e ct
Pada dunia soft ware, sebuah obj ek adalah sebuah kom ponen soft ware yang st ukt urnya m irip dengan obj ek pada dunia nyat a. Set iap obj ek dibuat dari sat u set dat a ( sifat ) dim ana variable m enj abarkan esensial karakt er dari obj ek, dan j uga t erdiri dar i sat u set dari m et hode ( t ingkah laku) yang m enj abarkan bagaim ana t ingkah laku dari obj ek. Jadi obj ek adalah sebuah berkas soft ware dari variable dan m et hod yg berhubungan. Variable dan m et hods dalam obj ek Java scara form al diket ahui sebagai inst ance variable dan inst ance m et hods unt uk m em bedakannya dari variable klas dan m et hod klas, dim ana akan dibahas kem udian.
Klas adalah st urkt ur dasa dari OOP. Dia t erdiri dari dua t ipe dari anggot a dim ana disebut dengan field ( at t ribut / propert i) dan m et hod. Field m espesifikasi t ipe dat a yang didefinisikan oleh class, sem ent ara m et hode spesifikasi dar i operasi. Sebuah obj ek adalah sebuah
inst ance pada class.
Unt uk dapat m em bedakanant ara class dan obect , m ari kit a m endiskusikan beberapa
cont oh. Apa yang kit a m ilik i disini adalah sebuah class m obil dim ana dapat digunakan unt uk m edefinisikan beberapa obj ect m obil. Pada t able dibawah, m obil A dan m obil B adalah obj ek dari kelas m obil. Kelas m em iliki field plat nom er, warna, m anufakt ur, dan kecepat an yang diisi dengan nilai korespondendi pada obj ek m obil A dan m obil B. m obil j uga dapat
berakselerasi, berbelok dan m engerem .
Ca r Cla ss Obj e ct Ca r A Obj e ct Ca r B
Plat e Num ber ABC 111 XYZ 123
Color Blue Red
Manufact urer Mit subishi Toyot a
I nst anc e Vari able s
Current Speed 50 km / h 100 km / h
Accelerat e Met hod
Turn Met hod
I nst anc e Met hod s
Brake Met hod
Ket ika diinisialisi, t iap obj ek m endapat sat u set baru dari st at e variable. Bagaim anapun, im plem ent asi dari m et hod dibagi diant ara obj ek pada kelas yang sam a.
Kelas m enyediakan keunt ungan dari reusabilit y. Soft ware program m ers dapat digunakan dari sebuah kelas lagi dan lagi unt uk m em buat beberapa obj ek.
9 .3 .2 I n st a n sia si Cla ss
Unt uk m em buat sebuah obj ek at au sebuah inst ance pada sebuah kelas. Kit a m enggunakan operat or baru. Sebagai cont oh, j ika anda ingin m em buat inst ance dari kelas st ring, kit a m enggunakan kode berikut :
St ring st r2 = new St ring( “ Hello w orld! ” ) ;
or also equivalent t o,
St ring st r2 = " Hello" ;
Figur e 1: Classs I nst ant iat ion
9 .3 .3 V a r ia be l Cla ss da n M e t h od
Sebagai t am bahan pada cont oh variable, hal ini j uga m em ungkinkan unt uk m endefinisikan variable kelas, dim ana variable m ilik dari seluruh kelas. I ni berart i bahw a m em iliki nilai yang sam a unt uk sem ua obj ek pada kelas yang sam a. Mereka j uga disebut st at ic m em ber variables.
9 .4 M e t h od
9 .4 .1 Apa k a h M e t h od it u da n m e n ga pa m e n ggu n a k a n M e t h od?
Pada cont oh yang t elah kit a diskusikan sebelum nya, kit a hanya m em ilik i sat u m et hod, dan it u adalah m ain( ) m et hod. Didalam Java, kit a dapat m endefinisikan beberapa m et hod yang akan kit a panggil dari m et hod yang berbeda.
Sebuah m et hod adalah bagian t erpisah dari kode yang akan dipanggil oleh program ut am a dan beberapa m et hod lainnya unt uk m enunj ukkan beberapa fungsi spesifik.
Berikut adalah karakt erist ik dari m et hod :
1. dapat m engem balikan sat u at au t idak ada nilai
2. dia m ungkin dapat dit erim a sebagai beberapa param et er yang dibut uhkan at au t idak ada aram et er sam a sekali. Param et er j uga disebut sebagai fungsi argum ent
Sekarang m engapa kit a but uh unt uk m em buat m et hod? Mengapa kit a t idak m elet akkan sem ua kode pada sebuah m et hod yang sangat besar? Pem ecahan m asalah disini alah dekom posisi. Kit a j uga dapat m elakukan ini di Java dengan m m buat m et hod unt uk m engat asi bagian spesifik dari m asalah. Mengam bil sebuah perm asalahan dan
m em ecahkannya m enj adi bagian kecil, bagian dapat diat ur adalah pent ing unt uk m enulis program yang besar.
9 .4 .2 M e m a n ggil I n st a n ce da r i M e t h od da n Pa ssin g V a r ia be l
Sekarang kit a ilust rasikan bagaim ana m em anggil m et hod, m ari kit a m enggunakan kelas st ring sebagai cont oh. Anda dapat m enggunakan t he Java API docum ent at ion unt uk m elihat sem ua m et hod dalam kelas st ring yang t ersedia. Selanj ut nya, kit a akan m em buat m et hod kit a sendiri. Tapi sekarang m ari kit a m enggunakan apa yang t ersedia.
Unt uk m em anggil sebuah inst ance m et hod, kit a m enuliskan :
nameOfObject.nameOfMethod( parameters );
m ari kit a m engam bil dua cont oh yang dit em ukan dalam kelas St ring.
M e t h od de cla r a t ion D e fin it ion
pu blic cha r ch a r At ( int in de x ) Mengam bil karakt er pada index.
pu blic boole a n e qua lsI gn or e Ca se ( St r in g a not h e r St r ing)
Mem bandingkan ant ar St ring, t idak case sensit ive.
Table 3: Met hod dari Class St ring
Menggunakan m et hod :
String
str1 = "Hello";
char x = str2.charAt(0); //will return the
character H
//simpan
pada
variabel
x
String
str2 = "hello";
//return boolean
9 .4 .3 Pa ssin g V a r ia be l D a la m M e t h od
Pada cont oh kit a, kit a t elah m ecoba m elewat i variable pada m et hod. Bagaim anapun j uga kit a t idak dapat m em bedakan ant ara perbedaan t ipe variabel passing dalam Java. Ada dua t ipe dat a passing pada m et hod, yang pert am a adalah pass- by- value dan yang kedua adalah pass- by- reference.
9 .4 .3 .1 Pa ss- by- Va lue
Ket ika pass- by- values t erj adi, m et hod m enggunakan sebuah copy pada nilai pada variable yang dilew at kan pada m et hod. m et hod t idak dapat secara langsung dim odifikasi secara argum ent langsung m eskipun j ika dim odifikasi param et ernya selam a perhit ungan berlangsung.
Cont oh :
public class TestPassByValue
{
public static void main( String[] args ){
int i = 10;
//mencetak nilai i
System.out.println( i );
//memanggil method test
//passing i pada method test
test( i );
//Mencetak nilai i
System.out.println( i );
Pass i as parameter which is copied to j
}
public static void test( int j ){
//merubah nilai parameter j
j = 33;
}
}
Pada cont oh diat as yang t elah diberikan, kit a m em anggil m et hod t es dan m elew at kan nilai i sebagai param et er. Nilai pada i dikopikan pada variable pada m et hod j . sej ak j adalah variable penggant i pada m et hod t es, dia t idak akan berdam pak pada nilai variable j ika i pada m ain sem enj ak m em iliki perbedaan kopy pada variable.
9 .4 .3 .2 Pa ss- by- r e fe r e n ce
Ket ika sebuah pass- by- reference t erj adi, referensi pada sebuah obj ek dilewat kan dengan cara m em anggil m et hod. Hal ini berart i bahw a m et hod m engkopi referensi pada variable yang dilewat kan pada m et hod. Bagaim anapun j uga, t idak sepert i apda pass- by- value, m et hod dapat m em buat obj ek act ual yang m enerangkan point ing t o, since, m eskipun berbeda ket erangan yang digunakan dalam m et hod, lokasi dari dat a yang m ereka t unj ukkan adalah sam a.
cont oh :
class TestPassByReference
{
public static void main( String[] args ){
//membuat
array
integer
int []ages
= {10, 11, 12};
//mencetak
nilai
array
for( int i=0; i<ages.length; i++ ){
System.out.println(
ages[i]
);
}
test( ages );
for( int i=0; i<ages.length; i++ ){
System.out.println(
ages[i]
);
}
}
public static void test( int[] arr ){
//merubah
nilai
array
for( int i=0; i<arr.length; i++ ){
arr[i] = i + 50;
Pass ages as parameter which is copied to variable arr
}
}
Gam bar 2 : Cont oh Pass By Reference
Pe t u n j u k Pe n u lisa n Pr ogr a m :
Keadaan yang salah t ent ang nilai oleh referensi di j ava adalah ket ika m em buat m et hod sw ap m enggunakan referensi Java, m encat at t ent ang m anipulasi obj ect Java ‘by reference’ t et api nilai obj eck dari referensi dari m et hod ‘by value,’” adalah hasil, anda t idak dapat m enulis st andart sw ap m et hod ke swap obj ek.
9 .4 .4 M e m a n ggil M e t h od St a t ic
m et hod St at ic adalah cara yang dapat dipakai t anpa inisialisasi suat u class ( m aksudnya t anpa m enggunakan kat a kunci yang baru ) , m et hod st at ic m em punyai class yang lengkap dan cont oh yang t idak past i ( at au obj ek) dari suat u class. m et hod st at ic dibedakan dari cont oh m et hod di dalam suat u class oleh kat a kunci st at ic.
Unt uk m em anggil m et hod st at ic, ket ik,
Cont oh dari st at ic m et hod yang digunakan :
//mencetak data pad
System.out.println(
“Hello world”);
a layar
//convert string menjadi integer
int i =
Integer.parseInt
(“10”);
String hexEquivalent =
Integer.toHexString
( 10 );
9 .4 .5 Lin gk u p V a r ia be l
Sebagai t am bahan dari suat u variable nam a dan t ipe dat a, suat u variable m em punyai j angkauan, Jangkauan m enent ukan dim ana program dapat m engakses variable, j angkauan j uga m enent ukan kehidupan dari suat u variable at au berapa lam a variable it u berada dalam m em ory. Jangkauan dit ent ukan oleh dim ana deklarasi variable di t em pat kan di dalam program .
Unt uk m enyederhanakannya, coba berpikir t ent ang j angkauan apapun ant ara kurung kuraw al { ...} , diluar kurung kuraw al disebut dengan blok t erluar, dan didalam kurung kurawal disebut dengan blok t erdalam .
Jika kam u m endeklarasikan variable di blok luar. Mereka akan t erlihat ( yait u, dapat dipakai) Oleh blok bagian dalam , bagaim ana pun, j ika kam u m endeklarasikan variable di blok dalam , kam u t idak bisa harapkan blok t erluar unt uk m elihat it u.
Cont oh, yang diberi code snippet ,
public class ScopeExam ple {
public st at ic void m ain( St ring[ ] args ) {
int i = 0;
int j = 0;
/ / ... som e code here {
int k = 0;
int m = 0;
int n = 0; }
}
A
B
C D
Kode yang kit a m iliki disini m em punyai lim a j angkauan yang dit andai oleh baris dan ket erangan yang m ew akili j angkauan it u, dengan variable i,j ,k,m dan n, dan 5 j angkauan A,B,C,D dan E, kit a m em punyai beberapa j angkauan variable berikut :
Jangkauan variable i adalah A. Jangkauan variable j adalah B. Jangkauan variable k adalah C. Jangkauan variable m adalah D. Jangkauan variable n adalah E.
Sekarang, m em beri kedua m et hod ut am a dan m enguj i di cont oh kit a sebelum nya,
class TestPassByReference
{
public static void main( String[] args ){
//membuat array integer
int []ages
= {10, 11, 12};
//mencetak nilai array
for( int i=0; i<ages.length; i++ ){
System.out.println( ages[i] );
}
test( ages );
//mencetak kembali nilai array
for( int i=0; i<ages.length; i++ ){
A
B
System.out.println( ages[i] );
}
C
}
public static void test( int[] arr ){
//merubah nilai pada array
for( int i=0; i<arr.length; i++ ){
Darr[i] = i + 50;
}
E
}
}
Pada m et hod pert am a, Jangkauan variables adalah,
Pada m et hod uj ian, Jangkauan variables adalah,
arr[ ]
- scope D
i in E
- scope E
m anakala variable di deklarasikan,hanya sat u variable yang di ident ifikasi at au nam a dapat di ident ifikasi di j angkauan, m aksudnya j ika kam u m em punyai deklarasi berikut ,
{
int test = 10;
int test = 20;
}
Com pilerm u akan m enghasilkan error karena kam u perlu m em punyai nam a yang lain dari variable di sat u blok, bagaim anapun, kam u dapat m em punyai dua variable dengan nam a yang sam a, j ika m ereka t idak dideklarasikan pada blok yang sam a, Cont oh
int test = 0;
System.out.print( test );
//..some code here
{
int test = 20;
System.out.print( test );
}
Manakala syst em pert am a out .print it u m em anggil, dia m encet ak nilai dari variable uj ian pert am a sej ak t erdapat pada variable j angkauan it u. Yang kedua, syst em .out print , nilai 20 dicet ak sej ak t ert ut up uj ian j angkauan variable it u.
Pe t u n j u k Pe n u lisa n pr ogr a m :
Hindari pem berian nam a yang sam a kepada variabel supaya Anda t idak kebingungan.
9 .5 Ca st in g, Con ve r t in g da n Com pa r in g Obj e ct s
9 .5 .1 Ca st in g Tipe Pr im it iv
Cast ing ant ara t ipe prim it ve m endukung Anda unt uk m engkonversikan sebuah value dari sebuah t ipe dat a t ert ent u kepada t ipe prim it ive yang lain. Hal ini biasanya t erj adi diant ara t ipe dat a num erik.
Ada sebuah t ipe dat a prim it ive yang t et ap t idak dapat kit a cast ing, dan dia adalah t ipe dat a boolean.
Sebagai cont oh dari t ypecast ing adalah pada saat Anda m enyim pan sebuah int eger kepada sebuah variabel dengan t ipe dat a double. Sebagai cont oh:
int num I nt = 10;
double num Double = num I nt ; / / im plicit cast
Pada cont oh ini dapat kit a lihat bahw a, w alaupu variabel yang dit uj u ( double) m em iliki nilai yang lebih besar daripada nilai yang akan kit a t em pat kan didalam nya, dat a t ersebut secara im plisit dapat kit a cast ing ke t ipe dat a double.
Cont oh yang lain adalah apabila kit a ingin unt uk m elakukan t ypecast ing sebuah int ke char at au sebaliknya. Sebuah karakt er akan dapat digunakan sebagai int karena set iap karakt er m em iliki sebuah nilai num erik yang m erepresent asikan posisinya dalam sat u set karakt er. Jika sebuah variable m em iliki nilai 65, m aka cast ( char) i akan m enghasilkan nilai 'A'. Num erik kode yang m erepresent asikan kapit al A adalah 65, berdasarkan karakt er set ASCI I , dan Java t elah m engadopsi bagian ini unt uk m endukung karakt er.
char valChar = 'A'; int valI nt = valChar;
Syst em .out .print ( va lI nt ) ; / / cast ing explisit : keluaran 65
Ket ika kit a m en- convert dat a yang bert ipe besar ke t ipe dat a yang lebih kecil, kit a harus m enggunakan e x plicit ca st. Explicit cast s m engikut i bent uk sebagai berikut :
( dat aType) value
dim ana,
dat aType, adalah nam a dari t ipe dat a yang Anda convert
value, adalah pernyat aan yang dihasilkan pada nilai dari t he source t ype.
Sebagai cont oh,
double valDouble = 10.12;
int valI nt = ( int ) va lD ouble ; / / m en- convert valDouble ke t ipe int
double x = 10.2; int y = 2;
9 .5 .2 Ca st in g Obj e ct s
I nst ances dari class- class j uga dapat di pilih k e inst ance- inst ance dari class- class yang lain, dengan sa t u ba t a sa n: cla ss- cla ss sum be r da n t uj u a n ha r us t e r h u bun g de nga n m e k a n ism e in he r it a n ce ; sa t u cla ss ha r us m e n j a di se bua h subcla ss t e r h a da p cla ss ya ng la in. kit a akan akan m enj elaskan m engenai inherit ance pada kesem pat an selanj ut nya.
Sej alan dengan pem ilihan nilai prim it ive unt uk t ipe yang lebih besar, beberapa obj ect m ungkin t idak m em but uhkan unt uk dipilih secara explisit . Fakt anya, karena sebuah sem ua subclass t erdiri at as inform asi yang sam a, Anda dapat m enggunakan inst ance dari subclass diam anpun sebuah superclass diharapkan berada.
Sebagai cont oh, m em pert im bangkan m et hode yang m em iliki dua argum ent , sat u t ipe obj ect dan t ipe window yang lain. Anda dapat m elewat kan inst ance dari beberapa class unt uk argum ent obj ect karena sem ua class j ava adalah subclass dari obj ect . Unt uk argum ent window, anda dapat m elewat kannya kedalam subclassnya, sepert i dialog, FileDialog, dan fram e. I ni benar dim anapun dalam program , bukan hanya dalam m em anggil m et hode. Jika anda m em punyai variabel yang didefinisikan sebagai window class, anda dapat m em berikan obj ect dari kelas t ersebut at au dari subclassnya unt uk variabelnya t anpa pem ilihan.
Figure 2: Contoh Hierarchy Class
I ni dibenarkan dalam kasus yang berkebalik an, dan Anda dapat m enggunakan superclass ket ika sebuah subclass dibent uk. Ada yang didapat kan dalam kasus ini, bagaim anapun: Ka r e na su bcla ss t e r dir i da r i le bih ba nya k k e m un gk in a n a k si da r ipa da su pe r cla ssn y a , t e r da pa t k e h ila n ga n da la m k e se im ba nga n k e t e r liba t a n . Obj ect superclass it u m ungkin t idak m em ilik i sem ua kem ungkinan aksi yang diperlukan unt uk aksi pada t em pat dari obj ect subclass berada. Sebagai cont oh j ika anda m em ilik i operasi yang m em anggil m et hode dalam obj ect dari class int eger, m engunakan obj ect dari class Num ber t idak akan t erdir i dar i benyak m et hode yang dispesifikasikan dalam int eger. err or t erj adi j ika Anda m encoba unt uk m em anggil m et hode yang t idak m em iliki obj ect t uj uan.
variabel yang m endefinisikan subclass. Unt uk m em ilih sebuah obj ect ke class yang lain, Anda m enggunakan operasi yang sam a sebagaim ana unt uk t ipe- t ipe prim it ive :
Unt uk m em ilih,
( classnam e) obj ect
dim ana,
classnam e, adalah nam a dari class t uj uan.
obj ect , adalah sesuat u yang m engarah pada sum ber obj ect .
• Ca t a t a n : pem ilihan ini m em buat referensi k e obj ect yang lam a dari t ipe nam aclass; obj ect yang lam a m elanj ut kan aksi sepert i yang t elah ada sebelum nya.
Figure 3: Class Hierarchy untuk superclass Employee
Cont oh berikut m em ilih sebuah inst ance dari class VicePresident ke sabuah inst ance dari class Em ployee; VicePresident adalah sebuah dari Em ployee dengan lebih banyak inform at ion, dim ana disini m endefinisikan bahw a VicePresident m em ilihi execut iv e washroom privileges,
Em ployee em p = new Em ployee( ) ;
VicePresident veep = new VicePresident ( ) ;
em p = veep; / / t idak adah pem ilihan yang diperlukan unt uk penggunaan yang cenderung naik
veep = ( VicePresident ) em p; / / Harus m em ilih dengan pem ilihan secara eksplisit
9 .5 .3 Con ve r t Tipe Pr im it ive k e Obj e ct D a n Se ba lik n ya
Sat u hal yang t idak dapat Anda lakukan pada beberapa keadaan yait u pem ilihan dari sebuah obj ect ke sebuah t ipe dat a prim it ive, at au vice versa. Tipe- t ipe prim it ive dan obj ect adalah sesuat u yang sangat berbeda dalam Java, dan Anda t idak bisa secara langsung m em ilih diant ara dua at au saling m enukar diant ara keduanya.
Java m erepresent asikan t ype dat a dan versi classnya dengan sangat berbeda, dan sebuah program t idak akan berhasil t ercom pile j ika Anda m enggunakan hanya sat u ket ika yang lain j uga diperlukan.
Menggunakan class- class yang sesuai unt uk set iap t ipe prim it ive, anda dapat m em buat sebuah obj ect yang m em ilik i nilai yang sam a.
Con t oh :
/ / Pernyat aan berikut m em bent uk sebuah inst ance bert ype I nt eger / / class dengan nilai int eger 7801 ( prim it ive - > Obj ect )
I n t e ge r da t a Cou n t = n e w I n t e ge r ( 7 8 0 1 ) ;
/ / Pernyat aan berikut m eng- convert s sebuah obj ect I nt eger ke
/ / t ipe dat a prim it ive int nya. Hasilnya adalah sebuah int / / dengan nilai 7801
in t n e w Cou n t = da t a Coun t .in t V a lu e ( ) ;
/ / Anda perlu suat u t ranslasi biasa pada program
/ / yang m eng- convert sebuah St ring ke sebuah t ipe num eric, / / sepert i suat u int
/ / Obj ect - > prim it ive
St r ing pe nn sylv a n ia = " 6 5 0 0 0 " ;
in t pe nn = I n t e ge r .pa r se I n t ( pe n n sylva n ia ) ;
• PERH ATI AN : class Void t idak m ew akili sesuat u dalam Java, j adi disini t idak ada alasan m enggunakannya ket ika m elakukan t ranslasi ant ara nilai prim it ive dan obj ect . I ni adalah penj elasan m engenai kat a kunci void, dim ana digunakan dalam definisi m et hod unt uk m engindikasikan bahwa m et hode t idak m em iliki sebuah nilai kem balian.
9 .5 .3 Com pa r in g Obj e ct s
Dalam diskusi kit a sebelum nya, kit a m em pelaj ari t ent ang operat or unt uk m em bandingkan nilai —sam a, t idak sam a, lebih kecil daripada, dan sebagainya. Operat or ini yang paling banyak bekerj a hanya pada t ipe prim it ive, bukan pada obj ect . Jika Anda berusaha unt uk m enggunakan nilai lain sebagai operands, Com piler Java akan m enghasilkan error.
Pengecualian unt uk at uran ini adalah operat or unt uk persam aan : = = ( sam a) dan ! = ( t idak) . Ket ika dinam pilkan ke obj ect , operat or ini t idak akan m elakukan apa yang
sebenarnya anda inginkan. Malahan m engecheck j ika sat u obj ect m em ilki nilai y ang sam a sepert i obj ect lain, m ereka m engenali j ika kedua sisi dari operat or m enunj uk obj ect yang sam a.
Unt uk m em bandingkan inst ances dari sebuah class dan m em ilik i hasil yang berart i, Anda harus m engim plem ent asikan m et hod khusus dalam class Anda dan m em anggil m et hod t ersebut . Sebuah cont oh yang baik unt uk ini adalah class St ring.
m em pert im bangkan nilai yang t idak sam a. Walaupun isinya sesuai m ereka bukan m erupakan obj ect yang sam a.
Unt uk m elihat j ika dua obj ect St ring m em iliki nilai yang sesuai, sebuah m et hod dari class yang disebuat dengan equals( ) digunakan. Met hod m enguj i set iap charact er dalam st ring dan m engem balikan nilai t rue j ika dua st ring m em iliki nilai yang sam a.
Kode berikut m engilust rasikan hal t ersebut ,
class EqualsTest {
public st at ic void m ain( St ring[ ] argum ent s) { St ring st r1, st r2;
st r1 = " Free t he bound periodicals." ; st r2 = st r1;
Syst em .out .print ln( " St ring1: " + st r1) ; Syst em .out .print ln( " St ring2: " + st r2) ;
Syst em .out .print ln( " Sam e obj ect ? " + ( st r1 = = st r2) ) ;
st r2 = new St ring( st r1) ;
Syst em .out .print ln( " St ring1: " + st r1) ; Syst em .out .print ln( " St ring2: " + st r2) ;
Syst em .out .print ln( " Sam e obj ect ? " + ( st r1 = = st r2) ) ; Syst em .out .print ln( " Sam e value? " + st r1.equals( st r2) ) ; }
}
Out put program ini adalah sebagai berikut ,
OUTPUT:
St ring1: Free t he bound periodicals. St ring2: Free t he bound periodicals. Sam e obj ect ? t rue
St ring1: Free t he bound periodicals. St ring2: Free t he bound periodicals. Sam e obj ect ? false
Sam e value? True
Sekarang m ari m endiskusikan t ent ang kode.
St ring st r1, st r2;
Figure 4: Keduanya mengarah ke object yang sama
Bagian pert am a dari program ini m endeklarasikan dua variabel ( st r1 dan st r2) , m em berikan lit eral " Free t he bound periodicals." unt uk st r1, dan kem udian m em beri nilai t ersebut unt uk st r2. Sepert i yang Anda pelaj ari sebelum nya, st r1 dan st r2 sekarang m enunj uk ke obj ect yang sam a, dan uj i kesam aan m em bukt ikan hal t ersebut .
st r2 = new St ring( st r1) ;
Padabagian yang kedua dari program ini, anda m em buat obj ect St ring baru dengan nilai yang sam a sebagai st r1 dan m em beri st r2 ke obj ect baru St ring t ersebut . Sekarang Anda m em iliki dua obj ect st ring yang berbeda yait u st r1 dan st r2, keduanya m em ilki nilai yang sam a.Test m ereka unt uk m elihat j ika m eeka obj ect yang sam a dengan m enggunakan operat or = = m engem balikan nilai yang diinginkan : false—m ereka buka obj ect yang sam a dalam m em ory. Test m ereka m enggunakan m et hod equals( ) j uga m engem balikan j awaban yang diinginkan: t rue—m ereka m em ilik i niali yang sam a.
Figure 5: Sekarang mengarah pada object yang berbeda
9 .5 .5 M e n e n t u k a n Cla ss da r i se bu a h Obj e ct
I ngin m enem ukan apakah sebuah class obj ect it u? Disini langkah unt uk m elakukannya unt uk sebuah obj ect yang diberikan sebagai kunci variabel :
1. M e t h od ge t Cla ss( ) m engem balikan sebuah obj ect Class ( dim ana Class it u sendiri m erupakan sebuah class) yang m em ilki sebuah m et hod yang disebut get Nam e( ) . Pada bagiannya, get Nam e( ) m engem balikan sebuah st ring yang m ew akili nam a class.
Sebagai cont oh,
St ring nam e = key.get Class( ) .get Nam e( ) ;
2 . ope r a t or I n st a n ce Of
inst anceOf m em iliki dua operands: suat u m engarahke sebuah obj ect pada sebelah kir i dan nam a class pada sebelah kanan. pernyat aan m engem balikan nilai t rue at au false t ergant ung pada apakah obj ect adalah sebuah inst ance dari penam aan class at au beberapa dari subclass m ilik class t ersebut .
Sebagai cont oh,
boolean ex1 = " Texas" inst anceof St ring; / / t rue Obj ect pt = new Point ( 10, 10) ;
9 .6 La t ih a n
9 .6 .1 M e n de fin isik a n I st ila h
Dengan kat a- kat a Anda sendiri, definisikan ist ilah- ist ilah berikut ini :
1. Class 2. Obj ect 3. I nst ant iat e 4. I nst ance Variable 5. I nst ance Met hod
6. Class Variables at au st at ic m em ber variables 7. Const ruct or
9 .6 .2 Ja va Sca va n ge r H u n t
Pipoy adalah suat u anggot a baru dalam bahasa pem rogram an Java. Dia hanya m em perdengarkan bahwa t elah ada API s siap pakai dalam Java yang salah sat unya dapat digunakan dalam program m ereka, dan ia ingin sekali unt uk m engusahakan m ereka keluar. Masalahnya adalah, Pipoy t idak m em iliki copy dari dokum ent asi Java, dan dia j uga t idak m em iliki acces int ernet , j adi t idak ada j alan unt uknya unt uk m enunj ukkan Java API s.
Tugas Anda adalah unt uk m em bant u Pipoy m em perhat ikan API s ( Applicat ion Program m ing I nt erface) . Anda harus m enyebut kan class dim ana seharusnya m et hod berada, deklarasi m et hod dan penggunaan cont oh yang dinyat akan m et hod.
Sebagai cont oh, j ika Pipoy ingin unt uk m enget ahui m et hod yang m engknversisebuah St ring ke int eger,j awaban Anda seharusnya m enj adi:
Cla ss: I nt eger
M e t h od D e cla r a t ion : public st at ic int parseI nt ( St ring value ) Sa m ple Usa ge :
St ring st rValue = " 100" ; int value = I nt eger.parseI nt ( st rValue ) ;
Se k a r a n g m a r i m e m u la i pe n ca r ia n !
1. Perhat ikan sebuah m et hod yang diuj i j ika St ring past i diakhiri suffix yang past i. Sebagai cont oh, j ika diberikan st ring " Hello" , Met hod harus m engem balikan nilai t rue suffix yang diberikan adalah " lo" , dan false j ika suffix yang diberikan adalah " alp" .
2. Perhat ikan unt uk m et hod yang m engenali charact er yang m ewakili sebuah digit yang spesifik dalam radix khusus. Sebagai cont oh, j ika input digit adalah 15, dan t he radix adalah 16, m et hod akan m engem balikan Charact er F, sej ak F adalah repr esent asi hexadecim al unt uk angka 15 ( berbasis 10) .
3. Perhat ikan unt uk m et hod yang m engakhiri running Java Virt ual Machine yang sedang berj alan
4. Perhat ikan unt uk m et hod yang m em peroleh lant ai dari sebuah nilai double. Sebagai cont oh, j ika Saya input a 3.13, m et hod harus m engem balikan nilai 3.
5.
Perhat ikan unt uk m et hod yang m engenali j ika charact er yang dipakai adalah sebuah