Generic Programming Dan Collection #1
Desclaimer guys!
Hello everyone First of All thank you for visit my article in Medium, in this article i will present you about Generic Programming Dan Collection, i will delivers this article in Bahasa but some example or coding include in english.
Happy Coding All Readers!!
Apa itu Generic Programming?
Teman-teman semua pada pemrogramana berorientasikan objek ada sebuah konsep permrograman yang dikenal dengan sebutan Generic Programming.
Generic Programming adalah sebuah cara pandang pemrograman yanf memungkinkan seorang pembuat kelas menunda pemberian tipe pada atribut dan method(istilah lain dari konsep ini adalah “types-to-be-specified-later”) sehingga kelas yang dibuat bisa digunakan untuk tipe data yang berbeda.
Kedua jenis sample code ini adalah ilustrasi program untuk tipe data yang berbeda. Untuk setiap tipe data yang berbeda kita harus membuat satu kelas tersendiri sedangkan kegunaannya sama.
Untuk mengifisienkan desain kelas untuk kasus-kasus seprti ini , kita bisa gunakan konsep generic programming. Konsep generic programming di Java sendiri bisa diimplemntasikan menggunakan dua konsep, yaitu :
- Konsep tipe Objek/Object
- Konsep tag generic <T>.
Penerapan Konsep Tipe Objek/Object
“Object” Sebenarnya adalah kelas bawaan di Java sehingga bisa dugnakan sebagai tipe dari atribut maupun method tertentu.
Ide dasar sari konsep ini adalah atribut dan method dideklarasikan menggunakan tipe “Object” sehingga nanti ketika ada objek yang ingin menggunakan atribut dan method di kelas tesebut, objek tersebut tinggal mendeskripsikan ulang kelas tipe data yang ingin digunakan.
Teman-teman mari kita implementasikan desian kelas tersebut.
Kelas PertukaranNilai.java :
public class PertukaranNilai {
private Object datasatu;
private Object datadua;
private Object temp;
public Object getDatasatu(){
return datasatu;
}
public void setDatasatu(Object datasatu) {
this.datasatu = datasatu;
}
public Object getDatadua(){
return datadua;
}
public void setDatadua(Object datadua) {
this.datadua = datadua;
}
public void tukarNilai(){
temp = datasatu;
datasatu = datadua;
datadua =temp;
}
public void temapilHasilTukar(){
System.out.println("Nilai Variable Satu Sesudah Ditukar = " + datasatu);
System.out.println("Nilai Variable Dua Sesudah Ditukar = " + datadua);
}
}
Kelas Tester.java :
package generiicobject;
import Abstrak.Persegi;
public class Tester {
public static void main(String[] args) {
PertukaranNilai pertukarannilai = new PertukaranNilai();
pertukarannilai.setDatasatu(10);
pertukarannilai.setDatadua(20);
pertukarannilai.tukarNilai();
pertukarannilai.temapilHasilTukar();
pertukarannilai.setDatasatu(" Otong ");
pertukarannilai.setDatadua(" uhuy ");
pertukarannilai.tukarNilai();
pertukarannilai.temapilHasilTukar();
}
}
Selain kita langsung medeskripsikan nilai pada setter, kita bisa mendeskirpsikan dulu nilai tersebut dalam sebuah variable.
Mari kita buat kelas dengan nama TesterVariable.java :
public class TestVariable {
public static void main(String[] args) {
PertukaranNilai pertukarannilai = new PertukaranNilai();
Integer a = 10;
Integer b = 20;
pertukarannilai.setDatasatu(a);
pertukarannilai.setDatadua(b);
pertukarannilai.tukarNilai();
pertukarannilai.temapilHasilTukar();
String nama1 = " badu ";
String nama2 = " wadidaw ";
pertukarannilai.setDatasatu(nama1);
pertukarannilai.setDatadua(nama2);
pertukarannilai.tukarNilai();
pertukarannilai.temapilHasilTukar();
}
}
Penggunaan konsep “Object” ini memungkinkan stter untuk diisi tipe data yang berbeda.
Tetapi teman-teman, jika kita perhatikan baik-baik maka penggunaan konsep “Object” untuk kasus seperti ini kurang baik. Kenapa kurang baik?
Objek dari kelas mengandung konsep “Object” tidak spesifik terhadap suatu jenis data sehingga bisa menyebabkan kebingungan ketika kita menggunakannya. Untuk mengurangi efek seperti itu teman-teman, mari ktia pelajari konsep selanjutnya agar kesalahan seperti itu bisa dikurangi.
Penerapan Tag Generic <E>
Teman -teman semua selain menggunakan konsep “Object” yang telah kita ulas tadi, ternyata kita juga bisa menggunakan fitur lain di Java yaitu Tag Generic.
Tag Generic ini biasanya diwakili oleh simbol <E> walaupun sebetulnya kita bisa mengganti huruf yang diapit oleh kedua kurung siku tersebut. Tag inilah nantinya yang akan dideklarasi menjadi kelas tipe data.
Apa Perbedaannya dengan konsep “Object”?
- Pada konsep Tag ini mengharuskan kita memilih satu dari sekian banyak tipe data ketika kelas data mendeklarasi objek pada kelas yang mengandung Tag Generic.
- Pada konsep “Object” kita bebas mengganti tipe data dengan sembarang.
Mari kita implemetasikan desain kelas berikut ini.
Kelas PertukaranNilai.java :
public class PertukaranNilai<E> {
private E datasatu;
private E datadua;
private E temp;
public E getDatasatu(){
return datasatu;
}
public void setDatasatu(E datasatu) {
this.datasatu = datasatu;
}
public E getDatadua(){
return datadua;
}
public void setDatadua(E datadua) {
this.datadua = datadua;
}
public void tukarNilai(){
temp = datasatu;
datasatu = datadua;
datadua =temp;
}
public void temapilHasilTukar(){
System.out.println("Nilai Variable Satu Sesudah Ditukar = " + datasatu);
System.out.println("Nilai Variable Dua Sesudah Ditukar = " + datadua);
}
}
Tester.java :
public class Tester {
public static void main(String[] args) {
PertukaranNilai<Integer> pertukarannilai = new PertukaranNilai<>();
pertukarannilai.setDatasatu(10);
pertukarannilai.setDatadua(20);
pertukarannilai.tukarNilai();
pertukarannilai.temapilHasilTukar();
PertukaranNilai<String> tukarannilai = new PertukaranNilai<>();
tukarannilai.setDatasatu(" Otong ");
tukarannilai.setDatadua(" uhuy ");
tukarannilai.tukarNilai();
tukarannilai.temapilHasilTukar();
}
}
Nb: Penggunaan Tag generic lebih disarankan karena pertukaran antarkelas tipe data dilakukan decara eksplisit per objeknya.