Nanik Tolaram

dokumen-dokumen yang mirip
Modul ini mengenalkan Anda konsep dasar mengenai Java generic types.

Ginanjar Utama Workbench Tempat Bekerja

Algoritma Pemrograman [BS204]

Bab 8. Dasar-Dasar OOP

Dasar-Dasar OOP di Java

Generics. Prepared by Viska Mutiawani. 1

BEKERJA DENGAN JAVA CLASS LIBRARY

Tutorial Web Service JAX-WS Konverter Suhu dengan NetBeans

Jobsheet 09. Overloading and Overriding Method

1. Manakah jawaban yang benar,pada saat Anda mengcompile dan menjalankan class berikut ini:

M.Octaviano Pratama

Inheritance (Pewarisan) Pengertian dasar inheritance

Dasar-Dasar OOP di Java

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK (JAVA) PERTEMUAN 1 PENGENALAN LINGKUNGAN PEMROGRAMAN JAVA

Apa yang menjadi output potongan kode diatas? Error karena tidak ada String yang di-passing kedalam konstruktor Bapak

Pengenalan OOP. Object-Oriented programming (OOP) Menitikberatkan pada konsep object sebagai elemen dasar dari program.

Encapsulation (Encapsulasi) Minggu 5 Pemrograman Berorientasi Objek Alfa Faridh Suni

Bahasa Pemrograman 2.

Asynchronous Programming (Async dan Await) pada C# 6.0

Annotation. Prepared by Viska Mutiawani.

PERTEMUAN III OBJEK DAN CLASS TUJUAN PRAKTIKUM

29 Februari Introduction Of Java

Mudafiq R. Pratama

Pengenalan JavaScript

Inheritance dan Kata Kunci static

IKG2I4 / Software Project I

1. Keyword mana yang memiliki fungsi sama dengan keyword this dan menyediakan reference ke atribut turunan dari objek? super

Mudafiq R. Pratama

PAKET (PACKAGE) 20 Januari 2012

Sekarang, kita akan mencoba untuk menganalisa program Java pertama : public class Hello {

9/26/2011. Tujuan. Bekerja dengan Java Class Library. Pengenalan OOP. Pengenalan OOP. Class dan Object. Enkapsulasi

Pendahuluan Dasar Pemrograman Java

INTERAKSI ANTAR OBJECT

Belajar ArrayList di Java

PRAKTIKUM 3 KONSTRUKTOR DAN OVERLOADING

Pemrograman Lanjut. Instance Variable Access Modifier Set dan Get Method

Pemrograman Lanjut. Class : Deeper Look 2

TPI4202 e-tp.ub.ac.id

BAB IV HASIL PENELITIAN DAN PENERAPAN

Pertemuan 2 (2) : Membuat Class dan mengakses Anggota Class

Praktikum Pemograman Berorientasi Objek

BAHASA PEMROGRAMAN JAVA

Tabel 1. Instruksi untuk menampilkan teks No. Bahasa Pemrograman Instruksi 1. Pascal WRITE ( Bahasa pemrograman itu mudah );

Krisna D. Octovhiana. 1.1 Mengenal Struktur Kontrol.

Cara Membaca File Text di JAVA

Michael Lionardi

Beberapa fitur fitur yang tersedia pada Windows CE pada kegiatan sehari hari seperti :

Modul Praktikum 4 Pemograman Berorientasi Objek

PRAKTIKUM 6 EXCEPTION

Pemrograman Berbasis Objek. Politeknik Elektronika Negeri Surabaya

JAVA PADA NETBEANS IDE 7.4 ASRI WIDYADHARI KOM E 13

Pemrograman Lanjut Jurusan S1 Teknik Informatika. 9/17/2012 Ratno

PENGENALAN BAHASA PEMROGRAMAN JAVA

Modul II Object Oriented Programming

GENERICS. Yuliana Setiowati. Politeknik Elektronika Negeri Surabaya. Topik

JAVA FUNDAMENTAL ATURAN PERKULIAHAN SILABUS

Class & Object 2 ~Praktikum~ Imam Fahrur Rozi

INTRODUCTION JAVA NORHIKMAH,M.KOM

MODUL III ARRAYLIST TUGAS PENDAHULUAN

LAB02 : KODING PROGRAM

SUMBER BELAJAR PENUNJANG PLPG

Polymorphism. Materi ke-8 Pemrograman Berbasis Objek

Function Template Pertama - tama mari kita membahas tentang function template.untuk itu marilah kita perhatikan contoh berikut.

PERTEMUAN 2 PEMOGRAMAN BERORIENTASI OBJEK L/O/G/O

Praktikum. PBO (Kelas K) Oleh : MOHAMMAD SHOLIKIN

Konsep Pemrograman Berorientasi Obyek. Maria Ulfah S Nurochman

Pemrograman Jaringan 12 CORBA

Pengenalan JAVA. Farhat, ST., MMSI., MSc

KOTLIN, SIAPA SUKA. Dasar. P. Tamami BPPKAD Kab. Brebes

MODUL PRAKTIKUM KE 1

MODUL 1 PENGENALAN OOP

MODUL PRAKTIKUM DASAR-DASAR PEMROGRAMAN

PRAKTIKUM OBJECT ORIENTED PROGRAMING

Krisna D. Octovhiana. 1.1 Apa itu Operator?

PEMROGRAMAN BERORIENTASI OBJEK

BAB X. Struct Dalam C++, kita dapat membuat sebuah tipe data baru. Maka penulisan variabel baru kita akan menjadi:

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

KOLEKSI OBJECT. Farah Zakiyah Rahmanti, M.T Universitas Dian Nuswantoro

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK TIS243

Nama : Julian Chandra W Telp :

IMPLEMENTASI STRUKTUR DATA LIST, QUEUE DAN STACK DALAM JAVA

Membuat dan Menggunakan Class

Tutorial Compiler Bahasa-C Dengan Anjuta IDE

PRAKTIKUM 3 KONSTRUKTOR DAN OVERLOADING

Modul Praktikum 1 Pemograman Berorientasi Objek

JAVA BASIC PROGRAMMING Joobshet

Dasar Pemrograman Java

LAPORAN PERCOBAAN V ( APLIKASI NILAI MAHASISWA) BERBASIS JAVA

BAB II TEORI DAN KONSEP PEMROGRAMAN BERBASIS OBJECT

Grouping Object. Viska Mutiawani, M.Sc

INTRODUCTION TO JAVA

Tutorial FDM Nurul Huda 2008, bundled by samsonasik. Modul Java 1

LAPORAN PERCOBAAN IV PEMBUATAN CALCULATOR ( MENGHITUNG GAJI KARYAWAN DAN TUNJANGANNYA) BERBASIS JAVA

BAB 7 STATIC IMPORTS. Java 5 Tiger, Cornelius Koo Published by Elex Media Komputindo

Definisi Eksepsi (exception)

Variabel dengan tipe dasar hanya dapat menyimpan sebuah nilai

PEMROGRAMAN JAVA : VARIABEL DAN TIPE DATA

Pemrograman Lanjut Class, Instance Variable dan Method PTIIK

IKG2I4 / Software Project I

Transkripsi:

Mengenal JAVA Generics dalam JAVA 1.5 ( Tiger ) Nanik Tolaram nanikjava@yahoo.com Lisensi Dokumen: Seluruh dokumen di IlmuKomputer.Com dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari IlmuKomputer.Com. Java programming language dengan codename "Tiger" merupakan versi yang akan dirilis oleh SUN Microsystem tahun ini. Visi daripada versi dari "Tiger" ini adalah untuk memberikan kemudahan dalam programming, performance, desktop client dan skalabilitas. Meskipun versi ini belum direlease namun sudah tersedia "early access" daripada fitur-fitur yang akan didapatkan dalam versi tersebut. Salah satu fitur yang akan kita bahas dalam versi 1.5 adalah implementasi daripada JSR yaitu JSR014 (Public Draft 2.0, June 2003), spesifikasi daripada fitur tersebut bisa didownload di http://www.jcp.org/en/jsr/detail?id=014. Mengapa fitur ini diperlukan? karena kita ketahui bahwa pemrograman dengan Java kita banyak berinteraksi dengan object dan kita memerlukan tempat untuk menyimpan object-object tersebut ke sebuah container seperti Collection, List, ArrayList, dll, dan sudah barang tentu dengan menggunakan Collection objects kita pasti melakukan casting (downcasting) untuk object yang kita akan ambil dari Collection, dan ini menjadi error-prone karena tidak ada jaminan bahwa object yang akan kita retrieve tersebut adalah object yang kita inginkan. Disinilah apa yang sering kita lihat dengan ClassCastException error. Kita akan membahas komponen-komponen daripada Generics tersebut dan disebutkan dibawah ini, 1. Generics - Memberikan type safety checking untuk collections untuk menghapus supaya tidak perlu lagi menggunakan class casting untuk pengambilan object. 2. Enhanced for loop - for loop iterator yang memudahkan untuk meiterate sebuah collection tanpa harus melakukan casting dan tanpa menggunakan object Iterator 3. Autoboxing/unboxing - Menghapus konversi secara manual dari tipe primitive (int) ke tipe object (Integer) 4. Typesafe Enums - Memberikan fasilitas Typesafe Enum pattern 5. Static import - Mengimport class yang mempunyai method static tanpa harus menggunakan full class name pada saat memanggil method yang diinginkan 6. Metadata - Memberikan kemudahan dalam membuat code yang sering digunakan dengan menggunakan tag, ini juga disebut dengan "declarative" programming style, dimana code- 1

code yang sering dipakai akan digenerate oleh compiler tanpa kita harus menulis code. Cara ini biasa digunakan oleh tools seperti Xdocklet http://xdoclet.sourceforge.net/). Untuk memasyarakatkan versi "Tiger" ini, Sun Microsystem, mengeluarkan prototype untuk JSR014 untuk digunakan dengan JDK versi yang tersedia yaitu versi 1.4. Pada saat artikel ini ditulis, versi JDK yang dipakai adalah JDK1.4.2 namun versi JDK1.4 pun bisa dipakai. JAR files yang diperlukan dapat didownload di website Sun, yaitu http://developer.java.sun.com/developer/earlyaccess/adding_generics/. Download file tersebut dan extract filenya, lalu tempatkan file collect.jar dan gjc-rt.jar ke dalam directory <JDK>\jre\lib (sebagai contoh kalau anda punya JDK ada di directory D:\JDK1.4, maka file tersebut dicopy ke dalam directory D:\JDK1.4\JRE\LIB. Ikuti langkah-langkah dibawah ini untuk mempersiapkan environment anda supaya dapat memakai fasilitas Generics tersebut. Dalam artikel ini file yang didownload diunzip ke dalam directory E:\adding_generics-2_2-ea, 1. Buka file java.bat dan javac.bat yang ada di dalam directory scripts, dan tambahkan script dibawah ini di baris paling pertama set J2SE14=e:\jdk1.4 set JSR14DISTR=%J2SE14%\jre\lib Path yang diset diatas harap disesuaikan dengan yang ada di PC anda. 2. Masukkan path ke dalam environment variable PATH anda dengan cara sebagai berikut, set PATH=%PATH%;E:\adding_generics-2_2-ea\scripts Untuk mecompile program, anda cukup menjalankan javac.bat disertakan nama file anda dan untuk menjalankannya anda menggunakan java.bar. Generics Kegunaan dari Generics adalah untuk mencegah terjadinya error seperti ClassCastException pada saat kita menggunakan object yang disimpan dalam sebuah Collection object, sebagai contoh kita ambil cara yang biasa kita lakukan pada sehari-hari kita coding menggunakan Collection, public void iteratecollection(collection coll) for (Iterator i=c.iterator(); i.hasnext();) String str = (String) i.next(); dan kalau kita pakai Generics, public void iteratecollection(collection<string> coll) for (Iterator<String> i=c.iterator(); i.hasnext();) 2

String str = i.next(); Jika kita lihat pada saat kita menggunakan Collection seperti biasa kalau salah satu element di dalam Collection tersebut bukan object String maka anda akan mendapatkan error pada saat runtime, tetapi pada saat kompilasi anda tidak akan mendapatkan error, namun jika anda menggunakan Generics anda akan mendapatkan error pada saat kompilasi, ini karena kita sudah memberitahu kepada compiler bahwa Collection yang akan diterima harus berisikan object String, dan jika kalau bukan, maka akan error. Enhanced for Loop Setiap kali kita meggunakan Collection object kita secara otomatis kebanyakan akan memakai Iterator untuk mengiterate dan mengambil element yang tersimpan di dalam Collection object tersebut, dan setelah itu kita harus mencast object yang didapatkan ke dalam object yang kita inginkan, belum kalau kita salah mencast object tersebut, maka terjadilah error. Dengan cara lama kita biasa melakukan iterasi seperti dibawah ini, public void iteratecollection(collection coll) for (Iterator i=c.iterator(); i.hasnext();) String str = (String) i.next(); dengan menggunakan enhanced for loop kita mengiterasi dengan cara, public void iteratecollection(collection coll) for (String str : coll) jumlah baris yang kita harus maintain dalam program kita akan jauh lebih sedikit dan juga lebih gampang dibaca dengan menggunakan enhanced for loop ini. Autoboxing/Unboxing Tipe primitive seperti int tidak dapat disimpan ke dalam Collection, container tanpa harus melalui konversi ke wrapper classnya yaitu Integer. Dalam versi 1.5, kita tidak perlu melakukan konversi, hanya cukup deklarasikan apa yang akan diterima oleh Collection. Dibawah ini contoh dengan cara lama, class TestAutoBoxing Hashtable h = new Hashtable(); int j = 2; 3

h.put(new Integer(j), "value"); cara baru kita menggunakan sebagai berikut, class TestAutoBoxing Hashtable<Integer, String> h = new Hashtable<Integer, String>(); int j = 2; h.put(j, "value"); seperti kita lihat, kita tidak perlu melakukan konversi yang kita perlukan, compiler secara otomatis akan melakukannya sendiri. Tipe wrapper class (Integer, dll) bisa dipakai untuk deklarasi object yang akan disimpan di dalam Hashtable, tidak dapat menggunakan tipe primitive seperti int, Hashtable<Integer, String> h = new Hashtable<Integer, String>(); [ Diperbolehkan ] Hashtable<int String> h = new Hashtable<int, String>(); [ Tidak diperbolehkan ] Typesafe Enums Typesafe enum memberikan fasilitas linguistic untuk Typesafe Enum pattern. Caranya mirip dengan bagaimana kita deklarasi enum di C/C++. Pada versi JAVA sekarang ini, kita membuat enum dengan menggunakan pattern dengan cara sebagai berikut (menggunakan Typesafe Enum pattern) public class CoinRupiahEnum private final int coin; private CoinRupiahEnum (int coin) this.coin = coin; public String tostring() return "" + coin; public static final CoinRupiahEnum LIMAPULUH = new CoinRupiahEnum (50); public static final CoinRupiahEnum DUAPULUHLIMA = new CoinRupiahEnum(25); public static final CoinRupiahEnum SERATUS = new CoinRupiahEnum (100); dan class CoinRupiahEnum tersebut dapat kita pakai dari class lain dengan CoinRupiahEnum.LIMAPULUH. Dalam Tiger kita membuat enum dengan cara public enum CoinRupiahEnum 4

LIMAPULUH(50), DUAPULUHLIMA(25), SERATUS(100); CoinRupiahEnum (int Coin) this. Coin= Coin; private final int Coin; public int Coin() return Coin; Kalau kita bandingkan lebih mudah dan lebih praktis kalau kita gunakan Typesafe Enum di Java 1.5 Static Import Pada umumnya pada saat kita ingin menggunakan static method atau variable dalam suatu class kita menggunakan cara Sebagai contoh, <fully qualified class name>.<method/variable> package Test.Static; public class TestStatic public static void printme() System.out.println( Print Me ); Static method kita dalam package Test.Static public class MainStatic Test.Static.TestStatic.printMe(); Class yang akan memakai static method di package Test.Static Kita rubah supaya memakai Static Import dengan cara sebagai berikut, package tiger; public class TestStatic public static void printme() System.out.println("Print Me"); Static method kita dalam package tiger import static tiger.teststatic.*; public class MainStatic_1_5 Class yang akan memakai static method di class tiger.teststatic 5

printme(); Jadi kita bisa lihat, kita tidak perlu menuliskan tiger.teststatic.printme() untuk memanggil method kita, hanya printme() saja sudah cukup. Metadata Dalam prototype yang didownload belum tersedia fasilitas Metadata ini, mungkin di release berikutnya akan diikutsertakan. Metadata membantu developer supaya tidak perlu melakukan coding untuk code-code yang dianggap sebagai boilerplate code. Kita ambil contoh di bawah ini import javax.xml.rpc.*; public class CoffeeOrder @Remote public Coffee [] getpricelist()... @Remote public String ordercoffee(string name, int quantity)... Dengan menggunakan code annotations @Remote secara otomatis tools akan mengenerate class yang akan dipakai oleh class CoffeeOrder diatas tersebut 6