BAB I
KONSEP PEMROGRAMAN BERBASIS OBJEK
Tantangan besar mempelajari bahasa Java adalah memahami dahulu konsep pemrograman berorientasi objek.
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 bagaimana 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.
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 elektronik. Karena adanya bermacam tipe mikroprosesor, maka dibutuhkan sebuah bahasa pemrograman yang dapat berjalan di semua mikroprosesor.
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 formal 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,
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 komputer 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 kompilasi 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 terjemahan 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 sendirisendiri 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 dikompilasi dulu menjadi bytecode. Setelah itu diintepretasikan dari Java bytecode oleh JVM menjadi native code sehingga dimengerti 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 berbeda. Mulai dari PDA, handphone, komputer, hingga server. Dengan mesin hardware yang berbeda dan sistem operasi berbeda, Java tetap dapat digunakan. Asalkan sudah mendukung 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 mendefinisikan 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 kompilasi 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 berfungsi untuk menghitung luas berdasarkan nilai yang dimasukkan 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 perhitungan 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 bersama 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 ditandai 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.
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 {
. . .
}
Jangan lupa mampir ke blogku :)
BalasHapusyulitasi14.blogspot.com
king of fun casino games - Shootercasino
BalasHapusking of 온카지노 fun casino games. Join and claim your welcome bonuses! Play 바카라 King 제왕 카지노 of Fun at ShootingCasino! This fun casino online casino offers