Modul 1 - Attachment
Modul 1 - Attachment
1
February 5, 2023
[STRUKTUR DATA]
MODUL 1, GENERICS JAVA
DISUSUN OLEH:
MUHAMMAD SYAUQI AMIQ AMRULLAH
GILANG DWI DARMAWAN
DIAUDIT OLEH:
DIDIH RIZKI CHANDRANEGARA, S.KOM., M.KOM.
PRESENTED BY:
[STRUKTUR DATA]
PETUNJUK PENGERJAAN MODUL
Perhatikan petunjuk praktikum dibawah ini:
1. Wajib membaca materi modul, sewaktu – waktu dapat direview oleh asisten saat demo
2. Gunakan referensi yang disediakan modul dan referensi lain pada google (yang kredibel)
3. Latihan praktikum wajib dikerjakan pada praktikum minggu pertama secara bersama – sama di laboratorium
dan tidak boleh dijadikan pekerjaan rumah
4. Tugas praktikum boleh dijadikan pekerjaan rumah dan di demokan kepada asisten pada praktikum
minggu kedua
5. Memperhatikan kerapihan source code termasuk aturan penamaan Class, Method, Variable, File, dan lain
- lainnya.
6. Segera lapor kepada asisten jika ada kesalahan pada modul praktikum.
PERSIAPAN MATERI
Mahasiswa diharapkan mempelajari materi sebelum mengerjakan tugas, materi yang tercakup antara
lain:
1. Bahasa Pemrograman Java
2. Class dan Object
3. Enkapsulasi
4. Array
TUJUAN
Mahasiswa mampu menguasai dan menjelaskan konsep dari Struktur Data Generics serta mengetahui fungsi
generics dalam beberapa kasus nyata.
TARGET MODUL
Mahasiswa mampu memahami:
1. Menerapkan Array of Object
2. Generics Class
3. Generics Method
4. Wildcard
5. Enumerated Types
6.
PERSIAPAN SOFTWARE/APLIKASI
1. Java Development Kit
2. Java Runtime Environment
3. IDE (Intellij IDEA, Eclipse, Netbeans, dll)
REFERENSI MATERI
Oracle iLearning Java Programming section 6-1 Generics
Geekforgeeks:
https://www.geeksforgeeks.org/generics-in-java/
Youtube (Indonesia)
https://www.youtube.com/watch?v=bvWRDAl30Gs
Youtube (English)
https://www.youtube.com/watch?v=K1iu1kXkVoA
Javapoint
https://www.javatpoint.com/generics-in-java
Programiz
https://www.programiz.com/java-programming/generics
Note:
Dari referensi tersebut mungkin terdapat sedikit perbedaan satu sama yang lain, cukup pahami konsepnya
dan terapkan pada kasus di modul ini.
MATERI POKOK
Pengertian Generics
Generics merupakan sebuah cara yang digunakan untuk membuat tipe bersifat umum. Generics
juga dilakukan untuk menambah stabilitas pada kode program sehingga dapat membantu
mempermudah deteksi bug pada saat kompilasi.
Generics memberikan keamanan tipe pada saat kompilasi yang memungkinkan pemrogram
mengetahui tipe yang tidak valid. Generics memungkinkan tipe (class dan interface) menjadi parameter
ketika mendefinisikan suatu class, interface, dan method. Sama seperti parameter formal yang lebih
akrab digunakan dalam deklarasi method, parameter memberikan cara untuk menggunakan kembali
kode yang sama dengan input yang berbeda. Perbedaannya terdapat pada input yang dilakukan ke
parameter formal adalah suatu nilai, sedangkan input untuk parameter adalah suatu tipe.
Penerapan Generics memiliki banyak kegunaan dalam penerapan pada real project seperti
pembuatan Frontend Website, Mobile Application, Backend Application, karena dapat membuat kode
kita menjadi modular dan reusable sehingga kode kita menjadi rapih dan mudah dipahami oleh
programmer lainya serta meminimalisir penulisan kode yang berulang. Oleh karena itu materi Generics
ini menjadi salah satu basic Struktur Data yang harus kita pahami dengan dalam karena tidak sedikit
programmer yang menerapkan konsep ini di perusahaannya atau di proyeknya.
Dengan metode generics, pemrogram dapat menerapkan algoritma generics yang bekerja pada koleksi
dari berbagai jenis, dapat disesuaikan, aman dan lebih mudah dibaca. Tipe generics dapat
dideklarasikan menggunakan angled brackets (tanda <>) dengan didalamnya diisi tipe pengembalian
yang ingin didapatkan.
Untuk pembuatan object dan menerima object yang menggunakan class dapat menggunakan cara
sebagai berikut:
Deklarasi generics dapat dilakukan dengan cara yang lebih ringkas seperti yang dapat dilihat pada class
Main diatas, yaitu pada baris ke-3 new Cell<Integer> dan baris ke-4 diringkas menjadi new Cell<>,
kedua penulisan tersebut benar semua.
Generics Method:
Generics method adalah metode yang digunakan dengan memanfaatkan tipe parameter
mereka sendiri. Cara ini mirip dengan mendeklarasikan tipe generics, tetapi cakupan tipe parameter
terbatas pada metode yang dideklarasikan. Method static, non-static, dan constructor class generics
dapat menggunakan metode ini. Berikut adalah contoh penggunaan generics method:
Pemanggilan dan pembuatan object dapat dilakukan pada class main seperti berikut:
Wildcards:
Wildcard dituliskan dalam tanda tanya (?) yang memiliki arti tipe data belum diketahui.
Wildcard dapat digunakan dalam berbagai situasi, seperti jenis parameter, field, variabel local atau tipe
pengembalian. Dalam wildcard terdapat istilah yang disebut dengan upper bound wildcards, yaitu
digunakan untuk memberi batasan pada variabel. Berikut adalah contoh penggunaannya:
Enumerated Types:
Enumerated types adalah tipe data khusus yang memungkinkan variabel menjadi kumpulan
konstanta yang telah ditentukan. Variabel harus sama dengan salah satu nilai yang telah ditentukan
sebelumnya. Enumerated types ini bisa digunakan untuk arah kompas (NORTH, SOUTH, EAST, WEST)
danlainnya. Berikut adalah contoh Enumerated types untuk membuat deskripsi nama hari:
LATIHAN PRAKTIKUM
LATIHAN 1
Berikut adalah kode program dengan pemanfaatan generics pada class. Lakukan percobaan
latihan dengan mengetik kode program pada IDE anda untuk mengetahui outputnya.
Setelah mempraktikan kode diatas, mari kita coba untuk mempraktikan pada kasus lain.
Pemanfaatan generics juga bisa terdapat pada array atau bisa disebut array of object. Cobalah untuk
mengikuti kode program dibawah agar mengetahui alur proses sehingga menambah
pemahaman Anda.
1. Buat class generics untuk konsumsi
5. Class main
TUGAS PRAKTIKUM
KEGIATAN 1
Buat class generic bernama “Segitiga” yang akan digunakan untuk menyimpan nilai alas dan
tinggi dengan syarat hanya menerima jenis (Numbers). Tugas ini dibuat dengan tujuan menghitung nilai
inputan dan mendapatkan hasil luas dari Segitiga dalam 2 tipe. Berikut adalah syarat yang harus
dipenuhi dalam menyelesaikan tugas ini:
1. Fungsi dalam class generic:
Tipe Nama Method Deskripsi
Segitiga(T alas, T tinggi) Inisialisasi variabel alas dan
Constructor
tinggi.
getResultAsInt() Mendapatkan hasil
Int
perhitungan luas segitiga
dalam bentuk tipe integer.
getResultAsDouble() Mendapatkan hasil
Double
perhitungan luas segitiga
dalam bentuk tipe double.
2. Memanfaatkan fungsi Scanner untuk menerima input nilai alas dan tinggi dari user
3. Contoh inisialisasi object pada main dapat dilakukan seperti ini:
Segitiga<Integer> luasTipeInt = new Segitiga<>();
Segitiga<Double> luasTipeDouble = new Segitiga<>();
Mahasiswa diperbolehkan melakukan improvisasi dari tugas yang diberikan dengan syarat tidak
mengurangi ketentuan yang ada.
CATATAN
Aturan umum penulisan JAVA agar mudah dikoreksi oleh asisten:
1. Untuk nama class, enum, dan yang lainnya biasakan menggunakan gaya CamelCase (diawali
dengan huruf besar pada tiap kata untuk mengganti spasi) seperti: Kursi, JalanRaya,
ParkiranGedung, dan lain seterusnya.
2. Untuk penulisan nama method dan attribute diawali dengan huruf kecil di awal kata dan
menggunakan huruf besar untuk kata setelahnya, seperti: getNamaJalan, namaJalan, harga,
setNamaJalan, dan lain seterusnya.
3. Jika menggunakan IDE Intellij jangan lupa untuk memformat kode agar terlihat rapi menggunakan
menu code -> show reformat file dialog -> centang semua field dan klik ok.
Kriteria Nilai
Semua Ketentuan Pada Tugas Praktikum Terpenuhi 40
Saat Demo dan Kerapihan Code Serta Tidak Ada
Plagiasi
Mengerjakan Latihan Praktikum 40
Presensi Kehadiran 20