SlideShare a Scribd company logo
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

More Related Content

What's hot

Konteks, Data Flow Diagram dan Kamus Data
Konteks, Data Flow Diagram dan Kamus DataKonteks, Data Flow Diagram dan Kamus Data
Konteks, Data Flow Diagram dan Kamus Data
Fraiza Geraldi
 
[RPL2] Activity Diagram
[RPL2] Activity Diagram[RPL2] Activity Diagram
[RPL2] Activity Diagram
rizki adam kurniawan
 
[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
rizki adam kurniawan
 
Rational Unified Process
Rational Unified ProcessRational Unified Process
Rational Unified Process
Robby Firmansyah
 
[RPL2] Package Diagram
[RPL2] Package Diagram[RPL2] Package Diagram
[RPL2] Package Diagram
rizki adam kurniawan
 
Analisis Algoritma Pada Masalah Sorting
Analisis Algoritma Pada Masalah SortingAnalisis Algoritma Pada Masalah Sorting
Analisis Algoritma Pada Masalah SortingDea Rokhmatun Iradewa
 
Pushdown Automata
Pushdown Automata Pushdown Automata
Pushdown Automata
Frestiany Regina Putri
 
Analisis Algoritma - Strategi Algoritma Greedy
Analisis Algoritma - Strategi Algoritma GreedyAnalisis Algoritma - Strategi Algoritma Greedy
Analisis Algoritma - Strategi Algoritma Greedy
Adam Mukharil Bachtiar
 
PERANCANGAN PERANGKAT LUNAK
PERANCANGAN PERANGKAT LUNAKPERANCANGAN PERANGKAT LUNAK
PERANCANGAN PERANGKAT LUNAKDhika The'Lover
 
Sistem basis data 4
Sistem basis data 4Sistem basis data 4
Sistem basis data 4
Fendi Hidayat
 
Pemrograman Berorientasi Objek "Pengenalan JAVA"
Pemrograman Berorientasi Objek "Pengenalan JAVA"Pemrograman Berorientasi Objek "Pengenalan JAVA"
Pemrograman Berorientasi Objek "Pengenalan JAVA"
Asnita Meydelia C K
 
Linked List
Linked ListLinked List
Linked List
said zulhelmi
 
Normalisasi Basis Data (Revisi)
Normalisasi Basis Data (Revisi)Normalisasi Basis Data (Revisi)
Normalisasi Basis Data (Revisi)
Adam Mukharil Bachtiar
 
Incremental development (pengembangan incremental)
Incremental development (pengembangan incremental)Incremental development (pengembangan incremental)
Incremental development (pengembangan incremental)
Fitria Hati
 
Menerapkan struktur kontrol percabangan dalam bahasa pemrograman
Menerapkan struktur kontrol percabangan dalam bahasa pemrogramanMenerapkan struktur kontrol percabangan dalam bahasa pemrograman
Menerapkan struktur kontrol percabangan dalam bahasa pemrograman
MULTIMEDIA 'n BROADCASTING SMKN 1 PUNGGING MOJOKERTO
 
Bab III Class Diagram
Bab III Class DiagramBab III Class Diagram
Bab III Class Diagram
Laboratorium Sirkel
 
Pertemuan 4-metode-pencarian-dan-pelacakan
Pertemuan 4-metode-pencarian-dan-pelacakanPertemuan 4-metode-pencarian-dan-pelacakan
Pertemuan 4-metode-pencarian-dan-pelacakanwillyhayon
 
Intermediate code kode antara
Intermediate code   kode antaraIntermediate code   kode antara
Intermediate code kode antara
Gunawan Manalu
 

What's hot (20)

Konteks, Data Flow Diagram dan Kamus Data
Konteks, Data Flow Diagram dan Kamus DataKonteks, Data Flow Diagram dan Kamus Data
Konteks, Data Flow Diagram dan Kamus Data
 
[RPL2] Activity Diagram
[RPL2] Activity Diagram[RPL2] Activity Diagram
[RPL2] Activity Diagram
 
[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
 
Rational Unified Process
Rational Unified ProcessRational Unified Process
Rational Unified Process
 
[RPL2] Package Diagram
[RPL2] Package Diagram[RPL2] Package Diagram
[RPL2] Package Diagram
 
Analisis Algoritma Pada Masalah Sorting
Analisis Algoritma Pada Masalah SortingAnalisis Algoritma Pada Masalah Sorting
Analisis Algoritma Pada Masalah Sorting
 
Pushdown Automata
Pushdown Automata Pushdown Automata
Pushdown Automata
 
Analisis Algoritma - Strategi Algoritma Greedy
Analisis Algoritma - Strategi Algoritma GreedyAnalisis Algoritma - Strategi Algoritma Greedy
Analisis Algoritma - Strategi Algoritma Greedy
 
PERANCANGAN PERANGKAT LUNAK
PERANCANGAN PERANGKAT LUNAKPERANCANGAN PERANGKAT LUNAK
PERANCANGAN PERANGKAT LUNAK
 
Sistem basis data 4
Sistem basis data 4Sistem basis data 4
Sistem basis data 4
 
Pemrograman Berorientasi Objek "Pengenalan JAVA"
Pemrograman Berorientasi Objek "Pengenalan JAVA"Pemrograman Berorientasi Objek "Pengenalan JAVA"
Pemrograman Berorientasi Objek "Pengenalan JAVA"
 
Linked List
Linked ListLinked List
Linked List
 
Normalisasi Basis Data (Revisi)
Normalisasi Basis Data (Revisi)Normalisasi Basis Data (Revisi)
Normalisasi Basis Data (Revisi)
 
Incremental development (pengembangan incremental)
Incremental development (pengembangan incremental)Incremental development (pengembangan incremental)
Incremental development (pengembangan incremental)
 
Menerapkan struktur kontrol percabangan dalam bahasa pemrograman
Menerapkan struktur kontrol percabangan dalam bahasa pemrogramanMenerapkan struktur kontrol percabangan dalam bahasa pemrograman
Menerapkan struktur kontrol percabangan dalam bahasa pemrograman
 
Bab III Class Diagram
Bab III Class DiagramBab III Class Diagram
Bab III Class Diagram
 
Pertemuan 4-metode-pencarian-dan-pelacakan
Pertemuan 4-metode-pencarian-dan-pelacakanPertemuan 4-metode-pencarian-dan-pelacakan
Pertemuan 4-metode-pencarian-dan-pelacakan
 
Intermediate code kode antara
Intermediate code   kode antaraIntermediate code   kode antara
Intermediate code kode antara
 
Sorting ppt
Sorting ppt Sorting ppt
Sorting ppt
 
Makalah html 5
Makalah html 5Makalah html 5
Makalah html 5
 

Similar to [PBO] Pertemuan 10 - Generic Programming & Collection

Tugas blog
Tugas blog Tugas blog
Tugas blog
ryass
 
[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)
rizki adam kurniawan
 
Tipe data abstract
Tipe data abstractTipe data abstract
Tipe data abstract
ZakariyyaYusuf1
 
Konsep-Object-dan-Class dalam pemrograman.pdf
Konsep-Object-dan-Class dalam pemrograman.pdfKonsep-Object-dan-Class dalam pemrograman.pdf
Konsep-Object-dan-Class dalam pemrograman.pdf
quiztugasujian
 
[PBO] Pertemuan 1 (praktik) - Pengenalan java
[PBO] Pertemuan 1 (praktik) - Pengenalan java[PBO] Pertemuan 1 (praktik) - Pengenalan java
[PBO] Pertemuan 1 (praktik) - Pengenalan java
rizki adam kurniawan
 
(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 datameywong17
 
Reka bentuk pangkalan data
Reka bentuk pangkalan dataReka bentuk pangkalan data
Reka bentuk pangkalan data
anniego90
 
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
 
Reka bentuk dan model pangkalan data
Reka bentuk dan model pangkalan dataReka bentuk dan model pangkalan data
Reka bentuk dan model pangkalan data
lingyuksing86
 
Reka bentuk dan model pangkalan data
Reka bentuk dan model pangkalan dataReka bentuk dan model pangkalan data
Reka bentuk dan model pangkalan data
LayHar
 
Reka bentuk dan model pangkalan data
Reka bentuk dan model pangkalan dataReka bentuk dan model pangkalan data
Reka bentuk dan model pangkalan data
LayHar
 
Reka bentuk dan model pangkalan data
Reka bentuk dan model pangkalan dataReka bentuk dan model pangkalan data
Reka bentuk dan model pangkalan data
lingyuksing86
 
TD-635-01-PSBO
TD-635-01-PSBOTD-635-01-PSBO
TD-635-01-PSBO
Tino Dwiantoro
 
Kontrak Perkuliahan
Kontrak PerkuliahanKontrak Perkuliahan
Kontrak Perkuliahan
formatik
 
Kontrak Perkuliahan
Kontrak PerkuliahanKontrak Perkuliahan
Kontrak Perkuliahan
formatik
 

Similar to [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
 
Konsep-Object-dan-Class dalam pemrograman.pdf
Konsep-Object-dan-Class dalam pemrograman.pdfKonsep-Object-dan-Class dalam pemrograman.pdf
Konsep-Object-dan-Class dalam pemrograman.pdf
 
[PBO] Pertemuan 1 (praktik) - Pengenalan java
[PBO] Pertemuan 1 (praktik) - Pengenalan java[PBO] Pertemuan 1 (praktik) - Pengenalan java
[PBO] Pertemuan 1 (praktik) - Pengenalan java
 
(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
 

More from rizki adam kurniawan

[MPPL] Managemen Sumber Daya Manusia
[MPPL] Managemen Sumber Daya Manusia[MPPL] Managemen Sumber Daya Manusia
[MPPL] Managemen Sumber Daya Manusia
rizki adam kurniawan
 
[RPL2] Pengujian Perangkat Lunak
[RPL2] Pengujian Perangkat Lunak[RPL2] Pengujian Perangkat Lunak
[RPL2] Pengujian Perangkat Lunak
rizki adam kurniawan
 
[RPL2] Growth Hacking
[RPL2] Growth Hacking[RPL2] Growth Hacking
[RPL2] Growth Hacking
rizki adam kurniawan
 
[RPL2] Bisnis Model & Market Analysis
[RPL2] Bisnis Model & Market Analysis[RPL2] Bisnis Model & Market Analysis
[RPL2] Bisnis Model & Market Analysis
rizki adam kurniawan
 
[RPL2] Deployment Diagram
[RPL2] Deployment Diagram[RPL2] Deployment Diagram
[RPL2] Deployment Diagram
rizki adam kurniawan
 
[RPL2] Sequence Diagram
[RPL2] Sequence Diagram[RPL2] Sequence Diagram
[RPL2] Sequence Diagram
rizki adam kurniawan
 
[PBO] Pertemuan 10 - Exception & Error Handling
[PBO] Pertemuan 10 - Exception & Error Handling[PBO] Pertemuan 10 - Exception & Error Handling
[PBO] Pertemuan 10 - Exception & Error Handling
rizki adam kurniawan
 
[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
rizki adam kurniawan
 
[PBO] Pertemuan 12 - Pemrograman Android
[PBO] Pertemuan 12 - Pemrograman Android[PBO] Pertemuan 12 - Pemrograman Android
[PBO] Pertemuan 12 - Pemrograman Android
rizki adam kurniawan
 
[PBO] Pertemuan 11 - GUI Java Desktop
[PBO] Pertemuan 11 - GUI Java Desktop[PBO] Pertemuan 11 - GUI Java Desktop
[PBO] Pertemuan 11 - GUI Java Desktop
rizki adam kurniawan
 
[PBO] Pertemuan 10 - Pemrograman Database (2)
[PBO] Pertemuan 10 - Pemrograman Database (2)[PBO] Pertemuan 10 - Pemrograman Database (2)
[PBO] Pertemuan 10 - Pemrograman Database (2)
rizki adam kurniawan
 
[RPL2] Design Sprint
[RPL2] Design Sprint[RPL2] Design Sprint
[RPL2] Design Sprint
rizki adam kurniawan
 
[PBO] Pertemuan 10 - Pemrograman Database (1)
[PBO] Pertemuan 10 - Pemrograman Database (1)[PBO] Pertemuan 10 - Pemrograman Database (1)
[PBO] Pertemuan 10 - Pemrograman Database (1)
rizki adam kurniawan
 
[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)
rizki adam kurniawan
 
[PBO] Pertemuan 6 - Interface
[PBO] Pertemuan 6 - Interface[PBO] Pertemuan 6 - Interface
[PBO] Pertemuan 6 - Interface
rizki adam kurniawan
 
[PBO] Pertemuan 6 - Abstrak
[PBO] Pertemuan 6 - Abstrak[PBO] Pertemuan 6 - Abstrak
[PBO] Pertemuan 6 - Abstrak
rizki adam kurniawan
 
[PBO] Pertemuan 5 - Polymorphism
[PBO] Pertemuan 5 - Polymorphism[PBO] Pertemuan 5 - Polymorphism
[PBO] Pertemuan 5 - Polymorphism
rizki adam kurniawan
 
[PBO] Pertemuan 5 - Inheritance
[PBO] Pertemuan 5 - Inheritance[PBO] Pertemuan 5 - Inheritance
[PBO] Pertemuan 5 - Inheritance
rizki adam kurniawan
 
[PBO] Pertemuan 4 - Kontruktor Destruktor
[PBO] Pertemuan 4 - Kontruktor Destruktor[PBO] Pertemuan 4 - Kontruktor Destruktor
[PBO] Pertemuan 4 - Kontruktor Destruktor
rizki adam kurniawan
 
[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
rizki adam kurniawan
 

More from 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] Sequence Diagram
[RPL2] Sequence Diagram[RPL2] Sequence Diagram
[RPL2] Sequence 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)
 
[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
 
[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
 

[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.