Tuesday, August 9, 2011

Enum java

Enum merupakan salah satu fitur dari J2SE versi 5. Enumeration adalah kumpulan nama-nama konstanta yang didefinisikan sebagai tipe data baru. Sebuah objek bertipe Enumeration dapat mengakses isi dari kumpulan nilai pada enumeration. Kalau saya menyebutnya sebagai array yg konstan nilainya karena enumeration ini seperti array namun perbedaanya adalah isi dari kumpulan enumeration bersifat tetap dan enumeration dalam pemrograman java disebut sebagai tipe dari kelas.
Di dunia nyata, kita banyak menemukan contoh nyata dari implementasi sebuah enumeration, seperti enumeration bulan tiap tahun. Untuk membentuk sebuah enumeration, kita cukup menuliskan seperti :
enum bln{
Januari, Februari, Maret, April, Mei,
Juni, Juli, Augustus, September, Oktober, November, Desember
}
Atau
enum Transport{
Mobil, Truck, Kapal, Kereta, Becak
}
Mobil, Kapal dan seterusnya adalah sebuah konstanta dari enumeration. Masing-masing dideklarasikan public jadi bisa diakses secara bebas oleh Transport. Lalu tipe data dari mobil, kapal dan seterusnya itu merupakan tipe nama enumeration yang dideklarasikan. Jadi mobil, kapal dan seterusnya merupakan tipe dari Transport. Oleh karena itu, konstanta enumeration disebut self-type, artinya merupakan tipe dirinya sendiri.
Saat kita ingin membuat variable bertipe enumeration, kita tidak perlu menuliskan dengan keyword new karena enumeration langsung berupa tipe dari sebuah kelas. Misalnya, saat kita mau membuat variable Tp bertipe enumeration dari Transport. Maka kita cukup menuliskan :
Transport Tp;
Secara otomatis Tp bertipe enum Transport dan langsung dapat mengakses isi dari enum Transport
Berikut ini adalah contoh enumeration.

Dari contoh program diatas, bila ingin mengakses isi dari enum, kita panggil dengan variable bertipe enum disertai titik dan isi dari enum yang diinginkan.
Tp = Transport.Mobil; // valid karena Tp bertipe enum Transport
Bahkan kita juga bisa menggunakannya pada kondisi switch-case ataupun kondisi if.
            Enumeration adalah tipe dari sebuah kelas, makanya, kita tidak harus menuliskan keyword new untuk menginisialisasikan sebuah variable yang bertipe enum. Di pemrograman java, enumeration memiliki kelebihan dari bahasa pemrograman lainya,seperti dapat diberi konstruktor, adanya method dls,
Enum memiliki method-method dan konstruktor.
Ada 2 method yang sering digunakan pada enumeration adalah method :
Values();
Method ini mengembalikan isi dari keseluruhan enumeration
ValueOf(String);
Method ini mengembalikan isi dari enumeration yang sesuai dengan parameter String.
Berikut ini adalah contoh program sederhananya untuk memudahkan kita memahami kedua method tersebut.



Keluaran :
Ini adalah isi dari enum Transport
dengan menggunakan method values()
Mobil
Truck
Kapal
Kereta
Becak
Kendaraan yang digunakan adalah Becak
Dari kode diatas, kamu pasti mudah memahaminya. aryTransport[] adalah variable array yang dibuat lalu diisi dari keseluruhan isi Transport dengan pemanggilan method values();.
Sudah mengerti mengenai kedua method diatas, sekarang saya coba jelaskan membuat konstruktor dan method buatan sendiri pada enumeration.
Isi constant dari sebuah enumeration contohnya Mobil, Kereta dan seterusnya adalah sebuah objek yang bertipe enumeration. Lalu sebuah enumeration dapat mendefinisikan konstruktor, menambahkan sebuah method dan variable tambahan. Ketika sebuah konstruktor dipanggil, maka konstruktor tersebut secara otomatis memanggil masing-masing constant dari enumeration yang dibuat. Tiap constant enumeration dapat memanggil method yang dibuat oleh enumeration. Berikut ini adalah contoh penggunaan enumeration dengan konstruktor, method tambahan dan penggunaan variable di enumeration.


Keluaran :
Kecepatan dari Mobil adalah 65
Kecepatan masing-masing kendaraan :
Mobil memiliki kecepatan 65
Truck memiliki kecepatan 45
Kapal memiliki kecepatan 120
Kereta memiliki kecepatan 80
Becak memiliki kecepatan 15
Dari kode diatas, hal penting yang mesti kita analisis adalah terdapat konstruktor
Transport(int s){
kec = s;
}
Secara otomatis, akan memanggil tiap konstan dari enum Transport. Yang harus diperhatikan dari konstrukor ini adalah terdapat semicolon yang mesti disisipi setelah akhir dari constant enum.
Mobil(65), Truck(45), Kapal(120), Kereta(80), Becak(15);
Method getKec(), adalah method mengembalikan nilai dari kecepatan dari tiap constant.
Untuk mengambil kecepatan dari salah satu constant enum, kita bisa menuliskan kode seperti kode diatas
Transport.Mobil.getKec();
Seperti itulah penggunaan konstruktor dan beberapa method dari enumeration.
Hal penting lagi yang kadang digunakan dalam penggunaan enumeration adalah penggunaan method compareTo(); dan ordinal();.
Untuk jelasnya mari lihat kode dibawah ini :




Keluaran :
Indeks dari tiap konstant enum Transport :
Mobil berindeks ke-0
Truck berindeks ke-1
Kapal berindeks ke-2
Kereta berindeks ke-3
Becak berindeks ke-4
index Truck lebih kecil dari index Kereta
index Kereta sama dengan index Kereta
Dari kode diatas, method ordinal() jelas sekali penggunaanya adalah mengetahui index dari constant enum, bila enum seperti
public enum Transport {
Mobil, Truck, Kapal, Kereta, Becak
}
Maka, mobil memiliki index 0, truck memiliki index 1 dan seterusnya.
Bila method compareTo(), adalah method untuk membandingkan index dari constant enum.
if(Tp.compareTo(Tp2) < 0)
Kaidahnya seperti ini, bila index Tp lebih kecil dari Tp2 maka menghasilkan nilai negative, bila Tp lebih besar dari Tp2 maka menghasilkan nilai positif dan bila Tp sama dengan Tp2 maka menghasilkan nilai 0.
Tp berisi constant Kereta sedangkan Tp2 berisi constant dari Truck. Kita tahu bahwa index dari kereta adalah 3 sedangkan Truck berindex 1. Lalu membandingkan, apakah 3 lebih kecil dari 1 atau lebih besar??? Ternyata 3 lebih besar dari 1, jadi menghasilkan nilai positif. Lalu nilai positif ini dibandingkan dengan
if(Tp.compareTo(Tp2) < 0)
if(positif < 0)??? False,
if(Tp.compareTo(Tp2) > 0)
if(positif > 0) ??? True,
enumeration tidak dapat mewarisi sebuah kelas lain, dan enumeration juga tidak dapat dijadikan superkelas.



No comments:

Post a Comment

Adsense