JENI Intro1 Bab10 Membuat class sendiri

(1)

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 classclass 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 classclass 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