generic class · •contoh •penggunaan fungsi add pada linkedlist •fungsi add and dequeuer/pop...
TRANSCRIPT
![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](https://reader031.vdocuments.net/reader031/viewer/2022013011/60846fd193c151471e24e2cc/html5/thumbnails/1.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022013011/60846fd193c151471e24e2cc/html5/thumbnails/2.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022013011/60846fd193c151471e24e2cc/html5/thumbnails/3.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022013011/60846fd193c151471e24e2cc/html5/thumbnails/4.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022013011/60846fd193c151471e24e2cc/html5/thumbnails/5.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022013011/60846fd193c151471e24e2cc/html5/thumbnails/6.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022013011/60846fd193c151471e24e2cc/html5/thumbnails/7.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022013011/60846fd193c151471e24e2cc/html5/thumbnails/8.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022013011/60846fd193c151471e24e2cc/html5/thumbnails/9.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022013011/60846fd193c151471e24e2cc/html5/thumbnails/10.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022013011/60846fd193c151471e24e2cc/html5/thumbnails/11.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022013011/60846fd193c151471e24e2cc/html5/thumbnails/12.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022013011/60846fd193c151471e24e2cc/html5/thumbnails/13.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022013011/60846fd193c151471e24e2cc/html5/thumbnails/14.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022013011/60846fd193c151471e24e2cc/html5/thumbnails/15.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022013011/60846fd193c151471e24e2cc/html5/thumbnails/16.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022013011/60846fd193c151471e24e2cc/html5/thumbnails/17.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022013011/60846fd193c151471e24e2cc/html5/thumbnails/18.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022013011/60846fd193c151471e24e2cc/html5/thumbnails/19.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022013011/60846fd193c151471e24e2cc/html5/thumbnails/20.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022013011/60846fd193c151471e24e2cc/html5/thumbnails/21.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022013011/60846fd193c151471e24e2cc/html5/thumbnails/22.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022013011/60846fd193c151471e24e2cc/html5/thumbnails/23.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022013011/60846fd193c151471e24e2cc/html5/thumbnails/24.jpg)
Soal 3