J.E.N.I .
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 bab ini, k it a ak an m engant ar k an beber apa k onsep dasar dari Pem r ogr am an ber or ient asi obyek ( Obj ect Or ient ed Por gr am m ing) . Selanj ut ny a, kit a ak an m em bahas k onsep dari class dan oby ek , ser t a penggunaan class dan anggot a- anggot any a t erm asuk perbandingan, k onversi dan pengubahan obyek. Unt uk saat ini, kit a m em fokusk an dalam penggunaan class y ang t elah dij abar k an dalam Jav a Class libr ary , lalu ak an kit a lanjut k an t ent ang pem buat an class anda sendiri.
Pada ak hir pem bahasan, dihar apk an pem baca dapat :
1. Menj elaskan m engenai Pem rogram an berorient asi Obyek dan beberapa konsepnya 2. Per bedaan ant ar a class dan oby ek
3. Pebedaan ant ara variabel/ m et hod yang dit urunkan dan variable/ m et hod class ( st at ic) 4. Menj elask an m engenai m et hod, sert a car a pem anggilan dan pem ber ian par am et er k e
dalam m et hod
5. Mengident ifik asi beber apa j angk auan dari sebuah v ariabel 6. Mengubah t ipe dat a dan obyek prim it if
7. Mem bandingk an obyek dan m enj abar k an class dar i oby ek .
9 .2 Pe n ge na la n Pe m rogra m a n Be r or ie n t a si Oby e k
OOP ber put ar pada k onsep dari oby ek y ang m erupak an elem en dasar dari pr ogr am Anda. Ket ik a kit a m em bandingk an dengan dunia ny at a, k it a dapat m enem uk an beber apa oby ek disekit ar kit a seper t i m obil, singa, m anusia dan set erusny a. Oby ek ini dik ar ak t erisasi oleh at ribut dan t ingk ah lak unya.
Cont ohny a, obj ek sebuah m obil m em puny ai at r ibut t ipe t r ansm isi, warna dan m anufakt ur . Mem puny ai t ingk ah lak u ber belok , m enger em dan ber ak seler asi. Dengan car a y ang sam a pula kit a dapat m endefinisik an per bedaan sifat dan t ingk ah laku dari singa. Coba per hat ik an t abel dibawah ini sebagai cont oh perbandingan :
Oby ek At r ib u t Tingk a h Lak u
Mobil Tipe dari t ransm isi m anufakt ur Warna
Berbelok Mengerem Mem percepat
Singa Berat
Warna
Lapar atau t idak lapar Jinak at au liar
[image:1.612.68.547.630.732.2]Dengan desk ripsi ini, oby ek pada dunia ny at a dapat secar a m udah asum sik an sebagai oby ek per angk at lunak m enggunak an at ribut sebagai dat a dan t ingk ah laku sebagai m et hod. Dat a dan m et hod dapat digunakan dalam pem r ogram an gam e at au per angk at lunak int er ak t if unt uk m em buat sim ulasi oby ek pada dunia ny at a. Cont ohny a adalah per angk at lunak oby ek m obil dalam per m ainan balap m obil at au per angk at lunak oby ek singa dalam sebuah per angk at lunak pendidik an int er ak t if pada k ebun 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 per angk at lunak , sebuah obyek adalah sebuah k om ponen per angk at lunak y ang st uk t urny a m ir ip dengan oby ek pada dunia nyat a. Set iap oby ek dibangun dari sekum pulan dat a ( at r ibut ) y ang disebut v ariabel unt uk m enjabar k an k ar akt erist ik k husus dar i oby ek , dan j uga t er dir i dar i sekum pulan m et hod y ang m enj abar k an t ingk ah laku dar i oby ek . Bisa dik at ak an bahwa oby ek adalah sebuah per angkat lunak y ang ber isi sek um pulan v ariabel dan m et hod y g berhubungan. Variabel dan m et hod dalam oby ek Jav a secar a form al dik et ahui sebagai v ar iabel inst ance dan m et hod inst ance. Hal ini dilakuk an unt uk m em bedak an dari v ar iabel class dan m et hod class, dim ana ak an dibahas k em udian.
Class adalah st ur kt ur dasar dari OOP. Class t er diri dar i dua t ipe dari anggot a dim ana disebut dengan field ( at t ribut / pr opert i) dan m et hod. Field m er upak an t ipe dat a y ang didefinisik an oleh class, sem ent ar a m et hod m er upak an oper asi. Sebuah obyek adalah sebuah inst ance ( k et urunan) dar i class.
Unt uk dapat m em bedak anant ar a class dan obyek , m ari kit a m endiskusik an beber apa cont oh berikut ini. Kit a m em iliki sebuah class m obil dim ana dapat digunak an unt uk m edefinisik an beber apa oby ek m obil. Pada t abel dibawah, m obil A dan m obil B adalah oby ek dari class m obil. Class m em ilik i field nom or , plat , war na, m anufakt ur dan k ecepat an y ang diisi dengan nilai pada oby ek m obil A dan m obil B. Mobil juga dapat ber akseler asi, ber belok dan m elak uk an r em .
Cla ss m obil Obye k m obil A Obye k M obil B
Nom or Plat ABC 111 XYZ 123
Warna Biru Mer ah
Manufak t ur Mit subishi Toy ot a
Variabel
Intsance
Kecepat an 50 k m / h 100 km / h Met hod Akseler asi
Met hod Belok Met hod
I nst ance
Met hod Rem
Table 2: Cont oh class car dan obj ect - obj ect ny a
[image:2.612.70.544.508.664.2]J.E.N.I .
Ket ik a diinisialisi, set iap oby ek m endapat sat u set v ariabel y ang baru. Bagaim anapun, im plem ent asi dari m et hod dibagi diant ar a obj ek pada class y ang sam a.
Class m eny ediak an k eunt ungan dari r eusabilit y . Pr ogr am m er per angk at lunak dapat m enggunak an sebuah k elas beber apa k ali unt uk m em buat bany ak 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 class. Kit a m enggunakan oper at or ne w . Sebagai cont oh, jik a anda ingin m em buat inst ance dari class st r ing, k it a m enggunak an k ode ber ik ut :
St ring st r2 = new St ring( “ Hello world! ” ) ; I ni j uga sam a dengan,
St ring st r 2 = "Hello" ;
Gam bar 1: I nst anst iasi Class
9 .3 .3 V a r ia be l Cla ss da n V a r ia be l M e t h od
Selain dari v ar iabel inst ance, k it a j uga m em ungkink an unt uk m endefinisik an v ariabel dari class, y ang nant iny a v ar iabel ini dim iliki oleh class. I ni ber art i v ariabel ini dapat m em ilik i nilai y ang sam a unt uk sem ua obj ek pada class y ang sam a. Mer ek a j uga disebut st at ic m em ber
v ar iables.
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 gapa m e n ggu n a k a n M e t h od?
Pada cont oh y ang t elah kit a diskusik an sebelum ny a, kit a hany a m em ilik i sat u m et hod, dan it u adalah m et hod m ain( ) . Di dalam Jav a, kit a dapat m endefinisik an bany ak m et hod y ang akan k it a panggil dar i m et hod yang ber beda.
Sebuah m et hod adalah bagian- bagian k ode y ang dapat dipanggil oleh pr ogr am ut am a at au dar i m et hod lainny a unt uk m enj alank an fungsi yang spesifik .
Berikut adalah k ar akt erist ik dari m et hod :
1. dapat m engem balik an sat u nilai at au t idak sam a sek ali
2. dapat dit er im a beber apa par am et er y ang dibut uhk an at au t idak ada par am et er sam a sek ali. Par am et er bisa j uga disebut sebagai ar gum en dar i fungsi
Sek ar ang m engapa kit a but uh unt uk m em buat banyak m et hod? Mengapa kit a t idak m enulisk an sem ua k ode pada sebuah m et hod? Hal ini k ar ena peny elesaian m asalah y ang sangat efekt if adalah m em ecah m asalah- m asalah t ersebut m enj adi beber apa bagian. Kit a juga dapat m elakuk an hal ini di Jav a dengan m em buat m et hod unt uk m engat asi bagian t ert ent u dari m asalah. Sebuah perm asalahan dapat dipecah- pecah m enj adi beber apa bagian kecil. Hal ini sangat baik sek ali unt uk m em buat pr ogr am y ang sangat besar .
9 .4 .2 M e m a n ggil I n st a n ce da n m e m be r ik a n V a r ia be l da r i M e t h od
Sek ar ang, unt uk m engilust r asik an bagaim ana m em anggil m et hod, m ari kit a m enggunak an class st ring sebagai cont oh. Anda dapat m enggunak an t he dokum ent asi dar i Jav a API unt uk m elihat sem ua m et hod y ang t er sedia dalam class st ring. Selanjut nya, kit a ak an m em buat m et hod, k it a sendiri. Tapi unt uk saat ini, m ari t erlebih dahulu k it a gunak an m et hod y ang sudah disediak an oleh Jav a.
Unt uk m em anggil sebuah inst ance m et hod, kit a dapat m enulisk an :
nameOfObject.nameOfMethod( parameters );
m ari k it a m engam bil dua cont oh m et hod y ang dit em uk an dalam class St ring.
D e k la r a si m e t h od D e f in isi
pu blic ch a r ch ar At ( in t in de x) Mengam bil k ar ak t er pada indeks t ert ent u. pu blic boole an e qu a lsI gn or e Ca se
( St r in g an ot h er St r in g)
Mem bandingk an ant ar St ring, t idak case sensit ive.
Table 3: Met hod dari Class St ring
Menggunak an 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
J.E.N.I .
9 .4 .3 Pe m be r ia n V a r ia be l D a la m M e t h od
Pada cont oh k it a sebelum ny a , kit a sudah pernah m ecoba m elewat i v ariabel pada m et hod. Walaupun k it a belum dapat m em bedak an ant ar a per bedaan t ipe v ar iabel y ang diber ik an ( passing) k e m et hod dalam Java. Ada dua t ipe dat a v ariabel passing pada m et hod, y ang per t am a adalah pass- by - v alue dan y ang k edua adalah pass- by - r efer ence.
9 .4 .3 .1 Pa ss- by- V a lu e
Ket ik a pass- by - v alues t er j adi, m et hod m em buat sebuah salinan dari nilai v ar iable y ang dikir im k an k e m et hod. Walaupun dem ikian, m et hod t idak dapat secar a langsung m em odifik asi nilai v ar iabel pengir im ny a m eskipun par am et er salinanny a sudah dim odifik asi nilainy a di dalam m et hod.
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, kit a m em anggil m et hod t es dan m elewat k an nilai v ar iabel i sebagai par am et er . Nilai pada i disalink an k e v ariable j pada m et hod. Pada k ondisi ini v ar iabel j adalah m erupak an v ar iabel penggant i pada m et hod t es, j ik a nilai j ber ubah m ak a nilai v ar iabel i y ang t er let ak pada m ain t idak ak an ikut berubah walaupun awalny a v ariabel j m er upak an salinan dari v ariabel i.
Secar a default , sem ua t ipe dat a prim it if k et ik a dilewat k an pada sebuah m et hod adalah
9 .4 .3 .2 Pa ss- by- r ef er e nce
Ket ik a sebuah pass- by - r efer ence t er j adi, alam at m em ori dar i nilai pada sebuah v ariabel dilewat k an pada saat pem anggilan m et hod. Hal ini ber art i bahwa m et hod m eny alin alam at m em ori dari v ar iabel y ang dilewat k an pada m et hod. I ni t idak sepert i pada pass- by - v alue, m et hod dapat m em odifik asi v ariabel asli dengan m enggunak an alam at m em ori t er sebut , m eskipun ber beda nam a v ar iabel y ang digunakan dalam m et hod dengan v ar iabel asliny a, k edua v ariabel ini m enunjuk k an lok asi dar i dat a y ang 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] );
}
Pass ages as parameter which is copied to variable arr
}
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;
}
}
J.E.N.I .
Gam bar 2 : Cont oh Pass By Reference
Pe t u nj u k Pe nu lisa n Progr a m :
Kesalahan k onsep m engenai pass- by- r efer ence pada Jav a adalah pada saat m em buat m et hod unt uk m enuk ar nilai v ariabel m enggunak an pengalam at an j av a. Perlu diingat bahwa j av a m em anipulasi oby ek - oby ek dengan car a ‘by r efer ence’, ak an t et api j av a m engirim k an alam at oby ek k e dalam m et hod dengan cara ‘by v alue’. Unt uk it u, anda t idak dapat m enulisk an m et hod penuk ar an st andar ke dalam oby ek .
9 .4 .4 M e m a n ggil M e t h od St a t ic
Met hod St at ic adalah m et hod y ang dapat dipak ai t anpa harus m enginisialisasi suat u class ( m aksudny a t anpa m enggunak an v ar iabel t erlebih dahulu) . Met hod st at ic hany a dim iliki oleh class dan t idak dapat digunak an oleh inst ance ( at au obj ek ) dari suat u class. Met hod st at ic dibedak an dari m et hod y ang dapat inst ance di dalam suat u class oleh k at a k unci 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 y ang digunakan :
//mencetak data pada layar
System.out.println(“Hello world”);
//convert string menjadi integer
int i = Integer.parseInt(“10”);
String hexEquivalent = Integer.toHexString( 10 );
9 .4 .5 Lin gk up V a r ia be l
Selain nam a dan t ipe dat a y ang dim ilik i oleh v ar iabel, suat u var iablej uga m em puny ai j angk auan. Jangkauan ini m enent uk an k em am puan progr am dalam m engakses v ariable. Jangk auan ini juga m enent ukan siklus hidup dar i suat u v ariable at au ber apa lam a v ariable it u ber ada dalam m em or i. Jangk auan ini dit ent uk an oleh let ak pendeklar asian v ariabel di dalam pr ogr am .
Unt uk m em udahk an anda m engenai j angkauan v ar iabel, k it a bedak an v ar iabel y ang t erlet ak di dalam kur awal { ...} . Blok k ode y ang t er dapat di luar k ur ung k ur awal bisa disebut j uga dengan blok luar , dan blok k ode y ang t erlet ak di dalam kurung kur awal disebut dengan blok dalam .
Jik a k am u m endek lar asik an v ariabel di blok luar , v ar iabel ak an dapat dipak ai oleh blok bagian dalam . Lain halny a jik a k am u m endeklar asik an v ariabel di blok dalam , k am u t idak bisa har apk an blok t er luar unt uk m enggunak an v ariabel t er sebut .
J.E.N.I .
Sebagai Cont oh, per hat ik an pot ongan k ode ber ik ut :
public class ScopeExample
{
public static void main( String[] args ){
int i = 0;
int j = 0;
//... some code here
{
int k = 0;
int m = 0;
int n = 0;
}
}
Pengenalan Pem rogram an 1 9
A
B
E
Kode y ang kit a m iliki disini m em puny ai lim a j angk auan y ang dit andai oleh baris dan k et er angan y ang m ewakili j angk auan it u, dengan v ariable i,j ,k ,m dan n, dan 5 j angk auan A,B,C,D dan E, k it a m em puny ai beber apa j angkauan v ariable berikut :
Jangk auan v ariable i adalah A. Jangk auan v ariable j adalah B. Jangk auan v ariable k adalah C. Jangk auan v ariable m adalah D. Jangk auan v ar iable n adalah E.
Cont oh lain, jik a t er dapat dua m et hod, y ait u m ain dan t est ,
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++ ){
A
}
test( ages );
//mencetak kembali nilai array
for( int i=0; i<ages.length; i++ ){
C
System.out.println( ages[i] );
}
}
public static void test( int[] arr ){
//merubah nilai pada array
D
for( int i=0; i<arr.length; i++ ){
arr[i] = i + 50;
}
}
}
Pada m et hod m ain Jangk auan v ariabel adalah,
ages[ ]
- scope A
i in B
- scope B
i in C
– scope C
E
J.E.N.I .
Pada m et hod t est , Jangk auan v ariabel adalah,
arr[ ]
- scope D
i in E
- scope E
Pada saat v ariabel di deklar asik an, hany a boleh t erdapat sebuah v ar iabel dengan ident ifier / nam a dapat di deklarasikan di dalam sebuah j angkauan. Hal ini m aksudnya j ika k am u m em puny ai deklar asi ber ik ut ,
{
int test = 10;
int test = 20;
}
Com piler ak an m enghasilk an er r or k ar ena com piler m endet ek si nam a y ang lain dar i v ariabel
di sat u blok , nam un com piler t idak akan m enghasilk an err or j ik a m enum uk an dua variabel dengan nam a y ang sam a j ik a k edua v ar iabel t er sebut t idak didek larasik an pada blok yang sam a, Cont oh :
int test = 0;
System.out.print( test );
//..some code here
{
int test = 20;
System.out.print( test );
}
Manak ala Sy st em .out .print ( bar is 2) pert am a dipanggil, dia m encet ak nilai dari v ar iabel t est per t am a ( nilai 0) pada saat v ariabel t erlihat pada j angk auan. Perny at aan Sy st em .out .pr int y ang k edua ( baris6) , nilai 20 dicet ak m engam bil nilai variabel t est t erdekat ( baris 6) pada j angk auan blok k ode t er sebut .
Pe t u nj u k Pe nu lisa n progr a m :
Hindari pem ber ian nam a y ang sam a k epada var iabel supay a Anda t idak k ebingungan.
9 .5 Ca st in g, Conv e r t in g da n Com pa r in g Obj e ct s
Pada bagian ini, k it a ak an belaj ar bagaim ana m engunak an t y pecast ing. Ty pecast ing at au
cast ing adalah pr oses k onv er si dat a dar i t ipe dat a t er t ent u k e t ipe dat a y ang lain. Kit a juga
9 .5 .1 Ca st in g Tipe da t a Pr im it if
Cast ing ant ar a t ipe pr im it if dapat m engij ink an Anda unt uk m engk onv er sik an sebuah nilai
dar i sebuah t ipe dat a t ert ent u kepada t ipe prim it if y ang lain. Hal ini biasany a t er j adi diant ar a t ipe dat a angk a.
Ada sebuah t ipe dat a pr im it if y ang t idak dapat kit a cast ing, y ait u t ipe dat a boolean.
Sebagai cont oh dar i t y pecast ing adalah pada saat Anda m eny im pan sebuah v ar iabel dengan t ipe dat a int eger k epada sebuah v ariabel 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 k it a lihat bahwa, walaupun v ariabel y ang dit uj u ( double) m em iliki ukur an y ang lebih besar dar ipada nilai y ang ak an k it a t em pat kan didalam ny a, dat a t er sebut secar a im plisit dapat kit a cast ing ke t ipe dat a double.
Cont oh y ang lain adalah apabila kit a ingin unt uk m elakukan t ypecast ing sebuah int k e char at au sebalikny a. Sebuah k ar akt er ak an dapat digunak an sebagai nilai int eger k ar ena set iap k ar ak t er m em iliki sebuah nilai num erik y ang m erepr esent asik an posisiny a dalam sat u set k ar ak t er . Jik a sebuah v ariable m em ilik i nilai 65, m ak a cast ( char ) i ak an m enghasilk an nilai 'A'. Kode num erik y ang m er epr esent asik an hur uf k apit al A adalah 65, ber dasark an set k ar ak t er ASCI I , dan Jav a t elah m engadopsi bagian ini unt uk m endukung k arakt er .
char v alChar = 'A'; int v alI nt = v alChar ;
Sy st em .out .print ( va lI n t ) ; / / cast ing ex plisit : keluar an 65
Ket ik a kit a m engk onv ersi dat a y ang bert ipe besar k e t ipe dat a y ang lebih k ecil, kit a har us m enggunak an e x plicit ca st . Ex plicit cast s m engikut i bent uk sebagai berikut :
( dat aTy pe) v alue dim ana,
dat aTy pe, adalah nam a dar i t ipe dat a y ang Anda k onv er si
v alue, adalah per ny at aan y ang dihasilk an pada nilai dar i t he source t y pe.
Sebagai cont oh,
double v alDouble = 10.12;
int v alI nt = ( in t ) va lD ou ble ; / / m en- conv ert v alDouble k e t ipe int double x = 10.2;
int y = 2;
int r esult = ( in t ) ( x/ y) ; / / hasil t y pecast oper asi ke int
J.E.N.I .
9 .5 .2 Ca st in g Oby ek
I nst ances dar i class- class j uga dapat di ubah ke inst ance- inst ance dari class- class y ang lain dengan sa t u ba t a sa n : cla ss- cla ss sum be r da n t u j u a n h ar us t e r h u bu n g de n ga n m ek a n ism e in h e r it an ce ; sa t u cla ss h a ru s m e nj a di se bua h su bcla ss t e r h a da p class ya n g la in . Kit a ak an m enj elask an m engenai inherit ance pada bab selanj ut ny a.
Sej alan dengan k onversi nilai pr im it if k e t ipe y ang lebih besar ukur anny a, beber apa obj ect m ungkin t idak m em but uhkan unt uk ubah secar a ex plisit . Fak t any a k ar ena sem ua subclass t er diri at as infor m asi y ang sam a sepert i class induk ny a.
Sebagai cont oh, j ik a t er dapat m et hod y ang m em ilik i dua ar gum en, sat u t ipe obj ect dan t ipe
window y ang lain. Anda dapat m elewat k an inst ance dar i class apapun unt uk ar gum en obj ect k ar ena sem ua class j av a adalah subclass dar i obj ect . Unt uk ar gum en window,
[image:13.612.176.431.358.486.2]anda dapat m elewat k anny a subclassny a, seper t i dialog, FileDialog, dan fr am e. Hal ini dapat dit ulisk an dalam pr ogr am dan buk an hany a dalam m em anggil m et hod. Jik a anda m em puny ai v ar iabel y ang didefinisik an sebagai class window, anda dapat m em ber ik an oby ek dari class t er sebut at au dari subclassny a unt uk dij adik an v ariabel t anpa k onv ersi.
Figure 2: Contoh Hierarchy Class
Unt uk kebalik anny a pun bisa dilak uk an, Anda dapat m enggunak an super class k et ik a sebuah subclass dibent uk . Ak an t et api er r or ak an dit em uk an k ar e na su bcla ss k e m u n gk ina n m e m ilik i le bih ba n ya k t in gka h la k u da r ipa da su per classn ya , maka mungkin akan terjadi hilangnya kendali dari superclass untuk method tertentu. Superclass obj ect m ungkin t idak m em iliki sem ua k em ungkinan t ingk ah laku y ang dapat dilakuk an subclass
obj ect . Sebagai cont oh j ik a anda m em ilik i oper asi y ang m em anggil m et hod dalam oby ek
dar i class int eger , m engunak an obj ect dari class Num ber t idak a k a n d i d a p a t k a n m et hod l e b i h b a n y a k d a r i y ang dispesifik asik an dalam int eger . E r r or ak an t er j adi j ik a Anda m encoba unt uk m em anggil m et hod y ang t idak dim iliki oleh oby ek t uj uan.
v ar iabel y ang didefinisik an oleh subclass. Unt uk k onv er si sebuah oby ek k e class y ang lain, Anda dapat m enggunak an oper asi y ang sam a seper t i k onv er si unt uk t ipe- t ipe prim it if : Unt uk m em ilih,
( classnam e) obj ect dim ana,
classnam e, adalah nam a dari class t ujuan.
obj ect , adalah sesuat u y ang m engar ah pada oby ek sum ber .
[image:14.612.199.408.230.308.2] Ca t a t a n : cast ing ak an m em buat pengalam at an k e oby ek y ang lam a dar i classnam e y ang dit ulisk an; oby ek y ang lam a ak an dapat t et ap dipak ai seper t i sebelum ny a.
Figure 3: Class Hierarchy untuk superclass Employee
Cont oh ber ik ut k onv er si sebuah inst ance dar i class VicePr esident k e sabuah inst ance dar i class Em ploy ee; VicePresident adalah sebuah subclass dar i Em ploy ee dengan lebih bany ak inform asi, disini didefinisik an bahwa VicePr esident m em iliki ak ses m enuj u
ex ecut iv e washr oom ,
Em ploy ee em p = new Em ploy ee( ) ;
VicePr esident v eep = new VicePr esident ( ) ;
em p = v eep; / / t idak adah k onv er si y ang diperluk an unt uk penggunaan y ang cenderung naik
v eep = ( VicePr esident ) em p; / / Har us m em ilih dengan pem ilihan secar a ek splisit
9 .5 .3 Con ve r t Tipe Pr im it ive k e Obj e ct D a n Se ba lik n y a
Sat u hal y ang t idak dapat Anda lakuk an pada beber apa keadaan y ait u k onv er si dar i sebuah oby ek ke sebuah t ipe dat a pr im it if, at au sebalik ny a. Tipe- t ipe d at a pr im it if dan oby ek adalah sesuat u y ang sangat ber beda dalam Jav a, dan Anda t idak bisa secar a langsung k onv ersi diant ar a k eduany a.
Sebagai sebuah alt ernat if, pack age j a va .la n g y ang t er diri at as class- class y ang ber hubungan unt uk set iap t ipe dat a prim it if y ait u : Float , Boolean, Byt e, dan sebagainy a. Kebany akan dar i class- class ini m em iliki nam a y ang sam a sepert i t ipe dat any a, k ecuali j ik a nam a classny a diawali dengan huruf besar ( Short - > sort , Double - > double dan sebagainy a) . Selain itu terdapat dua class yang m em iliki nam a ber beda dari t ipe dat a prim it ifny a y ait u: Char act er digunak an unt uk v ariabel char dan I nt eger unt uk v ariabel int . ( D ise bu t de n gan W r a ppe r Classes)
J.E.N.I .
Jav a m erepr esent asik an t ipe dat a p r i m i t i f dan v er si classny a dengan sangat ber beda. Sebuah pr ogr am t idak ak an ber hasil t er com pile j ik a Anda m enggunak an hany a sat u ket ik a y ang lain j uga diper luk an.
Menggunak an class- class y ang ber hubungan unt uk set iap t ipe prim it if, anda dapat m em buat sebuah oby ek yang m em ilik i nilai y ang sam a.
Con t oh :
/ / Per ny at aan berikut m em bent uk sebuah inst ance bert ipe I nt eger / / class dengan nilai int eger 7801 ( pr im it if - > Obj ect )
I n t e ge r da t a Cou n t = ne w I n t e ger ( 7 8 0 1 ) ;
/ / Per ny at aan berikut m eng- k onv er si sebuah obyek I nt eger k e / / t ipe dat a prim it if int ny a. Hasilny a adalah sebuah int
/ / dengan nilai 7801
in t n e w Cou n t = da t a Cou n t .in t V a lu e( ) ;
/ / Anda per lu suat u t r anslasi biasa pada pr ogr am
/ / y ang m engk onv ersi sebuah St ring k e sebuah t ipe num er ic, / / sepert i suat u int
/ / Oby ek - > prim it if
St r in g pe nn sylva n ia = " 6 5 0 0 0 " ;
in t pe n n = I n t e ger .pa r se I n t ( pe nn sylva n ia ) ;
PERH ATI AN : class Void t idak m ewakili apapun dalam Jav a, j adi class ini t idak ak an digunak an k et ik a m elak uk an k onv ersi ant ara nilai pr im it if dan obyek . Kat a v oid digunakan dalam definisi m et hod unt uk m engindik asik an bahwa m et hod t idak m em ilik i sebuah nilai y ang dihasilk an.
9 .5 .3 M e m ba n din gk a n du a Oby ek
Dalam diskusi kit a sebelum ny a, kit a m em pelaj ar i t ent ang oper at or unt uk m em bandingk an nilai — sam a dengan, t idak sam a dengan, lebih k ecil daripada, dan sebagainy a. Oper at or ini hany a bek er j a pada t ipe pr im it if, buk an pada oby ek . Jik a Anda berusaha unt uk m enggunak an nilai selain t ipe dat a pr im it if sebagai operand, com piler Jav a ak an m enghasilk an err or .
Salah sat u cont oh unt uk at ur an ini adalah oper at or unt uk per sam aan : = = ( sam a dengan) dan ! = ( t idak sam adengan) , k et ik a oper at or ini dim asuk k an k e sebuah obyek , oper at or ini t idak ak an m elak uk an apa yang sebenar ny a diingink an. Penggunaan oper at or ini ak an m em eriksa kesam aan ant ar a sat u oby ek k e obyek lain, buk an nilainy a.
Unt uk m em bandingkan inst ance dar i sebuah, Anda har us m engim plem ent asik an m et hod k husus dalam class anda dan m em anggil m et hod t ersebut . Sebuah cont oh y ang baik unt uk ini adalah class St r ing.
m enghasilk an hasil y ang t idak sam a. Walaupun isiny a t erny at a sam a ak an t et api pada k eny at aanny a m erek a buk an m erupak an oby ek y ang sam a.
Unt uk m elihat j ik a dua obj ect St ring m em ilik i nilai y ang sam a, sebuah m et hod dari class y ait u equals( ) digunak an. Met hod ini ak an m em er ik sa set iap k ar ak t er dalam st ring dan m engem balik an nilai t rue jik a dua oby ek st ring m em iliki nilai y ang sam a.
Kode berikut m engilust r asik an hal t er sebut , class EqualsTest {
public st at ic v oid m ain( St ring[ ] ar gum ent s) { St ring st r 1, st r 2;
st r1 = "Fr ee t he bound periodicals." ; st r2 = st r1;
Sy st em .out .pr int ln( "St r ing1: " + st r 1) ; Sy st em .out .pr int ln( "St r ing2: " + st r 2) ;
Sy st em .out .pr int ln( "Sam e obj ect ? " + ( st r1 = = st r2) ) ; st r2 = new St ring( st r 1) ;
Sy st em .out .pr int ln( "St r ing1: " + st r 1) ; Sy st em .out .pr int ln( "St r ing2: " + st r 2) ;
Sy st em .out .pr int ln( "Sam e obj ect ? " + ( st r1 = = st r2) ) ; Syst em .out .print ln( " Sam e v alue? " + st r1.equals( st r 2) ) ; }
}
Out put pr ogr am ini adalah sebagai ber ik ut , OUTPUT:
St ring1: Free t he bound periodicals. St ring2: Free t he bound periodicals. Sam e obj ect ? t r ue
St ring1: Fr ee t he bound per iodicals. St ring2: Fr ee t he bound per iodicals. Sam e obj ect ? false
Sam e v alue? True
Sek ar ang m ari m endiskusik an t ent ang dua baris k ode dari pr ogr am sebagai ber ik ut . St ring st r 1, st r 2;
st r1 = " Free t he bound periodicals." ;
J.E.N.I .
Bagian pert am a dari pr ogr am m endeklar asikan dua v ariabel ( st r 1 dan st r2) , m em berik an k alim at " Free t he bound periodicals." unt uk st r1, dan kem udian m em beri nilai t er sebut unt uk st r2. Sepert i y ang Anda pelaj ar i sebelum ny a, st r1 dan st r2 sek ar ang m enunjuk ke alam at oby ek y ang sam a, dan uj i k esam aan m em buk t ikan hal t er sebut .
st r2 = new St ring( st r1) ;
[image:18.612.170.449.258.373.2]Pada bagian y ang k edua dari pr ogr am ini, anda m em buat oby ek St ring baru dengan nilai y ang sam a dar i st r1 dan m em ber ik k any a k e st r2. Sek ar ang Anda m em ilik i dua obyek st ring y ang ber beda y ait u st r 1 dan st r 2, k eduany a m em ilki nilai y ang sam a. Ket ik a dilak uk an penguj ian unt uk m elihat j ik a m ereka oby ek y ang sam a dengan m enggunak an oper at or = = , ak an dihasilk an nilai: false — kedua oby ek buk an oby ek y ang sam a dalam m em or y . k et ik a dilak uk an penguj ian m enggunak an m et hod equals( ) m ak a ak an dihasilk an : t rue – k edua oby ek t er sebut m em iliki nilai y ang sam a.
Gambar 5: Alamat sekarang mengarah pada object yang berbeda
J.E.N.I .
9 .5 .5 M e n e n t u k a n Cla ss da r i se bu ah Obj e ct
Jik a k it a ingin m enget ahui class dari sebuah obyek dapat dilakuk an dengan car a :
1. M e t h od ge t Cla ss( ) m engem balik an sebuah oby ek Class ( dim ana Class it u sendiri m er upak an sebuah class) yang m em ilk i sebuah m et hod get Nam e( ) . Selanjut ny a get Nam e( ) ak an m engem balik an sebuah st r ing y ang m ewakili nam a class.
Sebagai cont oh,
St ring nam e = k ey .get Class( ) .get Nam e( ) ; 2 . ope r at or I n st anceOf
inst anceOf m em iliki dua oper and: obyek pada sebelah kir i dan nam a class pada sebelah k anan. Perny at aan ini m engem balik an nilai t rue at au false t er gant ung pada benar / salah oby ek adalah sebuah inst ance dar i penam aan class at au beber apa subclass m ilik class t er sebut .
Sebagai cont oh,
boolean ex 1 = " Tex as" inst anceof St r ing; / / 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 k at a- k at a Anda sendiri, definisik an 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 v ariables 7. Const r uct or
9 .6 .2 Ja va Sca va n ge r H u n t
Pipoy adalah suat u anggot a bar u dalam bahasa pem r ogr am an Jav a. Dia hany a m em per dengar k an bahwa t elah ada API s siap pak ai dalam Jav a y ang salah sat uny a dapat digunak an dalam pr ogr am m er ek a, dan ia ingin sek ali unt uk m engusahak an m er ek a k eluar . Masalahny a adalah, Pipoy t idak m em ilik i copy dari dok um ent asi Java, dan dia j uga t idak m em iliki acces int ernet , j adi t idak ada j alan unt ukny a unt uk m enunjukk an Jav a API s.
Tugas Anda adalah unt uk m em bant u Pipoy m em perhat ik an API s ( Applicat ion Pr ogr am m ing I nt er face) . Anda har us m eny ebut k an class dim ana sehar usny a m et hod ber ada, dek lar asi m et hod dan penggunaan cont oh y ang diny at ak an m et hod.
Sebagai cont oh, j ik a Pipoy ingin unt uk m enget ahui m et hod y ang m engknv ersisebuah St r ing k e int eger ,j awaban Anda sehar usny a m enj adi:
Cla ss: I nt eger
M e t hod D e clar a t ion: public st at ic int par seI nt ( St ring v alue ) Sa m ple Usa ge :
St ring st rValue = " 100" ;
int v alue = I nt eger .parseI nt ( st rValue ) ;
y ak ink an bahwa snippet dari k ode y ang Anda t ulis dalam cont oh Anda
m enggunak an com piles dan m em ber i
3. Perhat ik an unt uk m et hod y ang ber j alan
4. Perhat ik an unt uk m et hod y ang cont oh, j ik a Say a
5.
Per hat ik aninput a 3 m et hod
.13, m y ang
J.E.N.I .
Se k a r an g m a r i m e m u la i pe nca r ia n !
1. Per hat ik an sebuah m et hod y ang diuj i j ik a St r ing past i diak hiri suffix y ang past i. Sebagai cont oh, j ik a diberik an st ring "Hello" , Met hod har us m engem balik an nilai t r ue suffix y ang diberik an adalah " lo" , dan false jik a suffix y ang diberik an adalah " alp" .
2. Perhat ik an unt uk m et hod y ang m engenali char act er y ang m ewakili sebuah digit y ang spesifik dalam r adix k husus. Sebagai cont oh, jik a input digit adalah 15, dan t he r adix adalah 16, m et hod ak an m engem balik an Char act er F, sej ak F adalah
r epr esent asi
hex adecim al unt uk angk a 15 ( ber basis 10) .
m engak hiri running Jav a Virt ual Machine y ang sedang m em per oleh lant ai dari sebuah nilai double. Sebagai et hod har us m engem balik an nilai 3.