Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Diakhir perkuliahan diharapkan mahasiswa dapat mampu: Memahami konsep generik (generic) Menggunakan beberapa kelas generik dalam bahasa pemrograman Java.

Presentasi serupa


Presentasi berjudul: "Diakhir perkuliahan diharapkan mahasiswa dapat mampu: Memahami konsep generik (generic) Menggunakan beberapa kelas generik dalam bahasa pemrograman Java."— Transcript presentasi:

1

2 Diakhir perkuliahan diharapkan mahasiswa dapat mampu: Memahami konsep generik (generic) Menggunakan beberapa kelas generik dalam bahasa pemrograman Java (Collection API) Membuat implementasi kelas generik

3 Generic programming adalah salah satu cara pembuatan class dan method yang dapat digunakan untuk semua jenis tipe data, sehingga penggunaannya lebih fleksibel dan tidak kaku terhadap satu jenis tipe data saja, dimana dalam hal ini java adalah salah satu bahasa pemrograman yang sudah mensupportnya. Contoh apabila terdapat metode void print(int a), hanya akan bekerja pada tipe data integer. Bila dibutuhkan metode tersebut untuk tipe data String, float, char atau bahkan references type, maka apakah perlu membuat metode serupa untuk beberapa tipe data berbeda. Tentu saja tidak diperlukan, karena dengan generic programming hanaya dengan menggunakan sebuah metode dapat dipergunakan untuk berbagai macam tipe data.

4 Perhatikan Contoh Program berikut:

5 Singkatnya, pemrograman generik memungkinkan tipe data (kelas dan interface) menjadi parameter ketika mendefinisikan kelas, interface dan metode. Sama seperti parameter formal yang digunakan dalam deklarasi metode, tipe parameter menyediakan cara untuk kembali menggunakan metode yang sama dengan input yang berbeda. Perbedaannya adalah bahwa masukan untuk parameter formal adalah nilai data, sedangkan input untuk tipe parameter adalah tipe data.

6 Pemeriksaan tipe data lebih kuat/baik di saat kompilasi. – Kompiler Java melakukan pemeriksaan tipe data lebih ketat pada kode program generik. Memperbaiki kesalahan saat kompilasi lebih mudah daripada memperbaiki kesalahan saat runtime, karena lebih sulit menemukan kesalahan. Dapat menghilangkan penulisan casting. – Potongan kode berikut berikut tanpa menggunakan pemrograman generik memerlukan casting: – Ditulis ulang menggunakan pemrograman generik, kode tidak memerlukan casting sbb.: List list = new ArrayList(); list.add("hello"); String s = (String) list.get(0); List list = new ArrayList (); list.add("hello"); String s = list.get(0); // no cast

7 Memungkinkan programmer untuk mengimplementasikan algoritma generik. – Dengan algoritma generik yang bekerja pada koleksi berbagai tipe data, dapat disesuaikan, dan merupakan tipe yang aman dan lebih mudah dibaca. Dapat menghilangkan penulisan casting.

8 Sebuah tipe generik adalah kelas atau interface generik yang dipergunakan sebagai parameter untuk berbagai tipe data. – Kelas Box berikut akan dimodifikasi untuk memperlihatkan konsep tentang tipe generik. public class Box { private Object object; public void set(Object object) { this.object = object; } public Object get() { return object; } public class Box { // T stands for "Type" private T t; public void set(T t) { this.t = t; } public T get() { return t; }

9 Sebuah kelas generik didefinisikan dengan format sebagai berikut: class nama { /*... */ } Bagian tipe parameter dibatasi oleh kurung sudut (<>), mengikuti nama kelas. Ini menentukan jenis parameter (juga disebut tipe variabel) T1, T2,..., dan Tn. Semua Obyek digantikan oleh T. Tipe variabel dapat berupa tipe data non-primitif, seperti: kelas, interface, array, atau bahkan tipe variabel lain. Teknik yang sama dapat diterapkan pada interface generik.

10 Konvensi penamaan tipe parameter generik adalah menggunakan huruf besar tunggal. Bertolak belakang dengan konvensi penamaan variabel. Tanpa penggunaan konvensi ini, akan sulit untuk membedakan antara tipe generik dan non- generik. Penamaan tipe parameter yang paling sering digunakan adalah: – E - Element (digunakan secara luas oleh framework Collections dari Java) – K - Key – N - Number – T - Type – V - Value – S,U,V etc. - 2nd, 3rd, 4th types Penamaan di atas digunakan di seluruh API Java SE.

11 Mengacu pada kelas Box generik di atas, pemanggilan tipe generik, dapat dilakukan dengan cara menggantikan T dengan beberapa tipe yang konkret, seperti Integer, dsb. Box integerBox; pemanggilan tipe generik tampak mirip dengan pemanggilan metode biasa, tapi bukan melalui pengiriman argumen pada sebuah metode, melainkan mengirimkan tipe argumen. Pada kelas Box di atas berupa tipe kelas Integer. Terminologi Tipe Parameter dan Tipe Argumen: “tipe parameter" dan "tipe argumen" seringkali dianggap sama, padahal sebenarnya tidak sama. – T di Foo adalah tipe parameter – String di Foo f adalah tipe argumen.

12 Seperti pada deklarasi variabel lain, kode program di atas tidak benar-benar membuat objek Box baru. Ini hanya menyatakan bahwa integerBox akan memegang referensi ke sebuah "Box of Integer", yang menyatakan bagaimana Box dibaca. Pemanggilan sebuah tipe generik umumnya disebut sebagai tipe parameter. Untuk instantiasi kelas ini, gunakan kata kunci new, kemudian tempatkan antara nama kelas dan tanda kurung: Box integerBox = new Box ();

13 Kelas generik dapat memiliki beberapa tipe parameter. Sebagai contoh, kelas OrderedPair generik berikut, yang meng implementasikan interface Pair generik: public interface Pair { public K getKey(); public V getValue(); } public class OrderedPair implements Pair { private K key; private V value; public OrderedPair(K key, V value) { this.key = key; this.value = value; } public K getKey() { return key; } public V getValue() { return value; } }

14 Pernyataan berikut membuat dua instansiasi dari kelas OrderedPair: Pernyataan new OrderedPair, menginstansiasi K sebagai sebuah String and V sebagai sebuah Integer. Karena itu, tipe parameter dari konstruktor OrderedPair adalah String dan Integer. Pembuatan interface generik, mengikuti konvensi yang sama seperti pada pembuatan kelas generik. Pair p1 = new OrderedPair ("Even", 8); Pair p2 = new OrderedPair ("hello", "world");

15 Tipe parameter (seperti, K atau V) dapat disubsitusi dengan tipe parameter (seperti, List ). Misalnya, dengan menggunakan contoh pada OrderedPair : OrderedPair > p = new OrderedPair<>("primes", new Box (...)) OrderedPair > p = new OrderedPair<>("primes", new Box (...));

16 Raw types banyak muncul dalam kode pewarisan karena banyak kelas API (seperti kelas Collection) bukan kelas generik sebelum JDK 5.0. Bila menggunakan raw types, pada dasarnya akan mendapatkan perilaku pra-generik – Box memberikan banyak Objek. Untuk kompatibilitas, menetapkan tipe parameter untuk raw type diperbolehkan. Box stringBox = new Box<>(); Box rawBox = stringBox; // OK Tetapi jika anda menetapkan raw type pada tipe parameter, maka akan mendapatkan peringatan: Box rawBox = new Box(); // rawBox is a raw type of Box Box intBox = rawBox; // warning: unchecked conversion OrderedPair > p = new OrderedPair<>("primes", new Box (...));

17 Peringatan juga akan diberikan jika menggunakan raw type untuk memanggil metode generik yang didefinisikan dalam tipe generik yang sesuai: Box stringBox = new Box<>(); Box rawBox = stringBox; rawBox.set(8); // warning: unchecked invocation // to set(T) Peringatan tersebut menunjukkan bahwa raw type mengabaikan pemeriksaan tipe generik, akan terjadi penundaaan penangkapan kesalahan kode saat runtime. Oleh karena itu, harus dihindari menggunakan raw types. OrderedPair > p = new OrderedPair<>("primes", new Box (...));


Download ppt "Diakhir perkuliahan diharapkan mahasiswa dapat mampu: Memahami konsep generik (generic) Menggunakan beberapa kelas generik dalam bahasa pemrograman Java."

Presentasi serupa


Iklan oleh Google