google-site-verification: googleb4c12044f63f46ba.html Pemograman Relasi Antar Class 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 Relasi Antar Class


1. Indikator Topik Pembahasan.

  • Mampu memahami
  1. Hubungan Dependensi dalam Class.
  2. Hubungan Asosiasi dalam Class.
  3. Hubungan Agregasi dalam Class.
  4. Hubungan Komposisi dalam Class.
2. Materi Pembelajaran.
      Ketika kasus yang dibuat pada program berkembang, maka jumlah class yang dibuat akan bertambah. Ketika hal tersebut terjadi, maka akan memungkinkan terjadinya jalinan hubungan antara class-class yang ada. Pada konsep pendekatan berorientasi objek dengan pemodelan UML (Unified Modeling Language), dikenal sedikitnya 6 jenis hubungan yang dapat dijalin antara class dalam lingkup program. Hubungan-hubungan tersebut antara lain: Dependensi, Asosiasi, Agregasi, Komposisi, Generalisasi, Realisasi.
       Masing-masing dari hubungan relasi memiliki tingkatan yang berbeda. Mulai dari hubungan class yang lemah, hubungan class yang kuat sampai dengan hubungan base class dengan class turunannya. Class yang menjalin hubungan relasi, akan menciptakan populasi objek yang beragam dengan data-data yang akan menjadi lebih komplek dan mendalam.  

Hubungan Dependensi 
      Dependensi merupakan hubungan antara dua class yang paling lemah. Hubungan ini adalah hubungan ketergantungan yang sepihak, hanya terjalin jika salah satu class membutuhkan class lain.


       Hubungan dependensi terjadi didalam metode dan hadir sebagai tipe dari sebuah parameter. Jika ada sebuah class dengan nama Transaksi yang memiliki metode, dimana metode tersebut memiliki sebuah parameter dengan tipe class Dishes (class lain) , maka class Transaksi akan dinyatakan memiliki hubungan dependensi dengan class Dishes. 


    Hubungan dependensi dikatakan hubungan lemah dikarenakan class Transaksi hanya membutuhkan class Dishes ketika metode yang yang memuat dependensi dipanggil. Ketika metode pada class Transaksi dipanggil, tidak ada jaminan bahwa class Dishes yang berelasi sudah diinstansikan. Hubungan dependensi rentan terjadinya kesalahan "object-null-reference" apabila class yang direlasikan tidak diinstansikan atau daur hidup objeknya sudah dibersihkan oleh "Garbage Collector"(GC).  

Hubungan Asosisasi 
     Asosiasi merupakan hubungan yang biasa dikatakan "menggunakan" (uses). Setingkat diatas dependensi, Hubungan asosiasi masih dikatakan lemah. Kesalahan "object-null-reference" masih terjadi pada hubungan ini. 



         Hubungan asosiasi ditandai dengan adanya sebuah atribut dengan tipe class yang bersarang pada class lain. Class Transaksi memiliki sebuah atribut dengan tipe yang bukan primitif. Tipe tersebut adalah sebuah class dengan nama Dishes. Dapat dikatakan, bahwa class Transaksi menggunakan class Dishes dalam daur hidupnya. Kata menggunakan tersebut diartikan class Transaksi menjalin hubungan asosiasi terhadap class Dishes.
       Sama halnya dengan hubungan dependensi. Hubungan asosiasi tidak menjamin class yang berelasi sudah diinstansikan. Class Transaksi ketika menjalin hubungan asosiasi dengan class Dishes, maka class Dishes harus diinstansikan terlebih dahulu untuk menghindari kesalahan. Sebab class Transaksi tidak menjamin apakah class Dishes sudah melakukan instansi atau belum. 

    Dalam bahasa Csharp, asosiasi digunakan pada properti (getter-setter). Perbedaan antara dependensi dan asosiasi adalah dependensi hanya terjadi dimetode dan hadir sebagai parameter dengan kata lain hubungan terjadi apabila metode tersebut dipanggil. Sedangkan asosiasi hadir sebagai atribut atau properti, ketika objek sudah diinstansikan maka atribut atau properti tersebut sudah langsung menjalin relasi. Atribut dan properti tersebut dapat digunakan disemua metode yang ada pada class. 
      Penerapan hubungan asosiasi kemudian dibagi menjadi 2 hubungan baru. Yaitu agregasi dan komposisi. Dua hubungan baru ini memiliki kekuatan ikatan yang melebihi dari asosiasi dan dependensi. 

Hubungan Agregasi     
     Perluasan dari hubungan asosiasi. Agregasi berarti "memiliki" (has). Kesalahan "object-null-reference" pada hubungan ini, mulai diperkecil. Hubungan ini akan meminta class yang berelasi untuk melakukan instansi. Jelas hubungan memiliki ikatan relasi yang lebih baik dari pada asosiasi. 



       Hubungan agregasi serupa dengan asosiasi, yaitu memiliki sebuah atribut dengan tipe dari class lain. Namun hubungan diperkuat dengan adanya dependensi pada konstruktornya. Keberadaan dependensi pada konstruktor menyebabkan ketika class diinstansikan, maka class tersebut akan meminta sebuah objek yang sudah diinstansikan. 
       Class Transaksi ketika membuat sebuah atribut dengan tipe class Dishes, maka akan menandakan hubungan asosiasi. Namun ketika konstruktor class Transaksi memiliki sebuah parameter dengan tipe class Dishes (dependensi), maka hubungan agregasi akan terbentuk.  


 Setiap kali class Transaksi diinstansikan kedalam objek, maka proses instansi akan menginginkan adanya objek dari class Dishes untuk diikut sertakan sebagai argumen dari proses instansi. Hubungan ini dinyatakan kuat karena dapat mengurangi kemungkinan terjadinya kesalahan "object-null-reference".
           Meskipun hubungan ini kuat, namun hubungan masih dapat dikatakan lemah. Daur hidup dari objek Transaksi berbeda dengan daur hidup objek Dishes. Ketika daur hidup objek Transaksi selesai dan dibersihkan, Daur hidup dari objek Dishes masih dapat hidup dan aman dari proses pembersihan. Dengan kata lain objek dari class Dishes tidak dipengaruhi oleh daur hidup objek dari class Transaksi. 

Hubungan Komposisi.
       Peningkatan dari hubungan asosiasi. Komposisi menghadirkan sebuah hubungan relasi yang sangat kuat. Dalam artian atribut class lain yang digunakan aman dari kesalahan "object-null-reference". Komposisi diartikan "Pasti memiliki" (Own). Dalam hubungan relasi komposisi, tambahan dependensi sudah tidak lagi dibutuhkan. Berbeda dari agregasi yang memanfaatkan dependensi untuk memperkuat hubungannya. 
      Hubungan asosiasi dan agregasi memiliki atribut dengan tipe dari class lain, namun proses instansi masih dilakukan diluar lingkup class. Sedangkan hubungan komposisi akan langsung melakukan proses instansi terhadap setiap atribut dengan tipe dari class lain langsung didalam lingkup classnya. Hal inilah yang akan membuat komposisi menjadi hubungan yang kuat. 




Contoh diatas memperlihatkan class Transaksi memiliki sebuah atribut dengan tipe class Dishes. Komposisi terbentuk ketika atribut tersebut langsung diinstansikan didalam konstruktor default yang dimiliki class Transaksi. Objek yang diinstansikan dari clas Transaksi akan langsung memiliki objek Dishes yang sudah terinstansi dan siap digunakan tanpa adanya ancaman kesalahan "object-null-reference".
       Proses instansi internal yang dilakukan komposisi dapat ditempuh dengan 2 cara: Pertama dengan melakukan instansi didalam tubuh konstruktor default. Kedua dengan melakukan instansi langsung ketika atribut atau properti dideklarasikan.
              

Hubungan komposisi akan menghilangkan keraguan programer akan hubungan objek yang null. Komposisi lebih baik digunakan untuk menangani ketergantungan penuh antara class dengan class yang lain. Namun perlu diperhatikan, ketika objek dengan hubungan komposisi diinstansikan maka otomatis menciptakan dua objek bahkan lebih tergantung dari berapa banyak atribut class lain yang digunakan. Dan ketika daur hidup objek selesai, maka semua objek yang dikomposisikan akan ikut menghilang

Berikut contoh lengkap dari 3 buah class dengan dengan 2 hubungan relasi (komposisi dan dependensi) yaitu class Dishes, Transaction, dan Process.


       Akan menjadi sebuah tugas dan pertimbangan yang matang dari seorang programmer untuk memilah-milah kebutuhan akan hubungan relasi yang harus dibuat untuk menghubungkan antara class-class yang tersedia. Setiap hubungan memiliki keuntungan dan kelemahan yang perlu dipertimbangkan demi menjaga performa dari program yang akan dihasilkan. 
     Semakin lemah hubungan maka akan semakin tinggi peluang terjadinya kesalahan, namun hubungan ketergantungan yang lemah akan membuat penggunaan objek lebih sedikit dan lebih fleksibel. Sedangkan semakin kuat hubungan maka akan semakin rendah peluang terjadinya kesalahan dan pastinya beban memori bertambah karena objek yang diinstansikan akan lebih banyak dan tidak fleksibel. 
     Selain 4 hubungan yang sudah dibahas, Masih terdapat 2 hubungan yang jauh lebih kuat. Hubungan ini dikenal dengan nama “Generalisasi” dan “Realisasi”. Hubungan ini akan dibahas lebih dalam pada pembahasan selanjutnya.  














 

Comments

Popular Posts