Generic Class · •Contoh •Penggunaan fungsi add pada linkedlist •Fungsi add and dequeuer/pop...

24
Generic Class Brigida Arie Minartiningtyas, M.Kom.

Transcript of Generic Class · •Contoh •Penggunaan fungsi add pada linkedlist •Fungsi add and dequeuer/pop...

Page 1: Generic Class · •Contoh •Penggunaan fungsi add pada linkedlist •Fungsi add and dequeuer/pop pada stack dan queue. NON GENERIC CLASS. Sembarang object dapat dimasukkan karena

Generic ClassBrigida Arie Minartiningtyas, M.Kom.

Page 2: Generic Class · •Contoh •Penggunaan fungsi add pada linkedlist •Fungsi add and dequeuer/pop pada stack dan queue. NON GENERIC CLASS. Sembarang object dapat dimasukkan karena

Generic

• Tipe generic adalah sebuah kelas generic yang bisa digunakan dalam tipe data apasaja.

• Kita bisa mendefinisikan suatu parameter/variabel baik dalam kelas maupun fungsidengan tipe data yang bersifat umum atau tidak terikat hanya pada satu tipe data saja.

• Contoh terikat pada satu tipe data:• Private String Nama;

• Private int umur;• Pravate float IP;

• String getTheMostclosetoIP(float IP);

• Generic merupakan cara Java dalam melakukan generalisasi terhadap tipe data tanpamengurangi kemampuan Java dalam menjaga keamanan penggunaan tipe data

Page 3: Generic Class · •Contoh •Penggunaan fungsi add pada linkedlist •Fungsi add and dequeuer/pop pada stack dan queue. NON GENERIC CLASS. Sembarang object dapat dimasukkan karena

Kegunaan Generic Type

• Prinsip REUSE lah yang ingin digunakan.

• Digunakan agar tidak melakukan code duplication hanya karena tipedata yang berbeda saja

• Contoh• Penggunaan fungsi add pada linkedlist

• Fungsi add and dequeuer/pop pada stack dan queue

Page 4: Generic Class · •Contoh •Penggunaan fungsi add pada linkedlist •Fungsi add and dequeuer/pop pada stack dan queue. NON GENERIC CLASS. Sembarang object dapat dimasukkan karena

NON GENERIC CLASS

Page 5: Generic Class · •Contoh •Penggunaan fungsi add pada linkedlist •Fungsi add and dequeuer/pop pada stack dan queue. NON GENERIC CLASS. Sembarang object dapat dimasukkan karena

Sembarang object dapat dimasukkan karenaparameter pada method add adalah Class Object

Tapi pada saat mengambil object tersebut harusdiubah sesuai dengan tipe dari object tersebut

integerBox diberikanobject Integer

Pada saat mengambil harusdiubah menjadi Integer

Contoh 1

Page 6: Generic Class · •Contoh •Penggunaan fungsi add pada linkedlist •Fungsi add and dequeuer/pop pada stack dan queue. NON GENERIC CLASS. Sembarang object dapat dimasukkan karena

Pada object IntegerBox dimasukkanobject 10 tapi dengan tipe String,

Tapi pada saat mengambil object, diubah menjadi tipe Integer.

Tipe data tidak sesuai sehingga error

Contoh 1

Page 7: Generic Class · •Contoh •Penggunaan fungsi add pada linkedlist •Fungsi add and dequeuer/pop pada stack dan queue. NON GENERIC CLASS. Sembarang object dapat dimasukkan karena

Apa yang menyebabkan Error??

Contoh 2

Page 8: Generic Class · •Contoh •Penggunaan fungsi add pada linkedlist •Fungsi add and dequeuer/pop pada stack dan queue. NON GENERIC CLASS. Sembarang object dapat dimasukkan karena

Tipe data tidak sesuai sehinggamenyebabkan terjadinya exception

Terjadi exception karena pada object strObdimasukkan object 10 tapi dengan tipe String

Tapi pada saat mengambil object, diubah menjadi tipe Integer

Contoh 2

Page 9: Generic Class · •Contoh •Penggunaan fungsi add pada linkedlist •Fungsi add and dequeuer/pop pada stack dan queue. NON GENERIC CLASS. Sembarang object dapat dimasukkan karena

Permasalahan?

• No homogeneous collections – memerlukan banyak casting

• Tidak ada pengecekan pada saat kompile, kesalahan baru bisaterdeteksi pada saat runtime.

Page 10: Generic Class · •Contoh •Penggunaan fungsi add pada linkedlist •Fungsi add and dequeuer/pop pada stack dan queue. NON GENERIC CLASS. Sembarang object dapat dimasukkan karena

GENERIC CLASS

Page 11: Generic Class · •Contoh •Penggunaan fungsi add pada linkedlist •Fungsi add and dequeuer/pop pada stack dan queue. NON GENERIC CLASS. Sembarang object dapat dimasukkan karena

Cara Mendeklarasikan Class Generic

Ubah class Box Non Generics menjadi class Box Generic.

Pendeklarasian type generics dengan mengubahpublic class Box() menjadi public class Box <T>

• T biasanya disebut parameter type formal (formal type parameter)

• T adalah type parameter yang akan diganti dengan tipesebenarnya (Type dari T bisa berupa class, interface atautipe variabel lainnya).

• T adalah nama dari type parameter

Page 12: Generic Class · •Contoh •Penggunaan fungsi add pada linkedlist •Fungsi add and dequeuer/pop pada stack dan queue. NON GENERIC CLASS. Sembarang object dapat dimasukkan karena

Objek iOb adalah objek dari class Generic, menggunakan tipe data Integer

sehingga pada saat mengambil objek menggunakanfungsi get(), tidak perlu proses casting

T yang ada didefinisikan sebagai tipe data yang tipe nyadiserahkan pada kelas lain yang akan membentuknya

Contoh 1

Page 13: Generic Class · •Contoh •Penggunaan fungsi add pada linkedlist •Fungsi add and dequeuer/pop pada stack dan queue. NON GENERIC CLASS. Sembarang object dapat dimasukkan karena

Tidak perlu proses casting pada saat menggunakan fungsi get().

Contoh 2

Page 14: Generic Class · •Contoh •Penggunaan fungsi add pada linkedlist •Fungsi add and dequeuer/pop pada stack dan queue. NON GENERIC CLASS. Sembarang object dapat dimasukkan karena

Jika menambahkan ke box dengan tipe yang tidak sesuai (misal : String) maka pada saat di kompile akan mengalami error

Contoh 2

Page 15: Generic Class · •Contoh •Penggunaan fungsi add pada linkedlist •Fungsi add and dequeuer/pop pada stack dan queue. NON GENERIC CLASS. Sembarang object dapat dimasukkan karena

Aturan Penamaan Type Parameter

Nama type parameter biasanya satu huruf dan huruf besar.

Gunakan tanda < > setelah nama kelas untuk mendefinisikan tipe data yang akan dipakai

Gunakan tipe data parameter yang didefinisikan pada tanda tersebut untuk menjadi tipe data baru

Jenis nama tipe parameter yang sering digunakan :

• E - Element (biasanya digunakan untuk Collection Framework)

• K – Key

• N – Number

• T – Type

• V - Value

• S,U,V dll. - 2nd, 3rd, 4th types

Page 16: Generic Class · •Contoh •Penggunaan fungsi add pada linkedlist •Fungsi add and dequeuer/pop pada stack dan queue. NON GENERIC CLASS. Sembarang object dapat dimasukkan karena

Apa outputnya???

Page 17: Generic Class · •Contoh •Penggunaan fungsi add pada linkedlist •Fungsi add and dequeuer/pop pada stack dan queue. NON GENERIC CLASS. Sembarang object dapat dimasukkan karena

Outputnya…

Page 18: Generic Class · •Contoh •Penggunaan fungsi add pada linkedlist •Fungsi add and dequeuer/pop pada stack dan queue. NON GENERIC CLASS. Sembarang object dapat dimasukkan karena

GENERIC CLASS DENGAN 2 PARAMETER

Page 19: Generic Class · •Contoh •Penggunaan fungsi add pada linkedlist •Fungsi add and dequeuer/pop pada stack dan queue. NON GENERIC CLASS. Sembarang object dapat dimasukkan karena

Apa outputnya???

Contoh 1

Page 20: Generic Class · •Contoh •Penggunaan fungsi add pada linkedlist •Fungsi add and dequeuer/pop pada stack dan queue. NON GENERIC CLASS. Sembarang object dapat dimasukkan karena

Outputnya…

Contoh 1

Page 21: Generic Class · •Contoh •Penggunaan fungsi add pada linkedlist •Fungsi add and dequeuer/pop pada stack dan queue. NON GENERIC CLASS. Sembarang object dapat dimasukkan karena

Cara membuat objek

Pair <Integer, String> p = new Pair <> (1, "A");

Contoh 2

Page 22: Generic Class · •Contoh •Penggunaan fungsi add pada linkedlist •Fungsi add and dequeuer/pop pada stack dan queue. NON GENERIC CLASS. Sembarang object dapat dimasukkan karena

Soal 1

Page 23: Generic Class · •Contoh •Penggunaan fungsi add pada linkedlist •Fungsi add and dequeuer/pop pada stack dan queue. NON GENERIC CLASS. Sembarang object dapat dimasukkan karena

Soal 2

Page 24: Generic Class · •Contoh •Penggunaan fungsi add pada linkedlist •Fungsi add and dequeuer/pop pada stack dan queue. NON GENERIC CLASS. Sembarang object dapat dimasukkan karena

Soal 3