[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 menyerupai 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 teladan 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 teladan perkara sederhana di bawah :
Contoh perkara 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.
Fungsi swap pada C#
Pada C# fungsi swap menjadi jauh lebih gampang dibanding C++ alasannya memang dasarnya C# ialah bahasa pemrograman yang cukup modern. Untuk menciptakan parameter pass by reference cukup gunakan kata kunci ref.
Pada dasarnya java sama sekali tidak memakai pass by reference dan tidak dikenal istilah pass by reference pada method java. Namun perlu diingat wacana 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 resah yah deskripsi saya? saya juga resah mau nulis kayak gimana :p Ok pribadi aja ke teladan :
Pertama buat dulu Ref.java
Kamudian ini fungsi swapnya ada di PassByReferenceClass.java
Dan outputnya ialah sbb :
Sumber http://duniadigit.blogspot.com/
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 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 wacana 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 resah yah deskripsi saya? saya juga resah mau nulis kayak gimana :p Ok pribadi aja ke teladan :
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 menyerupai 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 teladan 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 ^^