Minggu, 05 Januari 2014

Coupling (Kopling)

Kopling dapat diartikan bagaimana sebuah aplikasi atau modul atau kelas saling berhubungan dan bergantung. kopling itu merupakan suatu ukuran derajat inter-dependen antara modul-modul sistim. Pemodulan sistem akan mengurangi kopling dan sebaliknya mempermudah pengertian bagaimana setiap modul berfungsi. Modul yang tidak tergantung kepada modul lain dikatakan dengan memiliki kopling yang rendah. Derajat minimum kopling antara modul-modulsistem akan menghasilkan sistem yang terancang baik dan berfungsi lebih baik.

Jenis-jenis Coupling yaitu:
  1. No Direct Coupling
ð  Apabila modul 1 dan modul 2 adalah subordinate terhadap modul-modul yang berbeda. Sehingga masing-masing tidak berhubungan dan dan tidak ada penggandengan langsung yang terjadi antara keduanya.
Contoh :
class A {
private int suatuNilai;
A(int suatuNilai) {
this.suatuNilai = suatuNilai; }
public int getSuatuNilai() {
return suatuNilai; }
public void setSuatuNilai(int suatuNilai) {
this.suatuNilai = suatuNilai; } }
class B {
void suatuMethod() {
A a = new A(10);
System.out.println("a.suatuNilai = " +a.getSuatuNilai());
//Kelas B hanya mengetahui kelas A
}


  1. External Coupling
ð  Tingkat coupling yang terjadi bila modul-modul terikat pada lingkungan luar (external) dari perangkat lunak.
·         Dua modul atau lebih menggunakan data global yang sama
·         Tidak ada parameter yang digunakan dari modul pemanggil kesubordinate dan sebaliknya
Contoh :
Calculate_sales_tax
IF product is sales exemt THEN
sales_tax = 0
ELSE
IF product_price < $50 THEN
sales_tax = sales_price * 0.25
….
….
ENDIF
ENDIF
Calculate_amount_due
amount_due = total_amount + sales_tax
END


  1. Inclusion (Import Coupling)
ð  Tingkat level kopling yang terjadi ketika salah satu komponen mengimpor atau menggunakan paket komponen Lain.
·         Komponen termasuk dalam komponen disertakan atau diimpor.
·         Komponen yang mengimport akan mengalami perubahan komponen jika paket komponen yang diimport dirubah.
·         Item dalam komponen yang diimpor mungkin memiliki nama yang samadengan komponen lainya
Contoh :
package riza; public class Bilangan {
private int desimal;
public void setDesimal (int desimal) {
if(desimal>=0) { this.desimal = desimal; }
else { this.desimal = -desimal; } }
public int getDesimal() {
return this.desimal; }
public String biner() { String hasil="";
I nt sisa = this.desimal;
do { hasil = sisa % 2 == 1 ? "1" + hasil : "0" + hasil ;sisa /= 2; } while (sisa > 0);
return hasil; } }
import riza.Bilangan;
class Utama {
public static void main(String[] args) {
Bilangan x = new Bilangan();
x.setDesimal(-44);
System.out.println("Bilangan biner dari "+ x.getDesimal() + "adalah "+ x.biner()); } }

  1. Type Use Coupling
ð  Tingkat level kopling yang terjadi terjadi ketika salah satu komponenmenggunakan jenis data yang didefinisikan dalam komponen lain.
·         Setiap saat kelas menyatakan instance variable atau variabel lokal memiliki kelas lain untuk jenisnya.
Contoh :
class A {
private int x = 101;
class B {
void lakukanSesuatu() {
System.out.print("x = " + x); } } }
public class mencoba{
public static void main(String[] args) {
A a = new A();  A.B b = a.new B(); b.lakukanSesuatu(); } }

  1. Routine call coupling
ð  Beberapa jenis kopling yang sering terjadi secara rutin pada pemrogramanberorientasi obyek.
·         Enkapsulapsi urutan berulang

Contoh :
package sekolah;
import java.util.collection.*; //import kopling
public class kelas {
private Stack s; //tipe kopling public void doSomething(){
s.push(x); // routine kopling
}
.....

  1. Data Coupling
ð  Dua buah modul dari sistem mempunyai data coupling jika komunikasidari modul-modul ini dilakukan lewat suatu data. Data dapat berupasebuah item data tunggal atau elemen dari suatu larik (array).
·         Komunikasi diantara modul menggunakan data, meminimalkan jumlahdata
·         Parameter data yang disalurkan semakin sedikit semakin baik
Contoh :
A.Process_customer_record
calculate_sales_tax(total_price, sales_tax)
B.Calculate_sales_tax
IF total_price > 5000 THEN
sales_tax = total_price * 0.25
Else
If total_price > 4000 THEN
sales_tax = total_price * 0.2Elsesales_tax = total_price * 0.15
ENDIF
ENDIF
ENDIF


  1. Stamp Coupling
ð  Dua buah modul dikatakan stamp coupling jika kedua modul iniberkomunikasi lewat suatu kelompok item data. Kelompok item datadapat berupa suatu record yang terdiri dari beberapa field atau larik yangterdiri dari beberapa elemen.
·         Dua modul melakukan pass struktur data non global yang sama
·         Struktur data: record, array
·         Bila modul memeriksa struktur data tetapi hanya menggunakan sebagiandata akan membahayakn system
Contoh :
Proses_transaction_record
proses_male_student (current_record)
END
Proses_male_student (current_record)
increment male_student_count (current_record)
If student_age > 21 THEN
increment_mature_male_count
ENDIF
END


8.      Control Coupling
ð  Control coupling ditandai dengan adanya alur kendali antara modul. Modulsatu mengendalikan aliran data di modul yang lain, kendali dilakukanmelalui flag yang mengontrol logika intern modul yang lain.
  • Dua modul melakukan passing parameter menggunakan data kontrol(flag/switch) 
Contoh :
Process_input_coderead
input_codechoose_appropriate_action (input_code)
END
Choose_appropriate_action (input_code)
CASE OF input_code
1 : read employee record
2 : print_page_heading
3 : open employee master file
4 : set page_count to zero
5 : error_message =‘Employee number not numeric’
ENDCASE
END

9.      Common Coupling
ð  Modul-modul dikatakan common coupling jika modul-modul tersebutmenggunakan data yang disimpan di area memori yang sama.
  • Dua modul atau lebih menggunakan struktur data global yang sama.
Contoh :
Read_customer_record
read customer record
IF EOF THEN
set EOF_flag to true
ENDIF
END
Validate_customer_record
IF customer_number is NOT numeric THEN
error_message = ‘invalid customer number’
ENDIF
END


10.  Content Coupling
ð  Content coupling terjadi jika suatu modul menggunakan data ataumengendalikan informasi dari modul yang lain tanpa berhubungan lewatsuatu parameter. Content coupling dapat juga terjadi jika percabangandilakukan ke tengah-tengah suatu modul yang lain.
  • Satu komponen yang mengacu pada isi dari komponen lain
  • Komponen memodifikasi data lain secara langsung
  • Komponen mengacu pada data lokal dari komponen lain dalampenggantian/pemindahan numerik
  • Komponen memodifikasi kode yang lain, contohnya melompat ke tengah-tengah rutinitas.
Contoh :
public class StudentRecord {
private String name;
private int[ ] quizScores;
public String getName() {
return name; }
public int getQuizScore(int n) {
return quizScores[n];
}
public int[ ] getAllQuizScores() {

return quizScores;}

2 komentar:

  1. Terimakasih.. tulisannya sangat bermanfaat..
    My blog

    BalasHapus
  2. Artikel yang sangat informatif.

    Kunjungi website kami untuk mendapatkan produk terbaik.
    PT Duta Rantai Mas
    Suplier terbesar dan terlengkap di Indonesia
    Conveyor Components
    Power Transmissions

    BalasHapus

Followers