Operator Overloading pada bahasa pemrograman C#
Sebelumnya idcsharp telah menjelaskan mengenai Operator pada bahasa pemrograman C#, apakah yang dimaksud dengan operator ?
Operator adalah simbol atau karakter khusus yang berfungsi untuk mengoperasikan suatu nilai data atau operand dalam bahasa pemrograman.
Beberapa kategori dari operator adalah :
- Aritmatika
- assignment atau penugasan
- Logika
- relasional
- dan masih banyak lagi.
Penjelasan dari operator mungkin cukup sampai disini saja, karena kali ini idcsharp tidak akan membahas mengenai penjelasan dari operator, melainkan idcsharp akan menjelaskan mengenai Operator Overloading.
Operator Overloading C#
Sebagian besar Operator dalam bahasa pemrograman dapat di Overload, yang mana memungkinkan Opertator memiliki kemampuan untuk melakukan berbagai variasi Operasi, dengan menggunakan Operator yang sama.
Operator Overloading memungkinkan kamu membuat suatu implementasi dari berbagai operasi, dimana satu atau dua operan adalah Class yang ditentukan oleh kamu sendiri.
contoh syntax :
access specifier className operator Operator_symbol (parameters) { // Code }
misal. kamu dapat mendefinisikan kembali fungsi dari operator ( + ) di custom class.
Contohnya adalah Class Persegi, yang mana mempunyai properti Lebar dan Panjang.:
class Persegi{ public int Panjang {get; set;} public int Lebar {get; set;} public Persegi (int p, int l) { Panjang = p; Lebar = l; } } static void Main(string[] args) { Persegi p1 = new Persegi (14, 3); Persegi p2 = new Persegi (5, 7); }
Sekarang kita akan mencoba menambahkan dua object, yang akan menghasilkan Persegi yang lebih besar lagi.
Kita akan membuatnya dengan cara menambahkan object lagi dengan nama p3. Properti Panjang dan Lebar pada object p3 harus sama dengan jumlah dari properti yang sesuai dengan object p1 dan p2.
Operator yang di overload adalah method dengan nama khusus, dimana keyword operator diikuti dengan simbol untuk operator yang di definisikan. Mirip seperti beberapa method lain, operator yang di overload mempunyai tipe pengembalian atau return dan daftar parameter.
Contoh, untuk Class Persegi tadi, kita dapat melakukan overload dengan menambahkan simbol atau operator [ + ].
public static Persegi operator+ (Persegi a, Persegi b) { int p = a.Panjang + b.Panjang; int l = a.Lebar+ b.Lebar; Persegi total = new Persegi (p, l); return total; }
Method diatas menfidinisikan operator + yang di overload dengan dua parameter object Persegi , dan mengembalikan object Persegi baru dengan peroperti Panjang dan Lebar sama dengan jumlah parameter yang terkait dengan propertinya.
Selain itu, Operator yang di Overload harus statis.
class Persegi { public int Panjang { get; set; } public int Lebar{ get; set; } public Persegi (int p, int l) { Panjang= p; Lebar= l; } public static Persegi operator+(Persegi a, Persegi b) { int p = a.Panjang+ b.Panjang; int l = a.Lebar+ b.Lebar; Persegi total = new Persegi (p, l); return total; } } static void Main(string[] args) { Persegi p1 = new Persegi (20, 15); Persegi p2 = new Persegi (5, 5); Persegi p3 = p1 + p2; Console.WriteLine(p3.Panjang); //25 Console.WriteLine(b3.Lebar); //20 }
Selain dengan cara di atas, Operator Overloading juga dapat diimplementasikan dengan cara berikut :
using System; namespace IdcsharpOperatorOverloading { class Persegi { private double panjang; // Panjang private double lebar; // Lebar public double getLuas() { return panjang * lebar; } public void setPanjang( double pan ) { panjang = pan; } public void setLebar( double leb ) { lebar = leb; } // Overload + operator untuk menambahkan dua object Persegi. public static Persegi operator+ (Persegi b, Persegi c) { Persegi persegi = new Persegi(); persegi.panjang = b.panjang + c.panjang; persegi.lebar = b.lebar + c.lebar; return persegi; } } public class Tester { public static void Main(string[] args) { Persegi Persegi1 = new Persegi(); Persegi Persegi2 = new Persegi(); Persegi Persegi3 = new Persegi(); double luas = 0.0; // inisialisasi persegi 1 dan 2 Persegi1.setPanjang(6.0); Persegi1.setLebar(5.0); Persegi2.setPanjang(12.0); Persegi2.setLebar(10.0); //================================= //=menghitung luas persegi 1 dan 2 luas = Persegi1.getLuas(); Console.WriteLine("Luas dari Persegi1 : {0}", luas); luas = Persegi2.getLuas(); Console.WriteLine("Luas dari Persegi2 : {0}", luas); //================================= //=menambahkan persegi 3 ========== Persegi3 = Persegi1 + Persegi2; //================================= //======== luas persegi 3 ========= luas = Persegi3.getLuas(); Console.WriteLine("Luas dari Persegi3 : {0}", luas); Console.ReadLine(); //================================= } } }
Code di atas dapat di coba melalui tombol dibawah ini :
Mungkin sekian penjelasan Operator Overloading dari idcsharp, semangat belajar dan salam idcsharp.