SlideShare ist ein Scribd-Unternehmen logo
1 von 24
Downloaden Sie, um offline zu lesen
Mukharil Bachtiar, Adam dan Nizamudin Fakhrul, Firman,
2018,
Penerbit Informatika,
Pemrograman berorientasi objek menggunakan java, 262 Halaman
• Cara pandang pemrograman yang memungkinkan seorang pembuat kelas menunda
pemberian tipe pada atribut & method
• Nama lain dari konsep “types-to-be-specified-later”
• Kelas yang dibuat bisa digunakan untuk tipe data yang berbeda
• Contoh :
Kedua jenis sample code ini adalah ilustrasi program untuk tipe data berbeda. Untuk setiap
tipe data yang berbeda kita harus membuat satu kelas tersendiri padahal kegunaannya sama.
• Untuk efisiensi desain kelas tersebut, kita dapat menggunakan konsep generic programming.
• Dapat diimplementasikan menjadi 2 konsep, yaitu :
1. Konsep tipe Object
2. Konsep tag generic <T>
• Object adalah kelas bawaan di Java sehingga bisa digunakan sebagai tipe dari atribut
maupun method tertentu.
• Kelas Object bisa dideklarasikan kembali menjadi kelas lain dimana didalam java sendiri
setiap tipe data itu dideskripsikan didalam sebuah kelas. (Cth : tipe data double adalah
objek dari kelas Double)
• Ide dasar nya adalah atribut dan method dideklarasikan menggunakan tipe object
sehingga nanti ketika ada objek yang ingin menggunakan atribut dan method di kelas
tersebut, objek tersebut tinggal mendeskripsikan ulang kelas tipe data yang diinginkan.
• Contoh Menukar nilai dua variabel :
• Terlihat tipe object
digantikan oleh tipe
String dan integer.
• Contoh Menukar nilai dua variabel :
• Terlihat dapat
mendeskripsikan nilai
dalam sebuah
variabel
• Tipe Object bisa didefinsikan dengan kelas tipe data, cth : Integer, String, Double
• Tipe ini tidak bisa didefinsikan dengan instance dari kelas tipe data, cth: int, double
• Kelemahan tipe object : kita bisa memasukkan nilai sembarang dengan tipe data yang
berbeda dan nilai tersebut dapat diganti dengan nilai lain yang memiliki tipe data yang
berbeda dengan sangat mudah.
• Objek dari kelas yang mengandung konsep object, tidak spesifik terhadap suatu jenis data
sehingga bisa menyebabkan kebingungan ketika menggunakannya.
• Untuk mengatasi hal tersebut kita dapat menggunakan konsep TAG GENERIC <E>.
• Tag ini diwakili oleh simbol <E> . Kita bisa mengganti huruf yang diapit oleh kedua kurung
siku tersebut.
• Konsep ini mengharuskan kita memilih satu dari sekian banyak tipe kelas data ketika
mendeklarasikann objek pada kelas yang mengandung tag generic.
• Perbedaan dari konsep sebelumnya adalah pada tipe dari atribut maupun method harus
disesuaikan dengan huruf yang diapit oleh kedua kurung siku tersebut.
• Contoh desain kelas dengan konsep tag generic :
E
• Pada kelas pertukaranNilai terdapat kotak putus-putus dengan hurup E didalmnya
• Simbol tersebut menunjukkan template parameter yang digunakan untuk
menggambarkan tag generic.
• Berikut adalah implementasi desain kelas tersebut kedalam coding
E
• Dari file Tester.Java tersebut dapat dilihat bahwa untuk setiap kelas tipe data terdapat satu
objek yang didedikasikan untuk mewakili kelas tipe data tersebut.
• Objek “tukarInteger” didedikasikan untuk mengurusi pertukaran nilai untuke kelas tipe data
“Integer”.
• Tag <T> ditimpa menjadi <Integer> sehingga kelas “PertukaranNilai” bisa digunakan untuk kelas
tipe data “Integer”
• Kedua konsep baik object maupun tag generic samasama bisa digunakan untuk memprogram
secara generic akan tetapi masing-masing mempunyai resiko tersendiri yang harus dipahami
ketika kita menggunakannnya.
• Penggunaan tag generic lebih disarankan karena pertukaran antar kelas tipe data dilakukan
secara eksplisit per objeknya
• Berikutnya dibahas salah satu contoh penerapan generic programming didalam library
Collection.
• Collection adalah sebuah ad hoc class yang disediakan oleh java (Java Collection)
• Tujuannya untuk membantu pengguna bahasa java dalam melakukan penyimpanan data
atau objek serta memanipulasinya.
• Kelas ini mempermudah kita dalam operasi struktur data seperti linked list, stack &
struktur data lain.
• Berikut struktur data sederhana yang dibahas pada bahasan kali ini adalah :
1. ArrayList
2. Linked List
3. Stack
4. Priority Queue
5. HashMap
• Ada konsep yang bisa mempermudah proses traversal pada kelas Collection yaitu Iterator
• Iterator memungkinkan kita untuk operasi traversal dalam sebuah elemen collection
• Sebagai contoh, kita ingin mengakses semua nilai yang disimpan pada suatu collection.
• Format perintah iterator di java adalah
• Ada 2 buah metode pada kelas ini yang sering digunakan, yaitu :
1. Method hasNext(), method ini digunakan untuk memeriksa apakah iterator masih
mempunyai elemen data berikutnya atau tidak. Method ini akan mengembalikan
nilai true apabla iterator masih mempunyai elemen data berikutnya yang akan di
proses dan mengembalikan nilai false apabila iterator sudah tidak mempunyai
elemen data berikutnya.
2. Method Next, method ini digunakan untuk mengambil elemen berikutnya di iterator
• Implementasi Iterator dalam coding
• Iterator dapat digunakan untuk proses traversal elemen-
elemen yang ada pada arraylist bilanganBulat. Method
hasNext() digunakan pada pengulangan while untuk
memeriksa apakah masih ada elemen yang terdapat pada
arraylist bilanganBulat.
• Method next() digunakan untuk mengambil elemen yang
sedang ditunuk oleh iterator kemudian menyimpannya
dalam variabel elemen
• Merupakan struktur data array yang bersifat dinamis.
• Kita tidak perlu menginisialisasi ukuran array di awal.
• Format dasar penggunaannya adalah :
• Operasi yang sering digunakan pada kelas ArrayList
No Method Tipe Method Kegunaan
1 add(Object o) boolean Menambahkan data yang sudah dispesifikasikan ke akhir dari
ArrayList
2 add(int indeks, Object
elements)
void Menambahkan data yang sudah dispesifikasikan ke posisi
tertentu di ArrayList
3 clear() Void Menghapus seluruh elemen dari ArrayList
4 get(int indeks) Object Mengembalikan nilai dari elemen arraylist pada posisi sesuai
indeks yang diinginkan
5 Remove(int indeks) Object Menghapus elemen Arraylist pada di posisi sesuai indeks yang
diinginkan
6 size Int Mengembalikan nilai berupa jumlah elemen yang ada pada
arraylist
• Contoh implementasi arraylist dalam coding :
• Hasil running
• Linked list menggunakan pointer untuk mengakses data yang ada didalamnya.
• Berbeda dengan array list yang menekankan penggunaan indeks untuk mengakses datanya, linked list
menggunakan konsep penunjuk ke data setelahnya atau sebelumnya.
• Linked list menggunakan dua penunjuk yang wajib ada yaitu pointer first yang selalu menunjuk data yang ada di
posisi paling awal dan pointer last yang selalu menunjuk data yang ada di posisi terakhir.
• Format dasar penggunaannya adalah :
• Operasi yang sering digunakan pada kelas ArrayListNo Method Tipe Method Kegunaan
1 add(Object o) Boolean Menambahkan data yang sudah di spesifikasikan ke akhir
2 add(int indeks, Object
elements)
Void Menambahkan data yang sudah di spesifikasikan ke posisi
tertentu
3 addFirst(Object o) Void Menambahkan data di posisi paling awal
4 addLast(Object o) Void Menambahkan data di posisi paling akhir
5 removeFirst() Object Menghapus data paling awal
6 removeLast() Object Menghapus data paling akhir
7 getFirst() Object Mendapatkan data paling awal
8 getLast() Object Mendapatkan data paling akhir
• Contoh implementasi linked list dalam coding:
• Cara kerjanya adalah seperti tumpukkan barang didunia nyata
• Konsep penyimpanan dan pengaksesan datanya menggunakan konsep LIFO (Last In First Out)
• Data yang dimasukkan terakhir akan diakses pertama kali ketika pada proses permintaan data.
• Format Dasar penggunaan :
• Implementasi coding
No Method Tipe Method Kegunaan
1 Push(Object o) Object Menambahkan data pada bagian atas stack
2 Pop() Object Mengambil data pada bagian atas stack
• PriorityQueue menggunakan konsep antrian didunia nyata
• Konsepnya adalah FIFO (First In First Out)
• Data yang disimpan pertama kali akan dikemablikan pertama apabila ada proses pengaksesan
No Method Tipe Method Kegunaan
1 Offer(Object o) Boolean Menyisipkan data ke dalam queue
2 Peek() Object Mengambil data dari bagian depan Queue tanpa menghapusnya
dari bagian depan antrian
3 Poll() Object Mengambil data dari bagian depan Queue dan menghapusnya
dari bagian depan antrian/Queue
• Implementasi priorityqueue dalam coding
• Hashmap menggunakan kunci untuk mengakses nilai yang disimpan didalamnya
• Setiap nilai yang akan disimpan akan dipetakan berdasarkan kuncinya masing-masing
• Kunci harus bersifat Unique.
• Format dasar hashmap:
No Method Tipe Method Kegunaan
1 put(Object K, Object V) Object Menambahkan pasangan key dan value ke dalam Hashmap
2 get(Object K) Object Mengambil value yang memiliki key seperti yang disebutkan
3 containsKey(Object K) Boolean Mengembalikan nilai true apabila didalam HashMap terdapat
key yang disebutkan
4 containValue(Object v) Boolean Mengembalikan nilai true apabila didalam HashMap terdapat
value yang disebutkan.
• Implementasi Coding

Weitere ähnliche Inhalte

Was ist angesagt?

Pertemuan 4 alert dan toast
Pertemuan 4 alert dan toastPertemuan 4 alert dan toast
Pertemuan 4 alert dan toast
heriakj
 
Pembuatan uml pada toko belanja online
Pembuatan uml pada toko belanja onlinePembuatan uml pada toko belanja online
Pembuatan uml pada toko belanja online
andiseprianto
 

Was ist angesagt? (20)

Mini Google Design Sprint
Mini Google Design SprintMini Google Design Sprint
Mini Google Design Sprint
 
3 Jenis Model (pemodelan dan simulasi)
3 Jenis Model (pemodelan dan simulasi)3 Jenis Model (pemodelan dan simulasi)
3 Jenis Model (pemodelan dan simulasi)
 
Software Engineering 1 (Software Development Process Model)
Software Engineering 1 (Software Development Process Model)Software Engineering 1 (Software Development Process Model)
Software Engineering 1 (Software Development Process Model)
 
Pertemuan 4 alert dan toast
Pertemuan 4 alert dan toastPertemuan 4 alert dan toast
Pertemuan 4 alert dan toast
 
Scrum: How to Implements (Update)
Scrum: How to Implements (Update)Scrum: How to Implements (Update)
Scrum: How to Implements (Update)
 
[RPL2] Class Diagram dan Relasinya (2)
[RPL2] Class Diagram dan Relasinya (2)[RPL2] Class Diagram dan Relasinya (2)
[RPL2] Class Diagram dan Relasinya (2)
 
Matematika Diskrit - 11 kompleksitas algoritma - 03
Matematika Diskrit - 11 kompleksitas algoritma - 03Matematika Diskrit - 11 kompleksitas algoritma - 03
Matematika Diskrit - 11 kompleksitas algoritma - 03
 
Data Management (Basis Data Berbasis Dokumen)
Data Management (Basis Data Berbasis Dokumen)Data Management (Basis Data Berbasis Dokumen)
Data Management (Basis Data Berbasis Dokumen)
 
Software Engineering 1 (Introduction of Software Engineering)
Software Engineering 1 (Introduction of Software Engineering)Software Engineering 1 (Introduction of Software Engineering)
Software Engineering 1 (Introduction of Software Engineering)
 
Modul 03 Dasar Pemodelan
Modul 03 Dasar PemodelanModul 03 Dasar Pemodelan
Modul 03 Dasar Pemodelan
 
Modul 07 Rich Picture
Modul 07 Rich PictureModul 07 Rich Picture
Modul 07 Rich Picture
 
04 Testing Perangkat Lunak
04 Testing Perangkat Lunak04 Testing Perangkat Lunak
04 Testing Perangkat Lunak
 
[RPL2] Pertemuan 3 - UML dan USECASE VIEW
[RPL2] Pertemuan 3 - UML dan USECASE VIEW[RPL2] Pertemuan 3 - UML dan USECASE VIEW
[RPL2] Pertemuan 3 - UML dan USECASE VIEW
 
Software Engineering 1 (Requirement Engineering)
Software Engineering 1 (Requirement Engineering)Software Engineering 1 (Requirement Engineering)
Software Engineering 1 (Requirement Engineering)
 
Analisis Algoritma - Pengantar Kompleksitas Algoritma
Analisis Algoritma - Pengantar Kompleksitas AlgoritmaAnalisis Algoritma - Pengantar Kompleksitas Algoritma
Analisis Algoritma - Pengantar Kompleksitas Algoritma
 
Pembuatan uml pada toko belanja online
Pembuatan uml pada toko belanja onlinePembuatan uml pada toko belanja online
Pembuatan uml pada toko belanja online
 
E-Business (Business Process and Process Model)
E-Business (Business Process and Process Model)E-Business (Business Process and Process Model)
E-Business (Business Process and Process Model)
 
Penelitian Operasional 1 - Pendahuluan
Penelitian Operasional 1 - PendahuluanPenelitian Operasional 1 - Pendahuluan
Penelitian Operasional 1 - Pendahuluan
 
RPL 1 (Lama) - Rekayasa Kebutuhan
RPL 1 (Lama) - Rekayasa KebutuhanRPL 1 (Lama) - Rekayasa Kebutuhan
RPL 1 (Lama) - Rekayasa Kebutuhan
 
Pertemuan 7 camera
Pertemuan 7 cameraPertemuan 7 camera
Pertemuan 7 camera
 

Ähnlich wie [PBO] Pertemuan 10 - Generic Programming & Collection

(Adam nelvin) quiz dan jawaban teori algo dan struktur data
(Adam nelvin) quiz dan jawaban teori algo dan struktur data(Adam nelvin) quiz dan jawaban teori algo dan struktur data
(Adam nelvin) quiz dan jawaban teori algo dan struktur data
Mauludin Ahmad
 
Reka bentuk pangkalan data
Reka bentuk pangkalan dataReka bentuk pangkalan data
Reka bentuk pangkalan data
meywong17
 
JENI-Intro1-Bab09-Bekerja Dengan Java Class Library.pdf
JENI-Intro1-Bab09-Bekerja Dengan Java Class Library.pdfJENI-Intro1-Bab09-Bekerja Dengan Java Class Library.pdf
JENI-Intro1-Bab09-Bekerja Dengan Java Class Library.pdf
Jurnal IT
 
12. data (variable dan list) scratch
12. data (variable dan list) scratch12. data (variable dan list) scratch
12. data (variable dan list) scratch
Fajar Baskoro
 

Ähnlich wie [PBO] Pertemuan 10 - Generic Programming & Collection (20)

Tugas blog
Tugas blog Tugas blog
Tugas blog
 
BAB 1 PBO C++ Struktur
BAB 1 PBO C++ StrukturBAB 1 PBO C++ Struktur
BAB 1 PBO C++ Struktur
 
[RPL2] Class Diagram dan Konsep Object Oriented (1)
[RPL2] Class Diagram dan Konsep Object Oriented (1)[RPL2] Class Diagram dan Konsep Object Oriented (1)
[RPL2] Class Diagram dan Konsep Object Oriented (1)
 
Tipe data abstract
Tipe data abstractTipe data abstract
Tipe data abstract
 
[PBO] Pertemuan 1 (praktik) - Pengenalan java
[PBO] Pertemuan 1 (praktik) - Pengenalan java[PBO] Pertemuan 1 (praktik) - Pengenalan java
[PBO] Pertemuan 1 (praktik) - Pengenalan java
 
[PBO] Pertemuan 3 - Pengenalan Pemrograman Berbasis Objek
[PBO] Pertemuan 3 - Pengenalan Pemrograman Berbasis Objek[PBO] Pertemuan 3 - Pengenalan Pemrograman Berbasis Objek
[PBO] Pertemuan 3 - Pengenalan Pemrograman Berbasis Objek
 
(Adam nelvin) quiz dan jawaban teori algo dan struktur data
(Adam nelvin) quiz dan jawaban teori algo dan struktur data(Adam nelvin) quiz dan jawaban teori algo dan struktur data
(Adam nelvin) quiz dan jawaban teori algo dan struktur data
 
Reka bentuk pangkalan data
Reka bentuk pangkalan dataReka bentuk pangkalan data
Reka bentuk pangkalan data
 
Reka bentuk pangkalan data
Reka bentuk pangkalan dataReka bentuk pangkalan data
Reka bentuk pangkalan data
 
JENI-Intro1-Bab09-Bekerja Dengan Java Class Library.pdf
JENI-Intro1-Bab09-Bekerja Dengan Java Class Library.pdfJENI-Intro1-Bab09-Bekerja Dengan Java Class Library.pdf
JENI-Intro1-Bab09-Bekerja Dengan Java Class Library.pdf
 
12. data (variable dan list) scratch
12. data (variable dan list) scratch12. data (variable dan list) scratch
12. data (variable dan list) scratch
 
Reka bentuk dan model pangkalan data
Reka bentuk dan model pangkalan dataReka bentuk dan model pangkalan data
Reka bentuk dan model pangkalan data
 
Reka bentuk dan model pangkalan data
Reka bentuk dan model pangkalan dataReka bentuk dan model pangkalan data
Reka bentuk dan model pangkalan data
 
Reka bentuk dan model pangkalan data
Reka bentuk dan model pangkalan dataReka bentuk dan model pangkalan data
Reka bentuk dan model pangkalan data
 
Reka bentuk dan model pangkalan data
Reka bentuk dan model pangkalan dataReka bentuk dan model pangkalan data
Reka bentuk dan model pangkalan data
 
TD-635-01-PSBO
TD-635-01-PSBOTD-635-01-PSBO
TD-635-01-PSBO
 
Apsi 2
Apsi 2Apsi 2
Apsi 2
 
Rpl upload #8
Rpl upload #8Rpl upload #8
Rpl upload #8
 
Kontrak Perkuliahan
Kontrak PerkuliahanKontrak Perkuliahan
Kontrak Perkuliahan
 
Kontrak Perkuliahan
Kontrak PerkuliahanKontrak Perkuliahan
Kontrak Perkuliahan
 

Mehr von rizki adam kurniawan

Mehr von rizki adam kurniawan (20)

[MPPL] Managemen Sumber Daya Manusia
[MPPL] Managemen Sumber Daya Manusia[MPPL] Managemen Sumber Daya Manusia
[MPPL] Managemen Sumber Daya Manusia
 
[RPL2] Pengujian Perangkat Lunak
[RPL2] Pengujian Perangkat Lunak[RPL2] Pengujian Perangkat Lunak
[RPL2] Pengujian Perangkat Lunak
 
[RPL2] Growth Hacking
[RPL2] Growth Hacking[RPL2] Growth Hacking
[RPL2] Growth Hacking
 
[RPL2] Bisnis Model & Market Analysis
[RPL2] Bisnis Model & Market Analysis[RPL2] Bisnis Model & Market Analysis
[RPL2] Bisnis Model & Market Analysis
 
[RPL2] Deployment Diagram
[RPL2] Deployment Diagram[RPL2] Deployment Diagram
[RPL2] Deployment Diagram
 
[RPL2] Package Diagram
[RPL2] Package Diagram[RPL2] Package Diagram
[RPL2] Package Diagram
 
[PBO] Pertemuan 10 - Exception & Error Handling
[PBO] Pertemuan 10 - Exception & Error Handling[PBO] Pertemuan 10 - Exception & Error Handling
[PBO] Pertemuan 10 - Exception & Error Handling
 
[PBO] Pertemuan 13 - Membuat Aplikasi Desktop dengan JDBC DAO MVC
[PBO] Pertemuan 13 - Membuat Aplikasi Desktop dengan JDBC DAO MVC[PBO] Pertemuan 13 - Membuat Aplikasi Desktop dengan JDBC DAO MVC
[PBO] Pertemuan 13 - Membuat Aplikasi Desktop dengan JDBC DAO MVC
 
[PBO] Pertemuan 12 - Pemrograman Android
[PBO] Pertemuan 12 - Pemrograman Android[PBO] Pertemuan 12 - Pemrograman Android
[PBO] Pertemuan 12 - Pemrograman Android
 
[PBO] Pertemuan 11 - GUI Java Desktop
[PBO] Pertemuan 11 - GUI Java Desktop[PBO] Pertemuan 11 - GUI Java Desktop
[PBO] Pertemuan 11 - GUI Java Desktop
 
[PBO] Pertemuan 10 - Pemrograman Database (2)
[PBO] Pertemuan 10 - Pemrograman Database (2)[PBO] Pertemuan 10 - Pemrograman Database (2)
[PBO] Pertemuan 10 - Pemrograman Database (2)
 
[RPL2] Design Sprint
[RPL2] Design Sprint[RPL2] Design Sprint
[RPL2] Design Sprint
 
[PBO] Pertemuan 10 - Pemrograman Database (1)
[PBO] Pertemuan 10 - Pemrograman Database (1)[PBO] Pertemuan 10 - Pemrograman Database (1)
[PBO] Pertemuan 10 - Pemrograman Database (1)
 
[PBO] CARA BIKIN SOFTWARE (Kumpulan Referensi Java)
[PBO] CARA BIKIN SOFTWARE (Kumpulan Referensi Java)[PBO] CARA BIKIN SOFTWARE (Kumpulan Referensi Java)
[PBO] CARA BIKIN SOFTWARE (Kumpulan Referensi Java)
 
[RPL2] Activity Diagram
[RPL2] Activity Diagram[RPL2] Activity Diagram
[RPL2] Activity Diagram
 
[PBO] Pertemuan 6 - Interface
[PBO] Pertemuan 6 - Interface[PBO] Pertemuan 6 - Interface
[PBO] Pertemuan 6 - Interface
 
[PBO] Pertemuan 6 - Abstrak
[PBO] Pertemuan 6 - Abstrak[PBO] Pertemuan 6 - Abstrak
[PBO] Pertemuan 6 - Abstrak
 
[PBO] Pertemuan 5 - Polymorphism
[PBO] Pertemuan 5 - Polymorphism[PBO] Pertemuan 5 - Polymorphism
[PBO] Pertemuan 5 - Polymorphism
 
[PBO] Pertemuan 5 - Inheritance
[PBO] Pertemuan 5 - Inheritance[PBO] Pertemuan 5 - Inheritance
[PBO] Pertemuan 5 - Inheritance
 
[PBO] Pertemuan 4 - Kontruktor Destruktor
[PBO] Pertemuan 4 - Kontruktor Destruktor[PBO] Pertemuan 4 - Kontruktor Destruktor
[PBO] Pertemuan 4 - Kontruktor Destruktor
 

[PBO] Pertemuan 10 - Generic Programming & Collection

  • 1.
  • 2.
  • 3. Mukharil Bachtiar, Adam dan Nizamudin Fakhrul, Firman, 2018, Penerbit Informatika, Pemrograman berorientasi objek menggunakan java, 262 Halaman
  • 4. • Cara pandang pemrograman yang memungkinkan seorang pembuat kelas menunda pemberian tipe pada atribut & method • Nama lain dari konsep “types-to-be-specified-later” • Kelas yang dibuat bisa digunakan untuk tipe data yang berbeda • Contoh : Kedua jenis sample code ini adalah ilustrasi program untuk tipe data berbeda. Untuk setiap tipe data yang berbeda kita harus membuat satu kelas tersendiri padahal kegunaannya sama. • Untuk efisiensi desain kelas tersebut, kita dapat menggunakan konsep generic programming. • Dapat diimplementasikan menjadi 2 konsep, yaitu : 1. Konsep tipe Object 2. Konsep tag generic <T>
  • 5. • Object adalah kelas bawaan di Java sehingga bisa digunakan sebagai tipe dari atribut maupun method tertentu. • Kelas Object bisa dideklarasikan kembali menjadi kelas lain dimana didalam java sendiri setiap tipe data itu dideskripsikan didalam sebuah kelas. (Cth : tipe data double adalah objek dari kelas Double) • Ide dasar nya adalah atribut dan method dideklarasikan menggunakan tipe object sehingga nanti ketika ada objek yang ingin menggunakan atribut dan method di kelas tersebut, objek tersebut tinggal mendeskripsikan ulang kelas tipe data yang diinginkan.
  • 6. • Contoh Menukar nilai dua variabel : • Terlihat tipe object digantikan oleh tipe String dan integer.
  • 7. • Contoh Menukar nilai dua variabel : • Terlihat dapat mendeskripsikan nilai dalam sebuah variabel
  • 8. • Tipe Object bisa didefinsikan dengan kelas tipe data, cth : Integer, String, Double • Tipe ini tidak bisa didefinsikan dengan instance dari kelas tipe data, cth: int, double • Kelemahan tipe object : kita bisa memasukkan nilai sembarang dengan tipe data yang berbeda dan nilai tersebut dapat diganti dengan nilai lain yang memiliki tipe data yang berbeda dengan sangat mudah. • Objek dari kelas yang mengandung konsep object, tidak spesifik terhadap suatu jenis data sehingga bisa menyebabkan kebingungan ketika menggunakannya. • Untuk mengatasi hal tersebut kita dapat menggunakan konsep TAG GENERIC <E>.
  • 9. • Tag ini diwakili oleh simbol <E> . Kita bisa mengganti huruf yang diapit oleh kedua kurung siku tersebut. • Konsep ini mengharuskan kita memilih satu dari sekian banyak tipe kelas data ketika mendeklarasikann objek pada kelas yang mengandung tag generic. • Perbedaan dari konsep sebelumnya adalah pada tipe dari atribut maupun method harus disesuaikan dengan huruf yang diapit oleh kedua kurung siku tersebut. • Contoh desain kelas dengan konsep tag generic : E
  • 10. • Pada kelas pertukaranNilai terdapat kotak putus-putus dengan hurup E didalmnya • Simbol tersebut menunjukkan template parameter yang digunakan untuk menggambarkan tag generic. • Berikut adalah implementasi desain kelas tersebut kedalam coding E
  • 11. • Dari file Tester.Java tersebut dapat dilihat bahwa untuk setiap kelas tipe data terdapat satu objek yang didedikasikan untuk mewakili kelas tipe data tersebut. • Objek “tukarInteger” didedikasikan untuk mengurusi pertukaran nilai untuke kelas tipe data “Integer”. • Tag <T> ditimpa menjadi <Integer> sehingga kelas “PertukaranNilai” bisa digunakan untuk kelas tipe data “Integer” • Kedua konsep baik object maupun tag generic samasama bisa digunakan untuk memprogram secara generic akan tetapi masing-masing mempunyai resiko tersendiri yang harus dipahami ketika kita menggunakannnya. • Penggunaan tag generic lebih disarankan karena pertukaran antar kelas tipe data dilakukan secara eksplisit per objeknya • Berikutnya dibahas salah satu contoh penerapan generic programming didalam library Collection.
  • 12. • Collection adalah sebuah ad hoc class yang disediakan oleh java (Java Collection) • Tujuannya untuk membantu pengguna bahasa java dalam melakukan penyimpanan data atau objek serta memanipulasinya. • Kelas ini mempermudah kita dalam operasi struktur data seperti linked list, stack & struktur data lain. • Berikut struktur data sederhana yang dibahas pada bahasan kali ini adalah : 1. ArrayList 2. Linked List 3. Stack 4. Priority Queue 5. HashMap • Ada konsep yang bisa mempermudah proses traversal pada kelas Collection yaitu Iterator
  • 13. • Iterator memungkinkan kita untuk operasi traversal dalam sebuah elemen collection • Sebagai contoh, kita ingin mengakses semua nilai yang disimpan pada suatu collection. • Format perintah iterator di java adalah • Ada 2 buah metode pada kelas ini yang sering digunakan, yaitu : 1. Method hasNext(), method ini digunakan untuk memeriksa apakah iterator masih mempunyai elemen data berikutnya atau tidak. Method ini akan mengembalikan nilai true apabla iterator masih mempunyai elemen data berikutnya yang akan di proses dan mengembalikan nilai false apabila iterator sudah tidak mempunyai elemen data berikutnya. 2. Method Next, method ini digunakan untuk mengambil elemen berikutnya di iterator
  • 14. • Implementasi Iterator dalam coding • Iterator dapat digunakan untuk proses traversal elemen- elemen yang ada pada arraylist bilanganBulat. Method hasNext() digunakan pada pengulangan while untuk memeriksa apakah masih ada elemen yang terdapat pada arraylist bilanganBulat. • Method next() digunakan untuk mengambil elemen yang sedang ditunuk oleh iterator kemudian menyimpannya dalam variabel elemen
  • 15. • Merupakan struktur data array yang bersifat dinamis. • Kita tidak perlu menginisialisasi ukuran array di awal. • Format dasar penggunaannya adalah : • Operasi yang sering digunakan pada kelas ArrayList No Method Tipe Method Kegunaan 1 add(Object o) boolean Menambahkan data yang sudah dispesifikasikan ke akhir dari ArrayList 2 add(int indeks, Object elements) void Menambahkan data yang sudah dispesifikasikan ke posisi tertentu di ArrayList 3 clear() Void Menghapus seluruh elemen dari ArrayList 4 get(int indeks) Object Mengembalikan nilai dari elemen arraylist pada posisi sesuai indeks yang diinginkan 5 Remove(int indeks) Object Menghapus elemen Arraylist pada di posisi sesuai indeks yang diinginkan 6 size Int Mengembalikan nilai berupa jumlah elemen yang ada pada arraylist
  • 16. • Contoh implementasi arraylist dalam coding :
  • 18. • Linked list menggunakan pointer untuk mengakses data yang ada didalamnya. • Berbeda dengan array list yang menekankan penggunaan indeks untuk mengakses datanya, linked list menggunakan konsep penunjuk ke data setelahnya atau sebelumnya. • Linked list menggunakan dua penunjuk yang wajib ada yaitu pointer first yang selalu menunjuk data yang ada di posisi paling awal dan pointer last yang selalu menunjuk data yang ada di posisi terakhir. • Format dasar penggunaannya adalah : • Operasi yang sering digunakan pada kelas ArrayListNo Method Tipe Method Kegunaan 1 add(Object o) Boolean Menambahkan data yang sudah di spesifikasikan ke akhir 2 add(int indeks, Object elements) Void Menambahkan data yang sudah di spesifikasikan ke posisi tertentu 3 addFirst(Object o) Void Menambahkan data di posisi paling awal 4 addLast(Object o) Void Menambahkan data di posisi paling akhir 5 removeFirst() Object Menghapus data paling awal 6 removeLast() Object Menghapus data paling akhir 7 getFirst() Object Mendapatkan data paling awal 8 getLast() Object Mendapatkan data paling akhir
  • 19. • Contoh implementasi linked list dalam coding:
  • 20. • Cara kerjanya adalah seperti tumpukkan barang didunia nyata • Konsep penyimpanan dan pengaksesan datanya menggunakan konsep LIFO (Last In First Out) • Data yang dimasukkan terakhir akan diakses pertama kali ketika pada proses permintaan data. • Format Dasar penggunaan : • Implementasi coding No Method Tipe Method Kegunaan 1 Push(Object o) Object Menambahkan data pada bagian atas stack 2 Pop() Object Mengambil data pada bagian atas stack
  • 21. • PriorityQueue menggunakan konsep antrian didunia nyata • Konsepnya adalah FIFO (First In First Out) • Data yang disimpan pertama kali akan dikemablikan pertama apabila ada proses pengaksesan No Method Tipe Method Kegunaan 1 Offer(Object o) Boolean Menyisipkan data ke dalam queue 2 Peek() Object Mengambil data dari bagian depan Queue tanpa menghapusnya dari bagian depan antrian 3 Poll() Object Mengambil data dari bagian depan Queue dan menghapusnya dari bagian depan antrian/Queue
  • 23. • Hashmap menggunakan kunci untuk mengakses nilai yang disimpan didalamnya • Setiap nilai yang akan disimpan akan dipetakan berdasarkan kuncinya masing-masing • Kunci harus bersifat Unique. • Format dasar hashmap: No Method Tipe Method Kegunaan 1 put(Object K, Object V) Object Menambahkan pasangan key dan value ke dalam Hashmap 2 get(Object K) Object Mengambil value yang memiliki key seperti yang disebutkan 3 containsKey(Object K) Boolean Mengembalikan nilai true apabila didalam HashMap terdapat key yang disebutkan 4 containValue(Object v) Boolean Mengembalikan nilai true apabila didalam HashMap terdapat value yang disebutkan.