Lompat ke konten Lompat ke sidebar Lompat ke footer

[Oop] Pass By Reference Di Java Dan C#

 Mungkin bagi Anda seorang programmer tentu sudah sangat familiar dengan nama Java dan C#. Ya.. Keduanya ialah bahasa pemrograman berbasis OOP yang berdasarkan saya sangat ibarat dalam hal penggunaannya. Kedua bahasa ini merupakan bahasa yang cukup terkenal dan cukup bersaing kalau dibanding bahasa pemrograman lainnya.

Pada artikel kali ini saya akan membahas sedikit pola pembuatan method dengan parameter pass by reference di java dan C#. Pass by reference sendiri merupakan suatu method yang melewatkan alamat dari suatu variabel, bukan isi dari variabel. Untuk lebih jelasnya silahkan simak pola kasus sederhana di bawah :

Contoh kasus Pass by reference :
Misal saya mempunyai 2 buah variabel integer, misal : 
int a = 5, b = 10;
Kasusnya saya akan menukar nilai kedua variabel ini melalui suatu method 
swap(int a, int b)
Nah.. bagaimana cara membuatnya?? Tidak sanggup memakai return value bukan? Satu-satunya cara ialah dengan memakai pass by reference.

Nah disini saya akan membahas cara menciptakan method / fungsi swap dalam beberapa bahasa pemrograman, khususnya java dan C#. Sebelum melangkah ke java dan C# mari kita tengok sedikit fungsi swap pada bahasa C++.

Fungsi swap pada C++
Pada C++ pass by reference sanggup kita lakukan dengan memperlihatkan parameter berupa pointer dengan tanda * dan untuk melewatkan variabel gunakan tanda & yang menyatakan alamat atau reference dari suatu variabel.
 
void swap(int* a, int* b){   int* temp = a;   a = b;   b = temp;
}  int main(){  int x = 5, y = 10;  int *a = &x, *b = &y;  swap(a, b);  printf("%d %d\n"), *a, *b); //print : 10 5 }



Fungsi swap pada C#
Pada C# fungsi swap menjadi jauh lebih gampang dibanding C++ alasannya ialah memang dasarnya C# ialah bahasa pemrograman yang cukup modern. Untuk menciptakan parameter pass by reference cukup gunakan kata kunci ref.

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;  namespace ConsoleApplication1{     class Program{         static void Main(string[] args){             int x=5, y=10;             swap(x, y);                          Console.Write(x); //print : 10             Console.Write(y); //print : 5         }          static void swap(ref int a, ref int b){             int temp = a;             a = b;             b = temp;         }     } }  
Fungsi swap pada Java
Pada dasarnya java sama sekali tidak memakai pass by reference dan tidak dikenal istilah pass by reference pada method java. Namun perlu diingat perihal teori dasar java bahwa secara implisit untuk menghemat memori, java akan me-reference alamat yang sama dari satu obyek (instance) yang sama meskipun ditunjuk oleh variabel yang berbeda. Mungkin galau yah deskripsi saya? saya juga galau mau nulis kayak gimana :p Ok pribadi aja ke pola :
public class MainClass {     public static void main(String[] args) {         Mobil a = new Mobil(100);         Mobil b = a;         System.out.println(b); //print : 100         a.setKecepatan(50);         System.out.println(b); //print 50            }        private static class Mobil{         private int kecepatan = 100;          public Mobil(int kecepatan) {             this.kecepatan = kecepatan;         }          public void setKecepatan(int kecepatan) {             this.kecepatan = kecepatan;         }                @Override         public String toString() {             return "Mobil kecepatan : " + this.kecepatan;         }           } }
 
 
Output :
run: Mobil kecepatan : 100 Mobil kecepatan : 50 BUILD SUCCESSFUL (total time: 0 seconds) 
 
Kita lihat padascript di atas, kita sama sekali merubah value dari variabel b, yang kita rubah hanya variabel a dengan script a.setKecepatan(50). Namun yang terjadi b juga ikut berubah, terbukti dikala di print nilainya menjadi 50, sama ibarat a. Hal ini memperlihatkan bahwa a dan b menunjuk pada alamat memori yang sama, sehingga kalau salah satu di rubah maka akan berdampak pada yang lainnya. Penunjukan alamat memori yang sama ada dalam statement Mobil b = a; Sifat menunjuk alamat memori yang sama inilah yang sanggup kita manfaatkan untuk pass by reference di java. Kita juga sanggup memanfaatkan type data Generic untuk menciptakan obyek reference yang fleksibel. Langsung saja pola pass by reference di java :

Pertama buat dulu Ref.java
 
public class Ref<T> {     public T value;      public Ref(T value) {         this.value = value;     }      @Override     public String toString() {         return this.value.toString();      }  }

Kamudian ini fungsi swapnya ada di PassByReferenceClass.java

public class PassByReferenceClass {     public static void main(String[] args) {         Ref<Integer> x = new Ref<>(5);         Ref<Integer> y = new Ref<>(10);                  swap(x, y);                  System.out.println(x + " " + y);     }            public static void swap(Ref a, Ref b){         Object temp = a.value;         a.value = b.value;         b.value = temp;     } }
 
 
 
Dan outputnya ialah sbb :
 
run: 10 5 BUILD SUCCESSFUL (total time: 0 seconds)  
Ok... Mungkin sekian artikel saya ini, kurang lebihnya saya mohon maaf. Tetap semangat dan terus berkarya ^^


Sumber http://duniadigit.blogspot.com/