BAB 10 Membuat Class Sendiri 10.1 Tujuan - JENI Intro1 Bab10 Penulisan Class
BAB 1 0
M e m bu a t Cla ss Se n dir i 1 0 .1 Tu j u a nSet elah kit a m em pelaj ari penggunaan class dari Java Class Library, kit a akan m em pelaj ar i bagaim ana m enuliskan sebuah class sendiri. Pada bagian ini, unt uk m em perm udah pem aham an pem buat an class, kit a akan m em buat cont oh class dim ana akan dit am bahkan beberapa dat a dan fungsi – fungsi lain.
Kit a akan m em buat class yang m engandung inform asi dari Siswa dan operasi – operasi yang dibut uhkan pada record siswa. Beberapa hal yang perlu diperhat ikan pada synt ax yang digunakan pada bab ini dan bagian lainnya :
- Menandakan bahwa t erj adi lebih dari sat u kej adian dim ana elem en t ersebut diim plem ent asikan
< descript ion> - Menandakan bahw a Anda harus m em berikan nilai past i pada bagian ini [ ] - I ndikasi bagian opt ional
Pada akhir pem bahasan, diharapkan siswa dapat :
- Mem buat kelas m ereka sendiri
- Mendeklarasikan atribut dan m ethod pada class
- Menggunakan referensi this untuk m engakses instance data
- Mem buat dan m em anggil overloaded m ethod
- Mengim port dan m em buat package
- Menggunakan access m odifiers untuk m engendalikan akses terhadap class m em ber
1 0 .2 M e n de fin isik a n Cla ss An da
Sebelum m enulis class Anda, pert am a pert im bangkan dim ana Anda akan m enggunakan
class dan bagaim ana class t ersebut akan digunakan. Pert im bangkan pula nam a yang t epat
dan t uliskan seluruh inform asi at au propert i y ang ingin Anda isi pada class. Jangan sam pai t erlupa unt uk m enuliskan secara urut m et hod yang akan Anda gunakan dalam class.
Dalam pendefinisian class, dit uliskan :
<modifier> class <name> { <attributeDeclaration>* <constructorDeclaration>* <methodDeclaration>*
} dim ana : <modifier> adalah sebuah access m odifier, yang dapat dikom binasikan dengan t ipe m odifier lain.
Pe t u n j u k Pe n u lisa n Pr ogr a m :
Perhat ikan bahwa pada class t erat as, access m odifier yang diperbolehkan adalah public dan
package ( bila t idak t erdapat penulisan keyword access m odifier pada kelas)Pada bagian ini, kit a akan m em buat sebuah class yang berisi record dari siswa. Jika kit a t elah m engident ifikasikan t uj uan dari pem buat an kelas, m aka dapat dilakukan pem berian nam a yang sesuai. Nam a yang t epat pada class ini adalah St udent Record. Unt uk m endefinisikan class, kit a t uliskan : public class StudentRecord {
//area penulisan kode selanjutnya } dim ana,
Public - Class ini dapat diakses dari luar package Class - Keyword yang digunakan di pem buat an class Java
- St udent Record I dent ifier yang m enj elaskan class
Pe t u n j u k Pe n u lisa n Pr ogr a m :
1. Pert im bangkan nam a yang t epat unt uk class. Jangan gunakan nam a acak dan singkat sepert i XYZ.
2. Nam a class harus dim ulai dengan huruf kapit al
3. Nam a file dari class harus sam a dengan nam a public class 1 0 .3 D e k la r a si At r ibu t
Dalam pendeklarasian at ribut , kit a t uliskan : <modifier> <type> <name> [= <default_value>];
Langkah selanj ut nya adalah m engurut kan at ribut yang akan diisikan pada class. Unt uk set iap inform asi, urut kan j uga t ipe dat a yang yang t epat unt uk digunakan. Cont ohnya, Anda t idak m ungkin m enginginkan unt uk m enggunakan t ipe dat a int eger unt uk nam a sisw a, at au t ipe dat a st ring pada nilai sisw a.
Berikut ini adalah cont oh inform asi yang akan diisikan pada class St udent Record : name - String address - String age - Int math grade - double english grade - double science grade - double average grade - double Anda dapat m enam bahkan inform asi lain j ika diper lukan.
1 0 .3 .1 I n st a n ce V a r ia ble
Jika kit a t elah m enuliskan seluruh at ribut yang akan diisikan pada class, selanj ut nya kit a akan m enuliskannya pada kode. Jika kit a m enginginkan bahwa at ribut – at ribut t ersebut adalah unik unt uk set iap obj ect ( dalam hal ini unt uk set iap siswa) , m aka kit a harus m endeklarasikannya sebagai inst ance variable : Sebagai cont oh : public class StudentRecord {
private String name; private String address; private int age; private double mathGrade; private double englishGrade; private double scienceGrade; private double average;
//area penulisan kode selanjutnya } dim ana,
pr iva t e disini m enj elaskan bahwa variabel t ersebut hanya dapat diakses oleh class it u
sendiri. Obj ect lain t idak dapat m enggunakan variabel t ersebut secara langsung. Kit a akan m em bahas t ent ang kem am puan akses pada pem bahasan selanj ut nya.
Pe t u n j u k Pe n u lisa n Pr ogr a m :
1. Deklarasikan seluruh inst ance variable pada awal penulisan class
2. Deklarasikan variable per baris
3. Penulisan inst ance variable, t erm asuk j uga variabel lain harus dim ulai dengan huruf kecil
4. Gunakan t ipe dat a yang t epat pada set iap variabel
5. Deklarasikan inst ance variable sebagai privat e supaya hanya m et hod pada class it u sendiri yang dapat m engaksesnya.
1 0 .3 .2 Cla ss V a r ia ble a t a u St a t ic V a r ia ble s
Disam ping inst ance variable, kit a j uga dapat m endeklarasikan class variable at au variabel yang dim iliki class sepenuhnya. Nilai pada variabel ini sam a pada sem ua obj ect di class yang sam a. Anggaplah kit a m enginginkan j um lah dari sisw a yang dim ilik i dar i seluruh kelas, kit a dapat m endeklarasiakan sat u st at ic variable yang akan m enam pung nilai t ersebut . Kit a beri nam a variabel t ersebut dengan nam a st udent Count . Berikut penulisan st at ic variable : public class StudentRecord {
//area deklarasi instance variables
private static int studentCount;
//area penulisan kode selanjutnya }
Kit a gunakan keyword : ’st at ic’ unt uk m endeklarasikan bahw a variabel t ersebut adalah st at ic.
Maka keseluruhan kode yang dibuat t erlihat sebagai berikut :
public class StudentRecord { private String name; private String address; private int age; private double mathGrade; private double englishGrade; private double scienceGrade; private double average; private static int studentCount; //area penulisan kode selanjutnya
}
1 0 .4 . D e k la r a si M e t h ods
Sebelum kit a m em bahas m et hod apa yang akan dipakai pada class, m ari kit a perhat ikan penulisan m et hod secara um um . Dalam pendeklarasian m et hod, kit a t uliskan :
<modifier> <returnType> <name>(<parameter>*) { <statement>* } dim ana, < m odifier> dapat m enggunakan beberapa m odifier yang berbeda < ret urnType> dapat berupa seluruh t ipe dat a, t erm asuk void < nam e> ident ifier at as class < param et er> : : = < t ipe_param et er > < nam a_param et er> [ ,]
1 0 .4 .1 Acce ssor M e t h ods
Unt uk m engim plem ent asikan enkapsulasi, kit a t idak m enginginkan sem barang obj ect dapat m engakses dat a kapan saj a. Unt uk it u, kit a deklarasikan at ribut dari class sebagai
privat e. Nam un, ada kalanya dim ana kit a m enginginkan obj ect lain unt uk dapat m engakses
dat a privat e. Dalam hal ini kit a gunakan accessor m et hods.
Acce ssor M e t h ods digunakan unt uk m em baca nilai v ariabel pada class, baik berupa
inst ance m aupun st at ic. Sebuah accessor m et hod um um nya dim ulai dengan penulisan
ge t < n a m a I n st a n ce Va r ia ble > . Met hod ini j uga m em punyai sebuah ret urn value.Sebagai cont oh, kit a ingin m enggunakan accessor m et hod unt uk dapat m em baca nam a, alam at , nilai bahasa I nggris, Mat em at ika, dan ilm u past i dari sisw a. Mari kit a perhat ikan salah sat u cont oh im plem ent asi accessor m et hod. public class StudentRecord { private String name;
: :
public String getName(){ return name; }
} dim ana, public - Menj elaskan bahwa m et hod t ersebut dapat diakses obj ect luar kelas St ring - Tipe dat a ret urn value dari m et hod t ersebut get Nam e - Nam a dari m et hod ( ) - Menj elaskan bahwa m et hod t idak m em iliki param et er apapun Pernyat aan berikut , return name; dalam program kit a m enandakan akan ada pengem balian nilai dari inst ance variable nam e pada pem anggilan m et hod. Perhat ikan bahwa ret urn t ype dari m et hod harus sam a dengan t ipe dat a t erhadap dat a pada pernyat aan ret urn. Anda akan m endapat kan pesan kesalahan sebagai berikut bila t ipe dat a yang digunakan t idak sam a :
StudentRecord.java:14: incompatible types found : int required: java.lang.String return age;
^ 1 error Cont oh lain dari penggunaan accessor m et hod adalah ge t Ave r a ge , public class StudentRecord { private String name;
: :
public double getAverage(){ double result = 0; result = ( mathGrade+englishGrade+scienceGrade )/3; return result; }
}
Met hod ge t Ave r a ge ( ) m enghit ung rat a – rat a dari 3 nilai siswa dan m enghasilkan nilai
ret urn value dengan nam a result .1 0 .4 .2 M u t a t or M e t h ods
Bagaim ana j ika kit a m enghendaki obj ect lain unt uk m engubah dat a? Yang dapat kit a lakukan adalah m em buat m et hod yang dapat m em ber i at au m engubah nilai var iable dalam
class, baik it u berupa inst ance m aupun st at ic. Met hod sem acam ini disebut dengan m ut at or
m et hods. Sebuah m ut at or m et hod um um nya t ert ulis se t < n a m a I n st a n ce V a r ia be l> .Mari kit a perhat ikan salah sat u dari im plem ent asi m ut at or m et hod : public class StudentRecord { private String name;
: :
public void setName( String temp ){ name = temp; }
} dim ana, public - Menj elaskan bahwa m et hod ini dapat dipanggil obj ect luar kelas void - Met hod ini t idak m enghasilkan ret urn value set Nam e - Nam a dari m et hod ( St ring t em p) - Param et er yang akan digunakan pada m et hod
Pernyat aan berikut : name = temp; m engident ifikasi nilai dari t em p sam a dengan nam e dan m engubah dat a pada inst ance variable nam e.
Perlu diingat bahwa m ut at or m et hods t idak m enghasilkan r et urn value. Nam un berisi beberapa argum en dari program yang akan digunakan oleh m et hod.
1 0 .4 .3 M u lt iple Re t u r n St a t e m e n t s
Anda dapat m em punyai banyak ret urn values pada sebuah m et hod selam a m ereka t idak pada blok program yang sam a. Anda j uga dapat m enggunakan konst ant a disam ping variabel sebagai ret urn value. Sebagai cont oh, perhat ikan m et hod berikut ini : public String getNumberInWords( int num ){
String defaultNum = "zero"; if( num == 1 ){
return "one"; //mengembalikan sebuah konstanta
} else if( num == 2){
return "two"; //mengembalikan sebuah konstanta
} // mengembalikan sebuah variabel return defaultNum;
}
1 0 .4 .4 St a t ic M e t h ods Kit a m enggunakan st at ic m et hod unt uk m engakses st at ic variable st udent Count .
public class StudentRecord { private static int studentCount;
public static int getStudentCount(){ return studentCount; }
} dim ana, public - Menj elaskan bahwa m et hod ini dapat diakses obj ect luar kelas st at ic - Met hod ini adalah st at ic dan pem anggilannya m enggunakan
[ n a m a Ke la s] .[ na m a M e t h od] . Sebagai cont oh : st u de n t Re cor d.ge t St u de n t Cou nt
I nt - Tipe ret urn dari m et hod. Mengindikasikan m et hod t ersebut harus m em punyai ret urn value berupa int eger get St udent Count - Nam a dari m et hod public - Menj elaskan bahwa m et hod ini dapat diakses obj ect luar kelas ( ) - Met hod ini t idak m em iliki param et er apapun Pada deklarasi di at as, m et hod get St udent Count ( ) akan selalu m enghasilkan ret urn value 0 j ika k it a t idak m engubah apapun pada kode program unt uk m engat ur nilainya. Kit a akan m em bahas pengubahan nilai dari st udent Count pada pem bahasan const ruct or.
Pe t u n j u k Pe n u lisa n Pr ogr a m :
1. Nam a m et hod harus dim ulai dengan huruf kecil
2. Nam a m et hod harus berupa kat a kerj a
3. Gunakan dokum ent asi sebelum m endeklarasikan sebuah m et hod. Anda dapat Menggunakan JavaDoc.
1 0 .4 .5 Con t oh Kode Pr ogr a m da r i cla ss St u de n t Re cor d
Berikut ini adalah kode unt uk class St udent Record :
public class StudentRecord { private String name; private String address; private int age; private double mathGrade; private double englishGrade; private double scienceGrade; private double average; private static int studentCount; /**
- Menghasilkan nama dari Siswa */ public String getName(){ return name;
} /**
- Mengubah nama siswa
- / public void setName( String temp ){ name = temp;
} // area penulisan kode lain /**
- Menghitung rata – rata nilai Matematik, Bahasa Inggris, * * Ilmu Pasti */ public double getAverage(){ double result = 0; result = ( mathGrade+englishGrade+scienceGrade )/3; return result;
} /**
- Menghasilkan jumlah instance StudentRecord
- / public static int getStudentCount(){ return studentCount;
} }
Berikut ini cont oh kode dari class yang m engim plem ent asikan class St udent Record :
public class StudentRecordExample { public static void main( String[] args ){
//membuat 3 object StudentRecord StudentRecord annaRecord = new StudentRecord(); StudentRecord beahRecord = new StudentRecord(); StudentRecord crisRecord = new StudentRecord(); //Memberi nama siswa annaRecord.setName("Anna"); beahRecord.setName("Beah"); crisRecord.setName("Cris"); //Menampilkan nama siswa “Anna” System.out.println( annaRecord.getName() ); //Menampilkan jumlah siswa System.out.println("Count="+StudentRecord.getStudentCount() );
} }
Out put dari program adalah sebagai berikut :
Anna Student Count = 0
1 0 .5 . Re fe r e n si t h is
Referensi t his digunakan unt uk m engakses inst ance variable yang dibiaskan oleh param et er. Unt uk pem aham an lebih lanj ut , m ari kit a perhat ikan cont oh pada m et hod set Age. Asum sikan kit a m em punyai kode deklarasi berikut pada m et hod set Age. public void setAge( int age ){ age = age; //SALAH!!! }
Nam a param et er pada deklarasi ini adalah age, yang m em iliki penam aan yang sam a dengan inst ance variable age. Param et er age adalah deklarasi t erdekat dari m et hod, sehingga nilai dari param et er t ersebut akan digunakan. Maka pada pernyat aan : age = age; kit a t elah m engident ifikasi nilai dari param et er age kepada param et er it u sendiri. Hal ini sangat t idak kit a hendaki pada kode program kit a. Unt uk m enghindari kesalahan sem acam ini, kit a gunakan m et ode referensi t h is. Unt uk m enggunakan t ipe referensi ini, kit a t uliskan : this.<namaInstanceVariable>
Sebagai cont oh, kit a dapat m enulis ulang kode hingga t am pak sebagai berikut : public void setAge( int age ){
this.age = age;
}
Met hod ini akan m ereferensikan nilai dar i param et er age kepada inst ance variable dari
obj ect St udent Record.
CATATAN : An da h a n y a da pa t m e n gguna k a n r e fe r e n si t ipe in i t e r ha da p in st a n ce
va r ia ble da n BUKAN st a t ic a t a u pu n cla ss v a r ia be l.1 0 .6 . Ove r loa din g M e t h ods
Dalam class yang kit a buat , kadangkala kit a m enginginkan unt uk m em buat m et hod dengan nam a yang sam a nam un m em punyai fungsi yang berbeda m enurut param et er yang digunakan. Kem am puan ini dim ungkinkan dalam pem rogram an Java, dan dikenal sebagai overloading m et hod.
Overloading m et hod m engij inkan sebuah m et hod dengan nam a yang sam a nam un m em ilik i
param et er yang berbeda sehingga m em punyai im plem ent asi dan ret urn value yang berbeda pula. Daripada m em berikan nam a yang berbeda pada set iap pem buat an m et hod,
overloading m et hod dapat digunakan pada operasi y ang sam a nam un berbeda dalam
im plem ent asinya.Sebagai cont oh, pada class St udent Record kit a m enginginkan sebuah m et hod yang akan m enam pilkan inform asi t ent ang sisw a. Nam un kit a j uga m enginginkan operasi penam pilan dat a t ersebut m enghasilkan out put yang berbeda m enurut param et er yang digunakan. Jika pada saat kit a m em ber ikan sebuah param et er berupa st ring, hasil yang dit am pilkan adalah nam a, alam at dan um ur dari siswa, sedang pada saat kit a m em berikan 3 nilai dengan t ipe double, kit a m enginginkan m et hod t ersebut unt uk m enam pilkan nam a dan nilai dari sisw a.
Unt uk m endapat kan hasil yang sesuai, kit a gunakan overloading m et hod di dalam deklarasi class St udent Record
public void print( String temp ){ System.out.println("Name:" + name); System.out.println("Address:" + address); System.out.println("Age:" + age);
} public void print(double eGrade, double mGrade, double sGrade) System.out.println("Name:" + name); System.out.println("Math Grade:" + mGrade); System.out.println("English Grade:" + eGrade); System.out.println("Science Grade:" + sGrade);
}
Jika kit a panggil pada m et hod ut am a ( m ain) :
public static void main( String[] args ) {
StudentRecord annaRecord = new StudentRecord(); annaRecord.setName("Anna"); annaRecord.setAddress("Philippines"); annaRecord.setAge(15); annaRecord.setMathGrade(80); annaRecord.setEnglishGrade(95.5); annaRecord.setScienceGrade(100); //overloaded methods annaRecord.print( annaRecord.getName() ); annaRecord.print( annaRecord.getEnglishGrade(), annaRecord.getMathGrade(), annaRecord.getScienceGrade());
} Kit a akan m endapat kan out put pada panggilan pert am a sebagai berik ut : Name:Anna Address:Philippines Age:15
Kem udian akan dihasilkan out put sebagai berikut pada panggilan kedua : Name:Anna Math Grade:80.0 English Grade:95.5 Science Grade:100.0
Jangan dilupakan bahwa overloaded m et hod m em iliki propert y sebagai berikut :
1. Nam a yang sam a
2. Param et er yang berbeda
3. Nilai kem balian ( ret urn) bisa sam a at aupun berbeda
1 0 .7 . D e k la r a si Con st r u ct or
Telah t ersirat pada pem bahasan sebelum nya, Const ruct or sangat lah pent ing pada pem bent ukan sebuah obj ect . Const ruct or adalah m et hod dim ana seluruh inisialisasi obj ect dit em pat kan. Berikut ini adalah propert y dari Const ruct or :
1. Const ruct or m em ilik i nam a yang sam a dengan class
2. Sebuah Const ruct or m irip dengan m et hod pada um um nya, nam un hanya inform asi – inform asi berikut yang dapat dit em pat kan pada header sebuah const ruct or, scope at au ident ifikasi pengaksesan ( m isal: public) , nam a dari konst ukt or dan param et er.
3. Const ruct or t idak m em ilik i ret urn value
4. Const ruct or t idak dapat dipanggil secara langsung, nam un harus dipanggil dengan m enggunakan operat or n e w pada pem bent ukan sebuah class.
Unt uk m endeklarasikan const ruct or, kit a t ulis
<modifier> <className> (<parameter>*) { <statement>*
}
1 0 .7 .1 D e fa u lt Con st r u ct or
Set iap kelas m em iliki default const ruct or. Sebuah default const ruct or adalah const ruct or yang t idak m em iliki param et er apapun. Jika sebuah class t idak m em ilik i const ruct or apapun, m aka sebuah default const ruct or akan t erbuat secara im plisit : Sebagai cont oh, pada class St udent Record, bent uk default const ruct or akan t erlihat sepert i dibawah ini : public StudentRecord() {
//area penulisan kode }
1 0 .7 .2 Ove r loa din g Con st r u ct or
Sepert i t elah kit a bahas sebelum nya, sebuah const ruct or j uga dapat dibent uk m enj adi
ove r loa de d. Dapat dilihat pada 4 cont oh sebagai berikut :
public StudentRecord(){ //area inisialisasi kode;
} public StudentRecord(String temp){ this.name = temp;
} public StudentRecord(String name, String address){ this.name = name; this.address = address;
} public StudentRecord(double mGrade, double eGrade, double sGrade){ mathGrade = mGrade; englishGrade = eGrade; scienceGrade = sGrade;
}
1 0 .7 .3 M e n ggu n a k a n Con st r u ct or
Unt uk m enggunakan const ruct or, kit a gunakan kode – kode sebagai berikut :
public static void main( String[] args ) {
//membuat 3 objek StudentRecord annaRecord=new StudentRecord("Anna"); StudentRecord beahRecord=new StudentRecord("Beah","Philippines"); StudentRecord crisRecord=new StudentRecord(80,90,100); //area penulisan kode selanjtunya
} Sebelum kit a lanj ut kan, m ari kit a perhat ikan kem bali dek larasi st at ic variable st udent Count yang t elah dibuat sebelum nya. Tuj uan deklarasi st udent Count adalah unt uk m enghit ung j um lah obj ect yang dibent uk pada class St udent Record. Jadi, apa yang akan kit a lakukan selanj ut nya adalah m enam bahkan nilai dari st udent Count set iap kali set iap pem bent ukan
obj ect pada class St udent Record. Lokasi yang t epat unt uk m em odifikasi dan m enam bahkan
nilai st udent Count t erlet ak pada const ruct or- nya, karena selalu dipanggil set iap kali obj ek t erbent uk. Sebagai cont oh : public StudentRecord(){
//letak kode inisialisasi
studentCount++; //menambah student
} public StudentRecord(String temp){ this.name = temp;
studentCount++; //menambah student
} public StudentRecord(String name, String address){ this.name = name; this.address = address;
studentCount++; //menambah student
} public StudentRecord(double mGrade, double eGrade, double sGrade){ mathGrade = mGrade; englishGrade = eGrade; scienceGrade = sGrade;
studentCount++; //menambah student
}
1 0 .7 .4 Pe m a n ggila n Con st r u ct or D e n ga n t h is( )
Pem anggilan const ruct or dapat dilakukan secara berangkai, dalam art i Anda dapat m em anggil const ruct or di dalam const ruct or lain. Pem anggilan dapat dilakukan dengan referensi t h is( ) . Perhat ikan cont oh kode sebagai berikut :
1: public StudentRecord(){ 2: this("some string"); 3: 4: } 5: 6: public StudentRecord(String temp){ 7: this.name = temp; 8: } 9: 10: public static void main( String[] args ) 11: { 12:
14: } Dari cont oh kode diat as, pada saat baris ke 13 dipanggil akan m em anggil const ruct or dasar pada baris pert am a. Pada saat baris kedua dij alankan, baris t ersebut akan m enj alankan const ruct or yang m em iliki param et er St ring pada baris ke- 6. Beberapa hal yang pat ut diperhat ikan pada penggunaan t h is( ) :
2. Hanya dapat digunakan pada sat u definisi const ruct or. Kem udian m et ode ini dapat diikut i dengan kode – kode berikut nya yang relevan
1 0 .8 . Pa ck a ge s
Packages dalam JAVA berart i pengelom pokan beberapa class dan int erface dalam sat u unit .
Fit ur ini m enyediakan m ekanism e unt uk m engat ur class dan int erface dalam j um lah banyak dan m enghindari konflik pada penam aan.
1 0 .8 .1 M e n gim por t Pa ck a ge s
Supaya dapat m eggunakan class yang berada diluar package yang sedang dikerj akan, Anda harus m engim port package dim ana class t ersebut berada. Pada dasarnya, seluruh program JAVA m engim port package j ava.lang.* , sehingga Anda dapat m enggunakan class sepert i St ring dan I nt eger dalam program m eskipun belum m engim port package sam a sekali.
Penulisan im port package dapat dilakukan sepert i dibawah ini : import <namaPaket>; Sebagai cont oh, bila Anda ingin m enggunakan class Color dalam package awt , Anda harus m enuliskan im port package sebagai berikut : import java.awt.Color; import java.awt.*;
Baris pert am a m enyat akan unt uk m engim port class Color secara spesifik pada package, sedangkan baris kedua m enyat akan m engim port seluruh class yang t erkandung dalam
package j ava.awt .
Cara lain dalam m engim port package adalah dengan m enuliskan referensi package secara eksplisit . Hal ini dilak ukan dengan m enggunakan nam a package unt uk m endeklarasikan
obj ect sebuah class :
java.awt.Color color;
1 0 .8 .2 M e m bu a t Pa ck a ge
Unt uk m em buat package, dapat dilakukan dengan m enuliskan : package <packageName>; Anggaplah kit a ingin m em buat package dim ana class St udent Record akan dit em pat kan bersam a dengan class – class yang lain dengan nam a package schoolClasses.
Langkah pert am a yang harus dilakukan adalah m em buat folder dengan nam a schoolClasses. Salin seluruh class yang ingin dilet akkan pada package dalam folder ini. Kem udian t am bahkan kode deklarasi package pada awal file. Sebagai cont oh :
package schoolClasses;
public class StudentRecord { private String name; private String address; private int age;
}
Package j uga dapat dibuat secara bersarang. Dalam hal ini Java I nt erpret er m enghendaki
st rukt ur direkt ori yang m engandung class eksekusi unt uk disesuaikan dengan st rukt ur package.
1 0 .8 .3 Pe n ga t u r a n CLASSPATH
Diasum sikan package schoolClasses t erdapat pada direkt ori C: \ . Langkah selanj ut nya adalah m engat ur classpat h unt uk m enunj uk direkt ori t ersebut sehingga pada saat akan dij alankan, JVM dapat m enget ahui dim ana class t ersebut t ersim pan. Sebelum m em bahas cara m engat ur classpat h, perhat ikan cont oh dibawah yang m enAndakan kej adian bila kit a t idak m engat ur classpat h.
Asum sikan kit a m engkom pilasi dan m enj alankan class St udent Record :
C:\schoolClasses>javac StudentRecord.java C:\schoolClasses>java StudentRecord Exception in thread "main" java.lang.NoClassDefFoundError: StudentRecord (wrong name: schoolClasses/StudentRecord) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Kit a akan m endapat kan pesan kesalahan berupa N oCla ssD e fFou n dEr r or yang berart i JAVA t idak m enget ahui dim ana posisi class. Hal t ersebut disebabkan oleh karena class
St udent Record berada pada package dengan nam a st udent Classes. Jika kit a ingin m enj alankan kelas t ersebut , kit a harus m em beri inform asi pada JAVA bahwa nam a lengkap dari class t ersebut adalah sch oolCla sse s.St ude n t Re cor d. Kit a j uga harus m enginform asikan kepada JVM dim ana posisi pencarian package, yang dalam hal ini berada pada direkt ori C: \ . Unt uk m elakukan langkah – langkah t ersebut , kit a harus m engat ur classpat h.
Pengat uran classpat h pada Windows dilakukan pada com m and prom pt : C:\schoolClasses> set classpath=C:\ dim ana C: \ adalah direkt ori dim ana kit a m enem pat kan package. Set elah m engat ur classpat h, kit a dapat m enj alankan program di m ana saj a dengan m enget ikkan :
C:\schoolClasses> java schoolClasses.StudentRecord Pada UNI X, asum sikan bahw a kit a m em ilik i class - class yang t erdapat dalam direkt ori / usr/ local/ m yClasses, ket ikkan : export classpath=/usr/local/myClasses
Perhat ikan bahwa Anda dapat m engat ur classpat h dim ana saj a. Anda j uga dapat m engat ur lebih dari sat u classpat h, kit a hanya perlu m em isahkannya dengan m enggunakan ; ( Window s) , dan : ( UNI X) . Sebagai cont oh : set classpath=C:\myClasses;D:\;E:\MyPrograms\Java dan unt uk sist em UNI X : export classpath=/usr/local/java:/usr/myClasses
1 0 .9 . Acce ss M odifie r s
Pada saat m em buat , m engat ur propert ies dan class m et hods, kit a ingin unt uk m engim plem ent asikan beberapa m acam larangan unt uk m engakses dat a. Sebagai cont oh, j ika Anda ingin beberapa at ribut hanya dapat diubah hanya dengan m et hod t ert ent u, t ent u Anda ingin m enyem bunyikannya dari obj ect lain pada class. Di JAVA, im plem ent asi t ersebut disebut dengan a cce ss m odifie r s.
Terdapat 4 m acam access m odifiers di JAVA, yait u : public, privat e, prot ect ed dan default . 3 t ipe akses pert am a t ert ulis secara ekplisit pada kode unt uk m engindikasikan t ipe akses, sedangkan yang keem pat yang m erupakan t ipe default , t idak diperlukan penulisan keyword at as t ipe.
1 0 .9 .1 Ak se s D e fa u lt ( Pa ck a ge Acce ssibilit y)
Tipe ini m em persyarat kan bahwa hanya class dalam package yang sam a yang m em iliki hak akses t erhadap variabel dan m et hods dalam class. Tidak t erdapat keyword pada t ipe ini.
Sebagai cont oh :
public class StudentRecord {
//akses dasar terhadap variabel int name; //akses dasar terhadap metode String getName(){ return name; }
} Pada cont oh diat as, variabel nam a dan m et hod get Nam e( ) dapat diakses dari obj ect lain selam a obj ect t ersebut berada pada package yang sam a dengan let ak dari file St udent Record.
1 0 .9 .2 Ak se s Pu blic Tipe ini m engij inkan seluruh class m em ber unt uk diakses baik dari dalam dan luar class.
Obj ect apapun yang m em iliki int eraksi pada class m em ilik i akses penuh t erhadap m em ber
dari t ipe ini. Sebagai cont oh : public class StudentRecord {
//akses dasar terhadap variabel public int name; //akses dasar terhadap metode public String getName(){ return name;
} } Dalam cont oh ini, variabel nam e dan m et hod get Nam e( ) dapat diakses dari obj ect lain.
1 0 .9 .3 Ak se s Pr ot e ct e d
Tipe ini hanya m engij inkan class m em ber unt uk diakses oleh m et hod dalam class t ersebut dan elem en – elem en subclass. Sebagai cont oh :
public class StudentRecord {
//akses pada variabel protected int name; //akses pada metode protected String getName(){ return name;
}
}
Pada cont oh diat as, variabel nam e dan m et hod get Nam e( ) hanya dapat diakses oleh
m et hod int ernal class dan subclass dari class St udent Record. Definisi subclass akan dibahas
pada bab selanj ut nya.1 0 .9 .4 Ak se s Pr iva t e
Tipe ini m engij inkan pengaksesan class hanya dapat diakses oleh class dim ana t ipe ini dibuat . Sebagai cont oh :
public class StudentRecord {
//akses dasar terhadap variabel private int name; //akses dasar terhadap metode private String getName(){ return name;
} }
Pada cont oh diat as, variabel nam e dan m et hod get Nam e( ) hanya dapat diakses oleh m et hod int ernal class t ersebut .
Pe t u n j u k Pe n u lisa n Pr ogr a m :
I nst ance variable dari class secara default akan bert ipe privat e sehingga class t ersebut
hanya akan m enyediakan accessor dan m ut at or m et hods t erhadap variabel ini.1 0 .1 0 . La t ih a n 1 0 .1 0 .1 En t r y Bu k u Ala m a t Tugas Anda adalah m em buat sebuah class yang m em uat dat a- dat a pada buku alam at .
Tabel berik ut m endefinisikan inform asi yang dim iliki oleh buku alam at .
At t r ibu t D e sk r ipsi
Nam a Nam a Lengkap perseorangan Alam at Alam at Lengkap Nom or Telepon Nom or t elepon personal Alam at E- Mail Alam at E- Mail personal
Tabel 1: At ribut dan Deskr ipsi At ribut
Buat im plem ent asi dari m et hod sebagai berik ut :
1. Menyediakan accessor dan m ut at or m et hod t erhadap seluruh at ribut
2. Const ruct or
1 0 .1 0 .2 Bu k u Ala m a t
Buat sebuah class buku alam at yang dapat m enam pung 100 dat a. Gunakan class yang t elah dibuat pada nom or pert am a. Anda harus m engim plem ent asikan m et hod berikut pada buku alam at :
1. Mem asukkan dat a
2. Menghapus dat a
3. Menam pilkan seluruh dat a
4. Updat e dat a