google-site-verification: googleb4c12044f63f46ba.html Pemograman Polimorfisme Statis – Generic Type Skip to main content

Featured

STRUKTUR DATA SEARCHING (PENCARIAN)

SEARCHING (PENCARIAN).       Dalam kehidupan sehari-hari sebenarnya kita sering melakukan pencarian data. Pencarian data sering juga disebut table look-up atau storage and retrieval information adalah suatu proses untuk mengumpulkan sejumlah informasi di dalam pengingat komputer dan kemudian mencari kembali informasi yang diperlukan secepat mungkin.       Algoritma pencarian (searching algorithm) adalah algoritma yang menerima sebuah argumen kunci dan dengan langkah-langkah tertentu akan mencari rekaman dengan kunci tersebut. Setelah proses pencarian dilaksanakan, akan diperoleh salah satu dari dua kemungkinan, yaitu data yang dicari ditemukan (successful) atau tidak ditemukan (unsuccessful). Ada beberapa pencarian yang akan kita uraikan disini: Pencarian Beruntun (Sekuensial Search). Pencarian Bagi dua (Binary Search). I. PENCARIAN BERURUTAN (SEKUENSIAL SEARCH).        Pencarian berurutan sering disebut pencari...

Pemograman Polimorfisme Statis – Generic Type

1. Indikator Topik Pembahasan.

  • Mampu memahami konsep Parametric polimorfisme.
  1. Mengenal metode overload - generik.
  2. Menerapkan generik pada metode.
  3. Menerapkan generik pada class.   
2. Peralatan yang digunakan.
  • Visual Studio 2017 Community.
3. Materi Pembelajaran.
     Salah satu bentuk dari polimorfisme statis adalah parametrik polimorfisme. Berbeda dengan ad-hoc polimorfisme yang menggunakan metode overload, parametrik polimorfisme dapat menyederhanakan metode overload sehingga menjadi lebih efektif. 

Parametric Polymorphism.
    Di dalam bahasa pemrograman berorientasi objek, polimorfisme parametrik adalah cara untuk membuat bahasa yang lebih ekspresif, sambil tetap mempertahankan type-safety statis penuh. Menggunakan polimorfisme parametrik, fungsi atau tipe data dapat ditulis secara umum sehingga dapat menangani nilai secara identik tanpa tergantung pada jenisnya. Polimorfisme parametrik menggunakan konsep yang dikenal dengan nama generik. 
     C# generik dan C++ template keduanya adalah fitur bahasa yang menyediakan dukungan untuk jenis parametrik. Namun, ada banyak perbedaan diantara keduanya. Pada tingkat sintaks, pendekatan C# generik lebih sederhana untuk jenis parameterized tanpa kompleksitas seperti yang ada pada C++ template. Selain itu, C# tidak berusaha untuk menyediakan semua fungsionalitas seperti yang C++ template sediakan. Pada tingkat implementasi, perbedaan utamanya bahwa C# generik melakukan substitusi pada tipe dalam runtime dan informasi jenis generik yang disiapkan untuk objek yang dipakai. Berikut perbedaan antara C# generik dengan C++ templates: 

  1. C# generik tidak memberikan kadar fleksibilitas yang sama sebagai C++ template.
  2. C# generik tidak mengizinkan parameter non-jenis template, seperti template C {}.
  3. C# generik tidak mendukung spesialisasi eksplisit; yaitu, implementasi kustom dari template untuk jenis tertentu.
  4. C# generik tidak mendukung spesialisasi parsial: penerapan kustom untuk subset jenis argumen.
  5. C# generik tidak mengizinkan jenis parameter untuk digunakan sebagai kelas dasar untuk jenis generik.
  6. C# generik tidak mengizinkan jenis parameter untuk memiliki jenis default. 
  7. Dalam C#, jenis generik parameter tidak bisa menjadi generik sendiri, meskipun dibangun jenis yang dapat digunakan sebagai generik.
       C++ mengizinkan kode yang mungkin tidak valid untuk semua jenis parameter dalam template, yang kemudian diperiksa untuk jenis tertentu yang digunakan sebagai tipe parameter. C# memerlukan kode di dalam kelas untuk ditulis sedemikian rupa sehingga akan bekerja dengan jenis apapun yang memenuhi konstrain.  

Class dan Metode Generik.
    Konsep generik dapat diberlakukan dibanyak tempat, seperti: metode, class, interface, dan delegate. Berangkat dari konsep metode overload, generik dapat melakukan subtitusi pada tipe data sehingga dapat dideklarasikan berbeda-beda sesuai kebutuhan. Perhatikan contoh berikut: 



Pada contoh diatas, terdapat tiga buah metode overload dengan tipe parameter dan kembalian nilai yang berbeda, tetapi memiliki isi konten yang identik. Metode overload yang identik seperti ini dapat dilakukan berulang-ulang. Jika jumlah parameter dan konten yang berada pada tubuh metode identik sama, maka konsep generik dapat diberlakukan. Pada konsep dasarnya, generik akan mengganti semua tipe dasar yang ada didalam metode dengan karakter T. dan dalam penulisan kodenya nanti, T akan diganti oleh tipe data apapun sesuai dengan kondisi yang berlaku. Pendefinisian tipe pada generik diberikan didalam tanda kurung sudut "<>". Perhatikan metode yang sudah dirubah menjadi generik.

Metode yang telah dirubah menjadi generik dapat dipanggil berulang-ulang dengan tipe data yang berbeda-beda. Programmer bisa mendapatkan keuntungan dalam segi penulisan kode hingga penggunaan kode bersama-sama.

Konstrain dalam Generik.
      Konstrain memberikan informasi kepada kompilator tentang kemampuan jenis argumen yang harus memiliki. Tanpa konstrain, jenis argumen bisa menjadi jenis apapun. Kompiler hanya dapat mengasumsikan anggota-anggota yang ada pada System.Object, yang merupakan kelas dasar untuk setiap jenis pada dotNET. Untuk informasi lebih lanjut, tentang mengapa menggunakan konstrain. Jika kode pengguna mencoba untuk melakukan instansi pada kelas dengan menggunakan jenis yang tidak diizinkan oleh konstrain, hasilnya adalah compile-time-error. Konstrain ditentukan dengan menggunakan kata kunci kontekstual. Berikut daftar tujuh jenis konstrain yang dapat digunakan sebagai opsional: 


Beberapa konstrain yang saling eksklusif. Semua jenis nilai harus memiliki konstruktor parameterless (default konstruktor) yang dapat diakses. Batasan struct menyiratkan konstrain new() dan konstrain new() tidak dapat dikombinasikan dengan konstrain struct. Batasan yang tidak dikelola menyiratkan batasan struct. konstrain unmanaged tidak dapat digabungkan dengan konstrain struct atau new(). Berikut contoh pembuatan class generik dengan menggunakan konstrain.


     Dengan membatasi jenis parameter, Programmer dapat meningkatkan jumlah operasi yang diijinkan dan pemanggilan metode yang didukung oleh jenis konstrain dan semua jenis dalam hirarki pewarisan. Ketika merancang kelas generik atau metode generik, jika akan melakukan operasi apapun pada anggota generik di luar tugas sederhana atau memanggil metode apapun yang tidak didukung oleh System.Object, maka harus menerapkan konstrain untuk jenis parameter. 
         Penggunaan generic akan dicontohkan pada program dibawah ini. Program tersebut akan dibuat dua class model yang berelasi pewarisan. Terdapat satu class yang akan memproses CRUD, dimana class tersebut dibuat generik. Perhatikan contoh program berikut.  



Pada program diatas class ProductionProgress dibuat generik dengan class model Product sebagai konstrain. Sehingga class ProductionProgress ketika diinstasikan, maka objeknya dapat dibuat menjadi semua class-class yang mendapat warisan dari class model Product. 






Comments

Popular Posts