JENI Intro1 Bab10 Membuat class sendiri
Pengenalan Pem rogram an 1 1
BAB 1 0
M e m bua t
Cla ss
Se ndir i
Tu j u a n
Set elah kit a m em pelaj ari penggunaan class dari Java Class Library, kit a akan m em pelaj ari 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 erjadi lebih dari sat u kejadian dim ana elem en tersebut diim plem entasikan
< descript ion> - Menandakan bahwa Anda harus m em berikan nilai past i pada bagian ini
[ ] - I ndikasi bagian opt ional
Pada akhir pem bahasan, diharapkan pem baca dapat : Mem buat class m ereka sendiri
Mendeklarasikan at ribut dan m et hod pada class
Menggunakan referensi t his unt uk m engakses inst ance dat a Mem buat dan m em anggil overloaded m et hod
Mengim port dan m em buat package
(2)
Pengenalan Pem rogram an 1 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 yang 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 nj u k Pe n u lisan Progr 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 class)
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 ujuan dari pem buat an class, m aka dapat dilakukan pem berian nam a yang sesuai. Nam a yang t epat pada class ini adalah StudentRecord.
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
(3)
Pengenalan Pem rogram an 1 3 St udent Record - I dent ifier yang m enj elaskan class
Pe t u nj u k Pe n u lisan Progr 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 KAPI TAL
3. Nam a file dari class harus sam a dengan nam a public class
D e k la ra si At ribut
Dalam pendeklarasian at ribut , kit a t uliskan :
<modifier> <type> <name> [= <default_value>];
Langkah selanjut 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 siswa, at au t ipe dat a st ring pada nilai siswa.
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
(4)
Pengenalan Pem rogram an 1 4
1 0 .3 .1
I n st a n ce Va 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 nj u k Pe n u lisan Progr 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 juga 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.
(5)
Pengenalan Pem rogram an 1 5
1 0 .3 .2
Cla ss Va r ia ble a t a u St a t ic Va 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 jum lah dari siswa yang dim iliki dari seluruh class, kit a dapat m endeklarasikan 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 studentCount.
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 bahwa 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 }
(6)
Pengenalan Pem rogram an 1 6
1 0 .4 . D e k la ra si
M e t hods
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 et h ods digunakan unt uk m em baca nilai variabel 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 nst a nce Var 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 siswa.
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; }
}
(7)
Pengenalan Pem rogram an 1 7 dim ana,
public - Menj elaskan bahwa m et hod t ersebut dapat diakses dari obj ect luar class St ring - Tipe dat a ret urn value dari m et hod t ersebut bert ipe St ring
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 nam a inst ance variable ke pem anggilan m et hod. Perhat ikan bahwa ret urn t ype dari m et hod harus sam a dengan t ipe dat a sepert i 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 tAve ra ge ( ) m enghit ung rat a – rat a dari 3 nilai siswa dan m enghasilkan nilai ret urn value dengan nam a result .
(8)
Pengenalan Pem rogram an 1 8
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 beri at au m engubah nilai variable 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 nce Va 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 class 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 ret urn value. Nam un berisi beberapa argum en dari program yang akan digunakan oleh m et hod.
(9)
Pengenalan Pem rogram an 1 9
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 juga 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 dari obj ect luar class st at ic - Met hod ini adalah st at ic dan pem anggilannya m enggunakan
[ n a m a class] .[ n a m aM e t hod]. Sebagai cont oh :
st u de n tRe cor d.ge tSt u de n t Cou n t
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
(10)
Pengenalan Pem rogram an 1 10 public - Menj elaskan bahwa m et hod ini dapat diakses dari obj ect luar class get St udent Count - Nam a dari m et hod
( ) - 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 kit 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 nj u k Pe n u lisan Progr 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.
(11)
Pengenalan Pem rogram an 1 11
1 0 .4 .5
Con t oh Kode Pr ogr a m da r i cla ss St ude 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;
} }
(12)
Pengenalan Pem rogram an 1 12 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 ce
t h is
Reference 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. Dim isalkan 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 :
(13)
Pengenalan Pem rogram an 1 13
kit a t elah m enent ukan nilai dari param et er age kepada param et er it u sendiri. Hal ini sangat t idak kit a kehendaki pada kode program kit a. Unt uk m enghindari kesalahan sem acam ini, kit a gunakan m et ode referensi th 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 dari param et er age kepada inst ance variable dari obj ect St udent Record.
CATATAN : An da h a n ya da pa t m en ggu na k a n r efe re n si t h is t e rh a da p in st an ce va r ia ble da n BUKAN st a t ic a ta u pu n cla ss var 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 iliki 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 yang 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 siswa. 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 berikan 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 siswa. Unt uk m endapat kan hasil yang sesuai, kit a gunakan overloading m et hod di dalam deklarasi class St udent Record.
(14)
Pengenalan Pem rogram an 1 14
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 berikut :
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
(15)
Pengenalan Pem rogram an 1 15 Jangan lupakan 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 ra si Const ru 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 iliki 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 iliki ret urn value
4. Const ruct or t idak dapat dipanggil secara langsung, nam un harus dipanggil dengan m enggunakan operat or ne w pada pem bent ukan sebuah class.
Unt uk m endeklarasikan const ruct or, kit a t ulis,
<modifier> <className> (<parameter>*) { <statement>*
}
D e fa u lt Con st r u ct or
Set iap class 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 iliki const ruct or apapun, m aka sebuah default const ruct or akan dibent uk 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
(16)
Pengenalan Pem rogram an 1 16
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; }
M e n ggu n a k a n Con st ru 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 deklarasi variabel st at ic 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
(17)
Pengenalan Pem rogram an 1 17 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
}
Pe m a n ggila n Con st r u ct or D e n ga n t his( )
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 th 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:
13: StudentRecord annaRecord = new StudentRecord(); 14: }
(18)
Pengenalan Pem rogram an 1 18
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 th is( ) : 1. Harus dit uliskan pada baris pert am a pada sebuah const ruct or
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.
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 dilakukan dengan m enggunakan nam a package unt uk m endeklarasikan obj ect sebuah class :
(19)
Pengenalan Pem rogram an 1 19
java.awt.Color color;
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.
Pe n ga t u r a n CLASSPATH
Diasum sikan package schoolClasses t erdapat pada direkt ori C: \ . Langkah selanjut 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)
(20)
Pengenalan Pem rogram an 1 20
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 ror 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 class 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.Stu de n tRe 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 bahwa kit a m em iliki 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 ;
( Windows) , dan : (UNI X) . Sebagai cont oh :
set classpath=C:\myClasses;D:\;E:\MyPrograms\Java
dan unt uk sist em UNI X :
(21)
Pengenalan Pem rogram an 1 21
1 0 .9 .
Acce ss M odifie rs
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 ensyarat 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.
(22)
Pengenalan Pem rogram an 1 22
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 iliki 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 selanjut nya.
(23)
Pengenalan Pem rogram an 1 23
1 0 .9 .4
Ak se s Pr iva t e
Tipe ini m engijinkan 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 nj u k Pe n u lisan Progr 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.
(24)
Pengenalan Pem rogram an 1 24
1 0 .1 0 . La t iha n
En t r y Buk 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 berikut 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 Deskripsi At ribut
Buat im plem ent asi dari m et hod sebagai berikut :
1. Menyediakan accessor dan m ut at or m et hod t erhadap seluruh at ribut 2. Const ruct or
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
(1)
Pengenalan Pem rogram an 1 19 java.awt.Color color;
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.
Pe n ga t u r a n CLASSPATH
Diasum sikan package schoolClasses t erdapat pada direkt ori C: \ . Langkah selanjut 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)
(2)
Pengenalan Pem rogram an 1 20
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 ror 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 class 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.Stu de n tRe 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 bahwa kit a m em iliki 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 ;
( Windows) , dan : (UNI X) . Sebagai cont oh :
set classpath=C:\myClasses;D:\;E:\MyPrograms\Java
dan unt uk sist em UNI X :
(3)
Pengenalan Pem rogram an 1 21
1 0 .9 .
Acce ss M odifie rs
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 ensyarat 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.
(4)
Pengenalan Pem rogram an 1 22
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 iliki 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 selanjut nya.
(5)
Pengenalan Pem rogram an 1 23
1 0 .9 .4
Ak se s Pr iva t e
Tipe ini m engijinkan 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 nj u k Pe n u lisan Progr 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.
(6)
Pengenalan Pem rogram an 1 24
En t r y Buk 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 berikut 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 Deskripsi At ribut
Buat im plem ent asi dari m et hod sebagai berikut :
1. Menyediakan accessor dan m ut at or m et hod t erhadap seluruh at ribut 2. Const ruct or
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