Sabtu, 30 Mei 2009

Kuliah PBO ( Pemrograman Berorientasi Obyek )

Dibawah ini saya load makalah saya tentang PBO yang menggunakan bahasa Java. makalh ini dikumpulkan sebagai tugas awal rangkuman perkuliahan PBO .

BAB I

KONSEP PEMROGRAMAN BERBASIS OBJEK

Tantangan besar mempelajari bahasa Java adalah memahami dahulu konsep pemrograman berorientasi objek. Ada sisi menarik, yaitu Anda dapat lebih mudah belajar pemrograman berorientasi objek dengan mempelajari Java. Mengapa? Karena omput semua yang ads di dalam java adalah objek. Mau tidak mau, Anda harus sering menggunakan objek jika membuat program dalam bahasa Java.

Dalam bahasa awam, pemrograman omputerg berarti pemrograman yang berorientasi kerja, misalnya mengolah data, mencetak dokumen. Sedangkan pemrograman objek berarti berorientasi benda, misalnya mahasiswa, dosen, karyawan. Selanjutnya, kerja dilakukan oleh objek­ objek tersebut, misalnya dosen mengajar, mahasiswa ujian, karyawan bolos kerja.

Dalam pemrograman omputerg, yang menjadi orientasi adalah ba­gaimana melakukan kerja, seperti mengubah data masukan (input) supaya mendapatkan keluaran (output) yang kita inginkan. Dengan pola ompu ini, kita akan memecah program menjadi beberapa bagian berupa perintah-perintah yang lebih kecil dan sederhana.

Sedangkan dalam OOP, pola ompu yang digunakan adalah berbasis objek. Dengan pola ompu ini, kita harus memodelkan omput menjadi objek-objek. Kemampuan kita menganalisis masalah dan memetakan objek berdasarkan kenyataan di lapangan sangatlah penting.

Pemrograman berorientasi objek diciptakan untuk mempermudah pengembangan program dengan cara mengikuti model yang telah ada dalam kehidupan nyata. Dalam paradigma ini, sesuai dengan model kehidupan nyata, segala bagian (omput) dari suatu permasalahan adalah objek. Objek-objek ini kemudian juga dapat berupa gabungan dari beberapa objek yang lebih kecil. Sebagai contoh, tengoklah sebuah mobil. Mobil adalah sebuah objek dalam kehidupan nyata. Namun mobil sendiri terbentuk dari beberapa objek yang lebih kecil seperti roda ban, mesin, jok, dll. Mobil sebagai objek yang merupakan gabungan dari objek yang lebih kecil dibentuk dengan membentuk hubungan antara objek-objek penyusunnya. Begitu juga dengan sebuah program. Objek besar dapat dibentuk dengan menggabungkan beberapa objek-objek dalam bahasa pemrograman. Objek-objek tersebut berkomunikasi dengan saling mengirim pesan kepada objek lain.

Konsep-konsep pemrograman berorientasi objek dalam Java secara umum sama dengan yang digunakan oleh bahasa-bahasa lain. Jadi kebanyakan konsep yang kita bahas juga terdapat dalam bahasa selain Java. Namun, terkadang terdapat perbedaan-perbedaan kecil antara penerapan konsep-konsep tersebut dalam masing-masing bahasa. Perbedaan-perbedaan ini juga akan dijelaskan seiring penjelasan masing-masing konsep.

Objek

Dalam penjelasan mengenai analogi, kita sudah menyinggung mengenai objek. Sekarang kita akan mengupas lebih dalam tentang objek sebagai konsep kunci dari pemrograman berorientasi objek.

Baik dalam dunia nyata atau dalam sebuah program, sebuah objek memiliki dua karakteristik, yaitu state dan behaviour. State adalah keadaan dari sebuah objek, seperti mobil memiliki state warna, model, tahun pembuatan, kondisi, dll. Sedang behaviour adalah kelakuan dari objek tersebut, seperti mobil dapat melaju, membelok, membunyikan klakson, dll. Objek menyimpan statenya dalam satu atau lebih variabel, dan mengimplementasikan behaviournya dengan metode. Dengan penjelasan di atas, dapat disimpulkan bahwa objek adalah bagian software yang dibentuk dengan variabel-variabel dan metode-metode yang berhubungan dengan variabel tersebut.

Dengan karakteristik tersebut, kita dapat memodelkan berbagai objek dalam kehidupan nyata ke dalam objek-objek dalam sebuah program. Lebih lanjut kita dapat memodelkan objek-objek abstrak ke dalam sebuah program. Contoh umum untuk konsep abstrak seperti ini adalah objek Event, yaitu objek untuk mewakili peristiwa klik atau tombol ditekan.

Sebuah objek yang dibentuk dari sebuah kelas biasa disebut instans dalam omputergy OOP. Artinya objek tersebut adalah wujud nyata dari sebuah kelas. Variabel dan metode dari instans ini disebut variabel instans dan metode instans. Setiap instans menyimpan variabelnya sendiri-sendiri, jadi nilai variabel untuk tiap instans bisa berbeda.

Message (Pesan)

Objek-objek yang bekerja sama membentuk suatu omput harus saling berkomunikasi untuk menjalankan omput tersebut. Dalam sebuah program, objek-objek berkomunikasi satu sama lain dengan mengirimkan pesan. Sebagai contoh, jika sebuah objek ingin memanggil metode dari objek lain, maka objek ini akan mengirimkan sebuah pesan yang meminta objek tujuan untuk menjalankan metode yang dikehendaki. Pesan ini akan berisi informasi-informasi yang dibutuhkan objek tujuan untuk dapat menunaikan permintaan tadi.

Sebuah pesan dibentuk oleh informasi berikut ini: 1) objek yang dituju; 2) nama metode yang ingin dipanggil; 3) parameter yang dibutuhkan metode tersebut. Misalnya:

anotherObject.aMethod(parameter1);

Bila sebuah objek ingin memanggil metode miliknya sendiri, maka informasi pertama adalah dirinya sendiri. Untuk menunjuk diri sendiri dalam Java digunakan kata kunci this. Maka contoh sebelumnya akan menjadi:

this.aMethod(parameter1);

Atau kita dapat menghilangkan informasi pertama sehingga menjadi:

aMethod(parameter1);

karena bila informasi pertama tidak ada, omputer akan secara otomatis menunjuk ke objek itu sendiri.

Ada dua keuntungan dalam penggunaan pesan, yaitu: 1) semua kebutuhan interaksi antarobjek dapat dilakukan; 2) objek-objek yang saling berinteraksi tidak harus berada dalam satu proses atau bahkan dalam satu omputer.

BAB II

PENGENALAN JAVA

1.1 Sejarah Java

Java bermula dari proyek penelitian perusahaan Sun Microsystems dengan nama sandi Green pads tahun 1991. Terdapat prediksi bahwa mikroprosesor akan digunakan luas pads peralatan-peralatan elek­tronik. Karena adanya bermacam tipe mikroprosesor, maka dibutuhkan sebuah bahasa pemrograman yang dapat berjalan di semua mikro­prosesor.

Terciptalah sebuah bahasa pemrograman baru. Oleh James Gosling, yaitu salah satu orang yang berperan besar dalam proyek tersebut, program ini diberi nama Oak. Sesuai dengan pohon Oak yang tumbuh dan bisa dilihat melalui jendela kerjanya di Sun Microsystems.

Selang beberapa waktu kemudian, ditemukan bahwa sudah ada bahasa pemrograman dengan nama Oak. Akhirnya setelah beberapa pegawai Sun mengunjungi sebuah kedai kopi, nama bahasa pemrograman ini diganti dengan Java. Java merupakan salah satu jenis biji kopi yang ada di kedai tersebut, yaitu biji kopi Jawa.

Sun Microsystems mengumumkan kehadiran bahasa Java secara for­mal di tahun 1995. Bahasa ini mulai disambut hangat masyarakat luas seiring dengan meledaknya era internet.

2 Perkembangan Teknologi Java

Saat ini Sun Microsystems membagi Java menjadi empat jenis edisi:

· Java Card: Teknologi Java yang digunakan pada peralatan elektronik yang memiliki memori sangat terbatas, misalnya smart card.

· J2ME: Java 2 Platform, Micro Edition. Merupakan teknologi Java edisi mikro, digunakan untuk penerapan teknologi Java pada peralatan elektronik seperti handphone dan PDA.

· J2SE: Java 2 Platform, Standard Edition. Merupakan teknologi Java edisi standar, digunakan untuk penerapan teknologi Java pada komputer desktop.

· J2EE: Java 2 Platform, Enterprise Edition. Merupakan teknologi Java edisi enterprise, digunakan untuk penerapan teknologi Java pada komputer server.

Setiap edisi Java terdiri atas dua komponen utama berikut:

· Java Application Programming Interface (Java API). Java API terdiri atas kumpulan library yang digunakan untuk keperluan pemrograman. Dengan adanya API, Anda tidak harus membuat program dari awal. Misalnya untuk J2SE, sudah terdapat API untuk pengolahan window dengan Swing dan AWT (Abstract Window Toolkit).

· Java Run Time Environment (JRE). JRE merupakan lingkungan yang membuat aplikasi Java dapat dijalankan. Salah satu komponen penting JRE adalah Java Virtual Machine (JVM).

JVM merupakan mesin virtual berupa aplikasi yang digunakan untuk menjalankan kode Java (bytecode). JVM inilah yang membuat Java menjadi platform independen. JVM bisa berbeda, tergantung pada platform yang akan digunakan. Misalnya ada JVM untuk PC Windows dan Linux, serta untuk Apple. Setiap komputer dan peralatan elektronik dapat menjalankan program Java, asalkan terdapat JVM untuk kom­puter atau peralatan elektronik tersebut. JVM sendiri tidak ditulis dalam bahasa Java namun dengan bahasa lain, yaitu C++.

Versi Java Tahun Jumlah class

1.0

1996

211

1.1

1997

477

1.2

1998

1524

1.3

2000

1840

1.4

2004

2723

5

2004

3279

6

2005

>=3777






Di tahun 2006, Sun Microsystems mulai menerapkan lisensi open source, yaitu GNU General Public License (GNU GPL) sehingga semua pihak semakin leluasa menggunakan teknologi Java.

Sejak J2SE 1.4, perubahan Java diatur oleh Java Community Process (JCP). JCP memungkinkan semua pihak yang menggunakan teknologi Java untuk ikut memberi masukan bagaimana bahasa Java akan dikembangkan. JCP menggunakan Java Specification Request (JSR) untuk pengusulan atau proposal pengubahan atau penambahan pada Java. Sedangkan bahasa Java sendiri menggunakan Java Language Specification (JLS) yang diatur oleh JSR 901. Java tidak hanya sekadar bahasa pemrograman, namun sudah menjadi sebuah teknologi.

Pemrograman dengan Java

Pemrograman dengan Java dilakukan melalui tiga tahap berikut:

· Menuliskan program Java

· Melakukan kompilasi program Java

· Menjalankan program Java

Compiler JVM

n

I/

Program.java

Program.class

Program

Tahap-tahap pemrograman Java

1. Menuliskan kode program Java.

Anda dapat menulis bahasa Java menggunakan aplikasi teks editor biasa, misalnya Notepad. Namun, untuk kemudahan pemrograman, sangat dianjurkan menggunakan aplikasi Integrated Development Environment (IDE) Java.

IDE Java merupakan aplikasi yang digunakan khusus untuk mengembangkan program Java. Di dalamnya sudah tersedia banyak fitur untuk memudahkan pemrograman, seperti kom­pilasi dan debugging, pengaturan file-file Java, dan deteksi kesalahan sintaks pemrograman Java. IDE Java yang banyak dipakai untuk menuliskan program Java, antara lain NetBeans, Eclipse, JBuilder, Kreator, dan Intelli J IDEA. Kode program Java biasanya disimpan dengan ekstensi file .Java.

Selain menggunakan IDE, penulisan program Java yang masih sederhana dapat dilakukan menggunakan text editor, seperti Notepad++ dan Edit Plus. Kedua aplikasi ini dapat mengenali sintaks Java sehingga memudahkan pengguna menuliskan kode program.

2. Kompilasi program Java.

Setelah kode Java selesai dituliskan. kode tersebut dikompilasi sehingga menjadi file File binary merupakan hasil ter­jemahan kode program yang kita tulis menjadi bentuk yang dapat dibaca komputer.

File binary hasil kompilasi program Java disebut jugs dengan bytecode. File ini disimpan dengan ekstensi file .class. Setup file berisi kode program Java (.Java), akan dikompilasi sendiri­sendiri sehingga setup file .Java mempunyai hasil kompilasinya (.class).

3. Menjalankan program Java.

Hasil kompilasi akan dijalankan oleh Java Virtual Machine dan program Anda siap dipakai. Jadi, Java merupakan bahasa pemrograman intepreted sekaligus compiled. Pertama dikom­pilasi dulu menjadi bytecode. Setelah itu diintepretasikan dari Java bytecode oleh JVM menjadi native code sehingga di­mengerti oleh prosesor yang digunakan.

.4 Keunggulan Java

Dibanding bahasa pemrograman lain, Java mempunyai beberapa kelebihan yang membuatnya dipakai luas terutama untuk aplikasi enterprise. Java bahkan diprediksi menjadi bahasa mass depan. Java telah banyak diajarkan di lingkungan pendidikan dan dipakai secara luas oleh perusahaan dan lembaga berskala internasional, seperti IBM dan NASA.

Beberapa keunggulan Java, antara lain:

1. Relatif Mudah Dipelajari

Java merupakan bahasa pemrograman berorientasi objek (Object Oriented Programming) yang mudah dipelajari, terutama bagi yang sudah familiar dengan bahasa C, C++, atau C#.

Java meningkatkan pemrograman objek pada C++ dengan menghilangkan pointer pada tipe data biasa dan multiple inheritance. Java juga menggunakan pengalokasian memori secara otomatis termasuk menerapkan garbage collection.

2. Mudah dikembangkan

Dengan pemrograman berorientasi objek, komponen program Java terpecah menjadi satu atau beberapa class. Pengembangan bahasa Java sangat mudah karena tinggal mengubah atau menambah class yang pernah dibuat. Selain itu, kits juga dapat menggunakan class-class yang sudah ada dalam Java API ataupun dibuat oleh pihak ketiga.

3. Platform Independent

Dengan semboyan write once run everywhere, Anda dapat menggunakan program Java pada beberapa mesin yang ber­beda. Mulai dari PDA, handphone, komputer, hingga server. Dengan mesin hardware yang berbeda dan sistem operasi berbeda, Java tetap dapat digunakan. Asalkan sudah men­dukung Java platform. Misalnya, program Java dapat dijalankan.

BAB III

MEMBUAT CLASS DAN MENGAKSES CLASS

Class (Kelas)

Setiap program yang dibuat dengan Java harus mempunyai paling tidak satu buah class. Class merupakan cetak biru atau template objek. Jadi class bukanlah objek real, namun merupakan konsep objek. Misal dalam game yang Anda bust terdapat dua ekor kucing yang di namai Katty dan Ronald. Maka kucing adalah class, sedangkan Katty dan Ronald merupakan objek dengan tipe kucing.

Dalam pendefinisian class, kita menentukan field dan metode yang akan digunakan. Misalnya dalam class kucing kita menentukan buah field: nama dan berat badan. Dalam deklarasi class, nama dan berat badan kucing tidak di tentukan karena setiap kucing bisa memiliki nama dan berat badan yang berbeda-beda . kedua field tersebut baru ditentukan saat kita membuat objek kucing . Misalnya dibuat objek kucing bernama Katty berat badan 5 kg , serta seekor kucing lagi dengan nama Ronald berat badan 7 kg.

Sebelum membuat objek, kita harus menentukan class yang digunakan sebagai template objek. Dalam Java, setiap class disimpan dalam satu buah file tersendiri dengan ekstensi .java.

File kode program harus mempunyai nama yang sama seperti nama class, termasuk penulisan huruf besar/kecil. Misalnya Anda ingin membuat class Pelanggan, maka deklarasi class Pelanggan harus disimpan ­dalam file dengan nama Pelanggan.java. Tidak boleh selain itu. Nama file plgn.java ataupun pelanggan.java akan membuat kode program tidak dapat dikompilasi.

Deklarasi class dalam Java dilakukan dengan menentukan dua bagian utama:

header (judul). Terdiri atas nama class dan modifier yang digunakan oleh class tersebut. Pada bagian ini bisa terdapat super class jika class yang dibuat mewarisi sifat class lain. Interface juga ditentukan di sini jika class menerapkan interface tertentu.

• body (isi class). Terdiri atas statement-statement yang mende­finisikan karakteristik class yang akan kita buat. Bagian ini bisa terdapat konstruktor, variabel, dan metode.

Sintaks Deklarasi Class

[modifier] class identifier {

// Class body (isi class):

// 1. Konstruktor

// 2. Variabel

// 3. Metode

}

Berikut contoh pembuatan class.

Listing program

public class Kotak {

float panjang;

float lebar;

public static double hitungLuas (float p,float l){

double luas;

luas = p * 1;

return luas;

}

public static void main (String[] ar)( System.out..println(hitungLuas(10,12));

}

}

Setelah itu, file tersebut disimpan dalam file Kotak.java. Lakukan kom­pilasi dan jalankan program tersebut.

Analisis untuk Class Kotak:

· Class kotak mempunyai dua buah instance variable, yaitu panjang dan lebar.

· Class kotak mempunyai metode hitungLuas(). Metode ini ber­fungsi untuk menghitung luas berdasarkan nilai yang dima­sukkan ke dalam local variable p dan 1. Metode hitungLuas akan mengembalikan (retum) nilai dengan tipe data double.

· Dalam Class kotak terdapat metode main yang berfungsi untuk memulai program. Program dimulai dengan menjalankan metode hitung Luas dengan p = 10 dan 1 = 12. Setelah itu, hasil perhi­tungan akan ditampilkan pada layar command prompt.

Keyword this

Kata kunci this digunakan untuk merujuk kepada objek itu sendiri. This sering digunakan pada metode dan deklarasi class. This dipakai ber­sama dengan field dan metode yang masih berada dalam satu class.

Karena merujuk ke objek, this hanya bisa dipakai dalam instance metode, bukan pada metode class (class method). Metode Class ditan­dai dengan keyword static.

t = this.x; //x merupakan instance variabel di dalam objek saat ini

System.out.printin(this); this.tambahData(this);

/* memanggil metode tambahData pada objek lalu dengan masukan objek itu sendiri */

return this; // mengembalikan objek saat ini

Contoh penggunaan this pada kode program.

Listing program

public class DemoTambah{

private int x;

public void tambahkan(int x){ this.x += x;

}

public int hasil(){

return this.x;

}

public static void main(String[] args){

DemoTambah sum = new DemoTambah();

sum.tambahkan(40); sum.tambahkan(45); sum.tambahkan(15);

System.out.println("Jumlah: " + sum.hasil());

}

Berikut hal-hal penting berkaitan dengan kode di atas.

· Deklarasi class dibuat dengan satu variabel: int x, dan dua buah metode: tambahkan() dan hasil().

· Eksekusi program dimulai dengan membuat objek DemoTambah dan direferensikan dengan variabel sum.

· Metode tambahkan() pads objek sum dijalankan dengan ma‑
sukan 40, 45, dan 15 dan hasilnya disimpan dalam variabel x.

· Nilai variabel x dari objek sum diambil menggunakan metode hasil() lalu ditampilkan ke layar command prompt.

Latihan Membuat Class

Misalnya Anda diharuskan membuat class yang akan digunakan untuk menyimpan informasi nasabah tabungan dalam sebuah bank. Setiap nasabah mempunyai data informasi berupa: nama, no rekening, alamat, dan jumlah uang.

Berikut kode deklarasi class Nasabah yang bisa dibuat.

public class Nasabah {

private String nama; Nama nasabah

private String alamat; // alamat

private String rekening;//No. rekening

privatedouble jumlah; // uang tersisa

public debet();

}

BAB IV

ARRAY

Pengenalan Array

Dibagian sebelumnya, kita telah mendiskusikan bagaimana cara pendeklarasian berbagai macam variabel dengan menggunakan tipe data primitif. Dalam pendeklarasian variabel, kita sering menggunakan sebuah tipe data beserta nama variabel atau identifier yang unik, dimana untuk menggunakan variabel tersebut, kita akan memanggil dengan nama identifier-nya.

Sebagai contoh, kita memiliki tiga variabel dengan tipe data int yang memiliki identifier yang berbeda untuk tiap variabel.

int number1;

int number2;

int number3;

number1 = 1;

number2 = 2;

number3 = 3;

Seperti yang dapat Anda perhatikan pada contoh diatas, hanya untuk menginisialisasi dan menggunakan variabel terutama pada saat variabel-variabel tersebut memiliki tujuan yang sama, dirasa sangat membingungkan. Di Java maupun di bahasa pemrograman yang lain, mereka memiliki kemampuan untuk menggunakan satu variabel yang dapat menyimpan sebuah data list dan kemudian memanipulasinya dengan lebih efektif. Tipe variabel inilah yang disebut sebagai array.

Sebuah array akan menyimpan beberapa item data yang memiliki tipe data sama didalam sebuah blok memori yang berdekatan yang kemudian dibagai menjadi beberapa

slot. Bayangkanlah array adalah sebuah variabel – sebuah lokasi memori tertentu yang memiliki satu nama sebagai identifier, akan tetapi ia dapat menyimpan lebih dari sebuah

value.

Pendeklarasian Array

Array harus dideklarasikan seperti layaknya sebuah variabel. Apabila Anda mendeklarasikan array, Anda harus membuat sebuah list dari tipe data, yang diikuti oleh tanda kurung buka dan kurung tutup, yang diikuti oleh nama identifier. Sebagai contoh,

int []ages;

atau Anda dapat menempatkan kurung buka dan kurung tutupnya setelah identifier.

Sebagai contoh,

int ages[];

Setelah pendeklarasian, kita harus membuat array dan menentukan berapa panjangnya

dengan sebuah konstruktor. Proses ini di Java disebut sebagai instantiation ( Kata

dalam Java yang berarti membuat ). Untuk meng-instantiate sebuah obyek, kita

membutuhkan sebuah konstruktor. Kita akan membicarakan lagi mengenai instantiate

obyek dan pembuatan konstruktor pada bagian selanjutnya. Perlu dicatat, bahwa ukuran

dari array tidak dapat diubah setelah Anda menginisialisasinya. Sebagai contoh,

//deklarasi

int ages[];

//instantiate obyek

ages = new int[100];

atau bisa juga ditulis dengan,

//deklarasi dan instantiate

obyek

int ages[] = new

int[100];

Pada contoh diatas, deklarasi akan memberitahukan kepada compiler Java, bahwa identifier ages akan digunakan sebagai nama array yang berisi data-data integer, dan kemudian untuk membuat atau meng-instantiate sebuah array baru yang terdiri dari 100 elemen. Selain menggunakan sebuah keyword baru untuk meng-instantiate array, Anda juga dapat secara otomatis mendeklarasikan array, membangunnya, kemudian memberikan sebuah value.

Sebagai contoh,

//membuat sebuah array yang berisi variabel-variabel

//boolean pada sebuah identifier. Array ini terdiri dari 4

//elemen yang diinisilisasikan sebagai value //{true,false,true,false}

boolean results[] ={ true, false, true, false };

//Membuat sebuah array yang terdiri dari penginisialisasian

//4 variabel double bagi value {100,90,80,75} double []grades = {100, 90, 80, 75};

//Membuat sebuah array String dengan identifier days. Array

//ini terdiri dari 7 elemen.

String days[] = { “Mon”, “Tue”, “Wed”, “Thu”, “Fri”, “Sat”,

“Sun”};

Pengaksesan sebuah elemen array

Untuk mengakses sebuah elemen dalam array, atau mengakses sebagian dari array,

Anda harus menggunakan sebuah nomor atau yang disebut sebagai index atau subscript. Sebuah nomor index atau subscript telah diberikan kepada tiap anggota array, sehingga program dan programmer dapat mengakses setiap value apabila dibutuhkan. Index selalu dalam integer. Dimulai dari nol, kemudian akan terus bertambah sampai list value dari array tersebut berakhir. Perlu dicatat, bahwa elemen-elemen didalam array dimulai dari 0 sampai dengan (ukuranArray-1). Sebagai contoh, pada array yang kita deklarasikan tadi, kita mempunyai,

//memberikan nilai 10 kepada elemen pertama array

ages[0] = 10;

//mencetak elemen array yang terakhir

System.out.print(ages[99]);

Perlu diperhatikan bahwa sekali array dideklarasikan dan dikonstruksi, nilai yang disimpan dalam setiap anggota array akan diinisialisasi sebagai nol. Oleh karena itu, apabila Anda menggunakan tipe data reference seperti String, ia tidak akan diinisalisasi ke string kosong “”, sehingga Anda tetap harus membuat String array secara eksplisit. Berikut ini adalah contoh, bagaimana untuk mencetak seluruh elemen didalam array.

Dalam contoh ini digunakanlah loop, sehingga kode kita menjadi lebih pendek.

public class ArraySample{

public static void main( String[] args ){

int[] ages = new int[100];

for( int i=0; i<100;>

System.out.print( ages[i] );

}

}

}

Petunjuk penulisan program:

1. Biasanya, lebih baik menginisialisasi atau meng-instantiate array setelah Anda

mendeklarasikannya. Sebagai contoh pendeklarasiannya

int []arr = new int[100];

lebih disarankan daripada,

int []arr;

arr = new int[100];

2. Elemen-elemen dalam n-elemen array memiliki index dari 0 sampai n-1. Perhatikan

disini bahwa tidak ada elemen array arr[n]. Hal ini akan menyebabkan array-index outof-

bounds exception.

3. Anda tidak dapat mengubah ukuran dari sebuah array

Panjang Array

Untuk mengetahui berapa banyak element didalam sebuah array, Anda dapat

menggunakan length (panjang) field dalam array. Panjang field dalam array akan

mengembalikan ukuran dari array itu sendiri. Sebagai contoh,

arrayName.length

Pada contoh sebelumnya, kita dapat menuliskannya kembali seperti berikut ini,

public class ArraySample

{

public static void main( String[] args ){

int[] ages = new int[100];

for( int i=0; i<ages.length; i++ ){

System.out.print( ages[i] );

}

}

}

Petunjuk penulisan program:

1. Pada saat pembuatan loop untuk memproses elemen-elemen dalam array,

gunakanlah length field didalam pernyataan pengkondisian dalam loop. Hal ini akan

menyebabkan loop secara otomatis menyesuaikan diri terhada ukuran array yang

berbeda-beda.

2. Pendeklarasian ukuran array di Java, biasanya digunakan constant untuk

mempermudah. Sebagai contoh,

final int ARRAY_SIZE = 1000; //pendeklarasian constant

. . .

int[] ages = new int[ARRAY_SIZE];

Array Multidimensi

Array multidimensi diimplementasikan sebagai array didalam array. Array multidimensi

dideklarasikan dengan menambahkan jumlah tanda kurung setelah nama array. Sebagai

contoh,

// Elemen 512 x 128 dari integer array

int[][] twoD = new int[512][128];

// karakter array 8 x 16 x 24

char[][][] threeD = new char[8][16][24];

// String array 4 baris x 2 kolom

String[][] dogs = {{ "terry", "brown" },

{ "Kristin", "white" },

{ "toby", "gray"},

{ "fido", "black"}

};

Untuk mengakses sebuah elemen didalam array multidimensi, sama saja dengan mengakses array satu dimensi. Misalnya saja, untuk mengakses element pertama dari baris pertama didalam array dogs, kita akan menulis,

System.out.print( dogs[0][0] );

Kode diatas akan mencetak String “terry” di layar.

BAB V

PACKAGES

Packages dalam JAVA berarti pengelompokan beberapa class dan interface dalam satu unit. Fitur ini menyediakan mekanisme untuk mengatur class dan interface dalam jumlah banyak dan menghindari konflik pada penamaan.

Mengimport Packages

Supaya dapat meggunakan class yang berada diluar package yang sedang dikerjakan, Anda harus mengimport package dimana class tersebut berada. Pada dasarnya, seluruh program JAVA mengimport package java.lang.*, sehingga Anda dapat menggunakan class seperti String dan Integer dalam program meskipun belum mengimport package sama sekali.

Penulisan import package dapat dilakukan seperti dibawah ini :

import <namaPaket>;

Sebagai contoh, bila Anda ingin menggunakan class Color dalam package awt, Anda harus menuliskan import package sebagai berikut :

import java.awt.Color;

import java.awt.*;

Baris pertama menyatakan untuk mengimport class Color secara spesifik pada package, sedangkan baris kedua menyatakan mengimport seluruh class yang terkandung dalam package java.awt.

Cara lain dalam mengimport package adalah dengan menuliskan referensi package secara eksplisit. Hal ini dilakukan dengan menggunakan nama package untuk mendeklarasikan object sebuah class :

java.awt.Color color;

Membuat Package

Untuk membuat package, dapat dilakukan dengan menuliskan :

package ;

Anggaplah kita ingin membuat package dimana class StudentRecord akan ditempatkan bersama dengan class class yang lain dengan nama package schoolClasses.

Langkah pertama yang harus dilakukan adalah membuat folder dengan nama

schoolClasses. Salin seluruh class yang ingin diletakkan pada package dalam folder ini. Kemudian tambahkan kode deklarasi package pada awal file. Sebagai contoh :

package schoolClasses;

public class StudentRecord

{

private String name;

private String address;

private int age;

}

Package juga dapat dibuat secara bersarang. Dalam hal ini Java Interpreter menghendaki

struktur direktori yang mengandung class eksekusi untuk disesuaikan dengan struktur package.

Pengaturan CLASSPATH

Diasumsikan package schoolClasses terdapat pada direktori C:\. Langkah selanjutnya

adalah mengatur classpath untuk menunjuk direktori tersebut sehingga pada saat akan dijalankan, JVM dapat mengetahui dimana class tersebut tersimpan. Sebelum membahas cara mengatur classpath, perhatikan contoh dibawah yang menAndakan kejadian bila kita tidak mengatur classpath.

Asumsikan kita mengkompilasi dan menjalankan class StudentRecord :

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)

Kita akan mendapatkan pesan kesalahan berupa NoClassDefFoundError yang berarti JAVA tidak mengetahui dimana posisi class. Hal tersebut disebabkan oleh karena class

StudentRecord berada pada package dengan nama studentClasses. Jika kita ingin

menjalankan kelas tersebut, kita harus memberi informasi pada JAVA bahwa nama lengkap dari class tersebut adalah schoolClasses.StudentRecord. Kita juga harus

menginformasikan kepada JVM dimana posisi pencarian package, yang dalam hal ini berada pada direktori C:\. Untuk melakukan langkah – langkah tersebut, kita harus mengatur classpath.

Pengaturan classpath pada Windows dilakukan pada command prompt :

C:\schoolClasses> set classpath=C:\

dimana C:\ adalah direktori dimana kita menempatkan package. Setelah mengatur

classpath, kita dapat menjalankan program di mana saja dengan mengetikkan :

C:\schoolClasses> java schoolClasses.StudentRecord

Pada UNIX, asumsikan bahwa kita memiliki class - class yang terdapat dalam direktori

/usr/local/myClasses, ketikkan :

export classpath=/usr/local/myClasses

Perhatikan bahwa Anda dapat mengatur classpath dimana saja. Anda juga dapat mengatur

lebih dari satu classpath, kita hanya perlu memisahkannya dengan menggunakan ;

(Windows), dan : (UNIX). Sebagai contoh :

set classpath=C:\myClasses;D:\;E:\MyPrograms\Java

dan untuk sistem UNIX :

export classpath=/usr/local/java:/usr/myClasses

BAB VI

ENCAPSULATION

Enkapsulasi merupakan implementasi penyembunyian informasi . Tujuannya menyembunyikan informasi data ( field ) objek sehingga tidak terlihat dari luar . Dengan demikian , informasi tersebut tidak dapat di akses sembarangan .

Dalam bahasa Java , enkapsulasi dapat dilakukan pada claa, metode, dan field . Penerapan enkapsulasi sendiri dapat dilakukan secara bertingkat menggunakan access modifier yang terdiri atas private, public dan protected.

Access Modifiers

Pada saat membuat, mengatur properties dan class methods, kita ingin untuk

mengimplementasikan beberapa macam larangan untuk mengakses data. Sebagai contoh, jika Anda ingin beberapa atribut hanya dapat diubah hanya dengan method tertentu, tentu Anda ingin menyembunyikannya dari object lain pada class. Di JAVA, implementasi tersebut disebut dengan access modifiers. Terdapat 4 macam access modifiers di JAVA, yaitu : public, private, protected dan default. 3 tipe akses pertama tertulis secara ekplisit pada kode untuk mengindikasikan tipe akses, sedangkan yang keempat yang merupakan tipe default, tidak diperlukan penulisan keyword atas tipe.

Akses Default (Package Accessibility)

Tipe ini mempersyaratkan bahwa hanya class dalam package yang sama yang memiliki hak akses terhadap variabel dan methods dalam class. Tidak terdapat keyword pada tipe ini.

Sebagai contoh :

public class StudentRecord

{

//akses dasar terhadap variabel

int name;

//akses dasar terhadap metode

String getName(){

return name;

}

}

Pada contoh diatas, variabel nama dan method getName() dapat diakses dari object lain

selama object tersebut berada pada package yang sama dengan letak dari file

StudentRecord.

Akses Public

Tipe ini mengijinkan seluruh class member untuk diakses baik dari dalam dan luar class. Object apapun yang memiliki interaksi pada class memiliki akses penuh terhadap member dari tipe ini. Sebagai contoh :

public class StudentRecord

{

//akses dasar terhadap variabel

public int name;

//akses dasar terhadap metode

public String getName(){

return name;

}

}

Dalam contoh ini, variabel name dan method getName() dapat diakses dari object lain.

Akses Protected

Tipe ini hanya mengijinkan class member untuk diakses oleh method dalam class tersebut dan elemen – elemen subclass. Sebagai contoh :

public class StudentRecord

{

//akses pada variabel

protected int name;

//akses pada metode

protected String getName(){

return name;

}

}

Pada contoh diatas, variabel name dan method getName() hanya dapat diakses oleh method internal class dan subclass dari class StudentRecord.

Pengenalan Pemrograman 1 23

J.E.N.I.

Akses Private

Tipe ini mengijinkan pengaksesan class hanya dapat diakses oleh class dimana tipe ini dibuat. Sebagai contoh :

public class StudentRecord

{

//akses dasar terhadap variabel

private int name;

//akses dasar terhadap metode

private String getName(){

return name;

}

}

Pada contoh diatas, variabel name dan method getName() hanya dapat diakses oleh

method internal class tersebut.

BAB VII

INHERITANCE

Pewarisan

Dalam Java, semua class, termasuk class yang membangun Java API,adalah subclasses dari superclass Object. Contoh hirarki class diperlihatkan di bawah ini. Beberapa class di atas class utama dalam hirarki class dikenal sebagai superclass. Sementara beberapa class di bawah class pokok dalam hirarki class dikenal sebagai

subclass dari class tersebut.

Pewarisan adalah keuntungan besar dalam pemrograman berbasis object karena suatu sifat atau method didefinisikan dalam superclass, sifat ini secara otomatis diwariskan dari semua subclasses. Jadi, Anda dapat menuliskan kode method hanya sekali dan mereka dapat digunakan oleh semua subclass. Subclass hanya butuh mengimplementasikan perbedaannya sendiri dan induknya.

Mendefinisikan Superclass dan Subclass

Untuk memperoleh suatu class, kita menggunakan kata kunci extend. Untuk mengilustrasikan ini, kita akan membuat contoh class induk. Dimisalkan kita mempunyai class induk yang dinamakan Person.

public class Person

{

protected String name;

protected String address;

/**

* Default constructor

*/

public Person(){

System.out.println(“Inside Person:Constructor”);

name = "";

address = "";

}

/**

* Constructor dengan dua parameter

*/

public Person( String name, String address ){

this.name = name;

this.address = address;

}

/**

* Method accessor

*/

public String getName(){

return name;

}

public String getAddress(){

return address;

}

public void setName( String name ){

this.name = name;

}

public void setAddress( String add ){

this.address = add;

}

}

Perhatikan bahwa atribut name dan address dideklarasikan sebagai protected. Alasannya kita melakukan ini yaitu, kita inginkan atribut-atribut ini untuk bisa diakses oleh subclasses dari superclassess. Jika kita mendeklarasikan sebagai private, subclasses tidak dapat menggunakannya. Catatan bahwa semua properti dari superclass yang dideklarasikan sebagai public, protected dan default dapat diakses oleh subclasses-nya. Sekarang, kita ingin membuat class lain bernama Student. Karena Student juga sebagai Person, kita putuskan hanya meng-extend class Person, sehingga kita dapat mewariskan semua properti dan method dari setiap class Person yang ada. Untuk melakukan ini, kita tulis,

public class Student extends Person

{

public Student(){

System.out.println(“Inside Student:Constructor”);

//beberapa kode di sini

}

// beberapa kode di sini

}

Ketika object Student di-instantiate, default constructor dari superclass secara mutlak

meminta untuk melakukan inisialisasi yang seharusnya. Setelah itu, pernyataan di dalam

subclass dieksekusi. Untuk mengilustrasikannya, perhatikan kode berikut,

public static void main( String[] args ){

Student anna = new Student();

}

Dalam kode ini, kita membuat sebuah object dari class Student. Keluaran dari program

adalah,

Inside Person:Constructor

Inside Student:Constructor

Gambar 2: Alur Program

J.E.N.I.

Pengenalan Pemrograman 1 4

Alur program ditunjukkan sebagai berikut.

11.2.2 Kata Kunci Super

Subclass juga dapat memanggil constructor secara explicit dari superclass terdekat. Hal ini

dilakukan dengan pemanggil construktor super. Pemanggil constructor super dalam

constructor dari subclass akan menghasilkan eksekusi dari superclass constructor yang

bersangkutan, berdasar dari argumen sebelumnya.

Sebagai contoh, pada contoh class sebelumnya. Person dan Student, kita tunjukkan contoh

dari pemanggil constructor super. Diberikan kode berikut untuk Student,

public Student(){

super( "SomeName", "SomeAddress" );

System.out.println("Inside Student:Constructor");

}

Kode ini memanggil constructor kedua dari superclass terdekat(yaitu adalah Person) dan mengeksekusinya. Contoh kode lain ditunjukkan sebagai berikut,

public Student(){

super();

System.out.println("Inside Student:Constructor");

}

Kode ini memanggil default constructor dari superclass terdekat(yaitu Person) dan

mengeksekusinya.

Ada beberapa hal yang harus diingat ketika menggunakan pemanggil konstuktor super:

1. Pemanggil super() HARUS DIJADIKAN PERNYATAAN PERTAMA DALAM constructor.

2. Pemanggil super() hanya dapat digunakan dalam definisi constructor.

3. Termasuk constructor this() dan pemanggil super() TIDAK BOLEH TERJADI DALAM constructor YANG SAMA.

Pemakaian lain dari super adalah untuk menunjuk anggota dari superclass(seperti referensi this). Sebagai contoh,

public Student()

{

super.name = “somename”;

super.address = “some address”;

}

Overriding Method

Untuk beberapa pertimbangan, kadang-kadang class asal perlu mempunyai implementasi berbeda dari method yang khusus dari superclass tersebut. Oleh karena itulah, method overriding digunakan. Subclass dapat mengesampingkan method yang didefinisikan dalam superclass dengan menyediakan implementasi baru dari method tersebut. Misalnya kita mempunyai implementasi berikut untuk method getName dalam superclass

Person,

public class Person

{

:

:

public String getName(){

System.out.println("Parent: getName");

return name;

}

:

}

Untuk override, method getName dalam subclass Student, kita tulis,

public class Student extends Person

{

:

:

public String getName(){

System.out.println("Student: getName");

return name;

}

Pengenalan Pemrograman 1 6

:

}

Jadi, ketika kita meminta method getName dari object class Student, method overridde akan dipanggil, keluarannya akan menjadi,

Student: getName

Method final dan class final

Dalam Java, juga memungkinkan untuk mendeklarasikan class-class yang tidak lama menjadi subclass. Class ini dinamakan class final. Untuk mendeklarasikan class untuk menjadi final kita hanya menambahkan kata kunci final dalam deklarasi class. Untuk contohnya, jika kita ingin class Person untuk dideklarasikan final, kita tulis,

public final class Person

{

//area kode

}

Beberapa class dalam Java API dideklarasikan secara final untuk memastikan sifatnya tidak dapat di-override. Contoh-contoh dari class ini adalah Integer, Double, dan String.

Ini memungkinkan dalam Java membuat method yang tidak dapat di-override. Method ini dapat kita panggil method final. Untuk mendeklarasikan method untuk menjadi final, kita tambahkan kata kunci final ke dalam deklarasi method. Contohnya, jika kita ingin method getName dalam class Person untuk dideklarasikan final, kita tulis,

public final String getName(){

return name;

}

Method static juga secara otomatis final. Ini artinya Anda tidak dapat membuatnya

override.

BAB VIII

POLIMORFISME

Kemampuan dari referensi untuk mengubah sifat menurut object apa yang dijadikan acuan dinamakan polimorfisme. Polimorfisme menyediakan multiobject dari subclasses yang berbeda untuk diperlakukan sebagai object dari superclass tunggal, secara otomatis menunjuk method yang tepat untuk menggunakannya ke particular object berdasar subclass yang termasuk di dalamnya. Contoh lain yang menunjukkan properti polimorfisme adalah ketika kita mencoba melalui referensi ke method. Misalkan kita punya method statis printInformation yang

mengakibatkan object Person sebagai referensi, kita dapat me-referensi dari tipe Employee dan tipe Student ke method ini selama itu masih subclass dari class Person.

Sekarang, class induk Person dan subclass Student dari contoh sebelumnya, kita tambahkan subclass lain dari Person yaitu Employee. Di bawah ini adalah hierarkinya,

Person

Student Employee

Dalam Java, kita dapat membuat referensi yang merupakan tipe dari superclass ke sebuah object dari subclass tersebut. Sebagai contohnya,

public static main( String[] args )

{

Person ref;

Student studentObject = new Student();

Employee employeeObject = new Employee();

ref = studentObject; //Person menunjuk kepada

// object Student

//beberapa kode di sini

}

Sekarang dimisalkan kita punya method getName dalam superclass Person kita, dan kita override method ini dalam kedua subclasses Student dan Employee,

public class Person

{

public String getName(){

System.out.println(“Person Name:” + name);

return name;

}

}

public class Student extends Person

{

public String getName(){

System.out.println(“Student Name:” + name);

return name;

}

}

public class Employee extends Person

{

public String getName(){

System.out.println(“Employee Name:” + name);

return name;

}

Kembali ke method utama kita, ketika kita mencoba memanggil method getName dari referensi Person ref, method getName dari object Student akan dipanggil. Sekarang, jika kita berikan ref ke object Employee, method getName dari Employee akan dipanggil.

public static main( String[] args )

{

Person ref;

Student studentObject = new Student();

Employee employeeObject = new Employee();

ref = studentObject; //Person menunjuk kepada

// object Student

String temp = ref.getName(); //getName dari Student

//class dipanggil

System.out.println( temp );

ref = employeeObject; //Person menunjuk kepada

// object Employee

String temp = ref.getName(); //getName dari Employee

//class dipanggil

System.out.println( temp );

}

public static main( String[] args )

{

Student studentObject = new Student();

Employee employeeObject = new Employee();

printInformation( studentObject );

printInformation( employeeObject );

}

J.E.N.I.

Pengenalan Pemrograman 1 9

public static printInformation( Person p ){

. . . .

}

Abstract Class

Misalnya kita ingin membuat superclass yang mempunyai method tertentu yang berisi implementasi, dan juga beberapa method yang akan di-overridden oleh subclasses nya. Sebagai contoh, kita akan membuat superclass bernama LivingThing. class ini mempunyai method tertentu seperti breath, eat, sleep, dan walk. Akan tetapi, ada beberapa method di dalam superclass yang sifatnya tidak dapat digeneralisasi. Kita ambil contoh, method walk. Tidak semua kehidupan berjalan(walk) dalam cara yang sama. Ambil manusia sebagai misal, kita manusia berjalan dengan dua kaki, dimana kehidupan lainnya seperti anjing berjalan dengan empat kaki. Akan tetapi, beberapa ciri umum dalam kehidupan sudah biasa, itulah kenapa kita inginkan membuat superclass umum dalam hal ini. Kita dapat membuat superclass yang mempunyai beberapa method dengan implementasi sedangkan yang lain tidak. Class jenis ini yang disebut dengan class abstract. Sebuah class abstract adalah class yang tidak dapat di-instantiate. Seringkali muncul di atas hirarki class pemrograman berbasis object, dan mendefinisikan keseluruhan aksi yang mungkin pada object dari seluruh subclasses dalam class. Method ini dalam class abstract yang tidak mempunyai implementasi dinamakan method abstract. Untuk membuat method abstract, tinggal menulis deklarasi method tanpa tubuh class dan digunakan menggunakan kata kunci abstract. Contohnya,

public abstract void someMethod();

Sekarang mari membuat contoh class abstract.

public abstract class LivingThing

{

public void breath(){

System.out.println("Living Thing breathing...");

}

public void eat(){

System.out.println("Living Thing eating...");

}

/**

* abstract method walk

* Kita ingin method ini di-overridden oleh subclasses

*/

public abstract void walk();

}

Ketika class meng-extend class abstract LivingThing, dibutuhkan untuk override method

abstract walk(), atau lainnya, juga subclass akan menjadi class abstract, oleh karena itu

tidak dapat di-instantiate. Contohnya,

public class Human extends LivingThing

{

System.out.println("Human walks...");

public void walk(){

}

}

Jika class Human tidak dapat overridde method walk, kita akan menemui pesan error

berikut ini,

Human.java:1: Human is not abstract and does not override

abstract method walk() in LivingThing

public class Human extends LivingThing

^

1 error

BAB IX

INTERFACE

Interface adalah jenis khusus dari blok yang hanya berisi method signature(atau constant). Interface mendefinisikan sebuah(signature) dari sebuah kumpulan method tanpa tubuh. Interface mendefinisikan sebuah cara standar dan umum dalam menetapkan sifat-sifat dari class-class. Mereka menyediakan class-class, tanpa memperhatikan lokasinya dalam hirarki class, untuk mengimplementasikan sifat-sifat yang umum. Dengan catatan bahwa interface-interface juga menunjukkan polimorfisme, dikarenakan program dapat memanggil method interface dan versi yang tepat dari method yang akan dieksekusi tergantung dari tipe object yang melewati pemanggil method interface.

Kenapa Kita Memakai Interface?

Kita akan menggunakan interface jika kita ingin class yang tidak berhubungan mengimplementasikan method yang sama. Melalui interface-interface, kita dapat menangkap kemiripan diantara class yang tidak berhubungan tanpa membuatnya seolaholah class yang berhubungan. Mari kita ambil contoh class Line dimana berisi method yang menghitung panjang dari garis dan membandingkan object Line ke object dari class yang sama. Sekarang, misalkan kita punya class yang lain yaitu MyInteger dimana berisi method yang membandingkan object MyInteger ke object dari class yang sama. Seperti yang kita lihat disini, kedua class-class mempunyai method yang mirip dimana membandingkan mereka dari object lain dalam tipe yang sama, tetapi mereka tidak berhubungan sama sekali. Supaya dapat menjalankan cara untuk memastikan bahwa dua class-class ini mengimplementasikan beberapa method dengan tanda yang sama, kita dapat menggunakan sebuah interface untuk hal ini. Kita dapat membuat sebuah class interface, katakanlah interface Relation dimana mempunyai deklarasi method pembanding. Relasi interface dapat dideklarasikan sebagai,

public interface Relation

{

public boolean isGreater( Object a, Object b);

public boolean isLess( Object a, Object b);

public boolean isEqual( Object a, Object b);

}

Alasan lain dalam menggunakan interface pemrograman object adalah untuk menyatakan sebuah interface pemrograman object tanpa menyatakan classnya. Seperti yang dapat kita lihat nanti dalam bagian Interface vs class, kita dapat benar-benar menggunakan interface sebagai tipe data.

Pada akhirnya, kita perlu menggunakan interface untuk pewarisan model jamak dimana menyediakan class untuk mempunyai lebih dari satu superclass. Pewarisan jamak tidak ditunjukkan di Java, tetapi ditunjukkan di bahasa berorientasi object lain seperti C++.

Interface vs. Class Abstract

Berikut ini adalah perbedaan utama antara sebuah interface dan sebuah class abstract: method interface tidak punya tubuh, sebuah interface hanya dapat mendefinisikan konstanta dan interface tidak langsung mewariskan hubungan dengan class istimewa lainnya, mereka didefinisikan secara independent.

Interface vs. Class

Satu ciri umum dari sebuah interface dan class adalah pada tipe mereka berdua. Ini artinya bahwa sebuah interface dapat digunakan dalam tempat-tempat dimana sebuah class dapat digunakan. Sebagai contoh, diberikan class Person dan interface PersonInterface, berikut

deklarasi yang benar:

PersonInterface pi = new Person();

Person pc = new Person();

Bagaimanapun, Anda tidak dapat membuat instance dari sebuah interface.

Contohnya:

PersonInterface pi = new PersonInterface(); //COMPILE

//ERROR!!!

Ciri umum lain adalah baik interface maupun class dapat mendefinisikan method.

Bagaimanapun, sebuah interface tidak punya sebuah kode implementasi sedangkan class

memiliki salah satunya.

Membuat Interface

Untuk membuat interface, kita tulis,

public interface [InterfaceName]

{

//beberapa method tanpa isi

}

Sebagai contoh, mari kita membuat sebuah interface yang mendefinisikan hubungan antara dua object menurut urutan asli dari object.

public interface Relation

{

public boolean isGreater( Object a, Object b);

public boolean isLess( Object a, Object b);

public boolean isEqual( Object a, Object b);

}

J.E.N.I.

Pengenalan Pemrograman 1 13

Sekarang, penggunaan interface, kita gunakan kata kunci implements. Contohnya,

/**

* Class ini mendefinisikan segmen garis

*/

public class Line implements Relation

{

private double x1;

private double x2;

private double y1;

private double y2;

public Line(double x1, double x2, double y1, double y2){

this.x1 = x1;

this.x2 = x2;

this.y1 = y1;

this.y2 = y2;

}

public double getLength(){

double length = Math.sqrt((x2-x1)*(x2-x1) +

(y2-y1)* (y2-y1));

return length;

}

public boolean isGreater( Object a, Object b){

double aLen = ((Line)a).getLength();

double bLen = ((Line)b).getLength();

return (aLen > bLen);

}

public boolean isLess( Object a, Object b){

double aLen = ((Line)a).getLength();

double bLen = ((Line)b).getLength();

return (aLen <>

}

public boolean isEqual( Object a, Object b){

double aLen = ((Line)a).getLength();

double bLen = ((Line)b).getLength();

return (aLen == bLen);

}

}

Ketika class Anda mencoba mengimplementasikan sebuah interface, selalu pastikan bahwa Anda mengimplementasikan semua method dari interface, jika tidak, Anda akan menemukan kesalahan ini,

Line.java:4: Line is not abstract and does not override abstract

method isGreater(java.lang.Object,java.lang.Object) in

Relation

public class Line implements Relation

^

1 error

Hubungan dari Interface ke Class

Seperti yang telah kita lihat dalam bagian sebelumnya, class dapat mengimplementasikan sebuah interface selama kode implementasi untuk semua method yang didefinisikan dalam interface tersedia.

Hal lain yang perlu dicatat tentang hubungan antara interface ke class-class yaitu, class hanya dapat mengEXTEND SATU superclass, tetapi dapat mengIMPLEMENTASIkan BANYAK interface. Sebuah contoh dari sebuah class yang mengimplementasikan interface adalah,

public class Person implements PersonInterface,

LivingThing,

WhateverInterface {

//beberapa kode di sini

}

Contoh lain dari class yang meng-extend satu superclass dan mengimplementasikan

sebuah interface adalah,

public class ComputerScienceStudent extends Student

implements PersonInterface,

LivingThing {

//beberapa kode di sini

}

Catatan bahwa sebuah interface bukan bagian dari hirarki pewarisan class. Class yang tidak

berhubungan dapat mengimplementasikan interface yang sama.

Petunjuk penulisan program:

Gunakan interface untuk mendefinisikan method standar yang sama dalam classclass

berbeda yang memungkinkan. Sekali Anda telah membuat kumpulan definisi

method standar, Anda dapat menulis method tunggal untuk memanipulasi semua classclass yang mengimplementasikan interface.

Pewarisan Antar Interface

Interface bukan bagian dari hirarki class. Bagaimanapun, interface dapat mempunyai

hubungan pewarisan antara mereka sendiri. Contohnya, misal kita punya dua interface

StudentInterface dan PersonInterface. Jika StudentInterface meng-extend

PersonInterface, maka ia akan mewariskan semua deklarasi method dalam PersonInterface.

public interface PersonInterface {

. . .

}

public interface StudentInterface extends PersonInterface {

. . .

}

2 komentar:

  1. Jangan lupa mampir ke blogku :)

    yulitasi14.blogspot.com

    BalasHapus
  2. king of fun casino games - Shootercasino
    king of 온카지노 fun casino games. Join and claim your welcome bonuses! Play 바카라 King 제왕 카지노 of Fun at ShootingCasino! This fun casino online casino offers

    BalasHapus