Interface dalam C#

0
247

C

ara lain untuk menerapkan potensi abstraksi dalam C# adalah dengan memanfaatkan INTERFACE. Interface sepenuhnya merupakan “kelas abstrak”, yang hanya dapat berisi method abstrak dan properti (dengan isi kosong):

// interface
interface Hewan 
{
void suaraHewan(); // method pada interface (tidak memiliki body)
void berlari(); // method pada interface (tidak memiliki body)
}

Dalam praktiknya, akan lebih baik memulai sebuah nama interface dengan awalan “I” sehingga untuk contoh di atas seharusnya dituliskan IHewan. Cara ini bertujuan untuk lebih memudahkan dalam mendeteksi bahwa bagian tersebut adalah interface. Hal lain yang perlu diingat terkait interface adalah : Interface dapat berisikan properties dan method, tapi tidak berisikan field.

Untuk mengakses method dalam interface, kita harus mengimplementasikan method tersebut melalui kelas yang lain (mirip seperti inheritance). Kelas yang digunakan tersebut dibuat dengan menggunakan simbol “:” sebagaimana inheritance. Di sini, kita tidak perlu menggunakan “override” pada method dalam class tersebut.

// Interface
interface IHewan 
{
void suaraHewan(); // interface method (does not have a body)
}

// Ayam "implements" the IHewan interface
class Ayam : IHewan 
{
public void suaraHewan() 
{
// The body of suaraHewan() is provided here
Console.WriteLine("Suara ayam : kotek kotek petok");
}
}

class Program 
{
static void Main(string[] args) 
{
Ayam ayamku = new Ayam(); // Create an Ayam object
ayamku.suaraHewan();
}
}

Catatan Penting untuk Interface :

  • Sebagaimana class abstract, interface TIDAK BISA digunakan untuk membuat object.
  • Method pada interface tidak memiliki body. Pemasangan body dilakukan pada method yang ada di class lain yang dibuat dari interface tersebut.
  • Pada class yang mengimplementasikan interface, kita harus mengisikan semua method yang ada pada interface.
  • Interface dapat berisikan properties dan method, namun tidak berisi field/ variabel.
  • Anggota interface secara default (bawaan) adalah abstract dan public
  • Sebuah interface tidak dapat mengandung constructor

Studi Kasus yang Lain

Mari kita lihat contoh penggunaan interface dalam C# dengan membuat sebuah interface sederhana yang disebut “IShape”. Interface ini akan memiliki dua method, yaitu “CalculateArea” untuk menghitung luas dan “CalculatePerimeter” untuk menghitung keliling. Kemudian kita akan membuat dua kelas, yaitu “Circle” dan “Rectangle”, yang akan mengimplementasikan interface “IShape”.

Berikut adalah contoh kode untuk interface dan implementasinya:

// Interface
public interface IShape
{
double CalculateArea();
double CalculatePerimeter();
}

// Implementasi untuk Circle
public class Circle : IShape
{
public double Radius { get; set; }

public double CalculateArea()
{
return Math.PI * Radius * Radius;
}

public double CalculatePerimeter()
{
return 2 * Math.PI * Radius;
}
}

// Implementasi untuk Rectangle
public class Rectangle : IShape
{
public double Width { get; set; }
public double Height { get; set; }

public double CalculateArea()
{
return Width * Height;
}

public double CalculatePerimeter()
{
return 2 * (Width + Height);
}
}

Dalam contoh di atas, kita telah membuat sebuah interface “IShape” yang memiliki method “CalculateArea” dan “CalculatePerimeter”. Selanjutnya, kita membuat dua kelas, yaitu “Circle” dan “Rectangle”, yang mengimplementasikan interface tersebut dengan cara mengimplementasikan method-method yang ada di dalam interface.

Dengan menggunakan interface, kita dapat dengan mudah mengatur bahwa setiap kelas yang mengimplementasikan interface “IShape” harus memiliki method “CalculateArea” dan “CalculatePerimeter”. Hal ini memungkinkan untuk membuat kode yang lebih fleksibel dan mudah untuk dikelola, karena kita dapat dengan mudah mengganti implementasi dari suatu kelas tanpa perlu mengubah kodenya secara luas.

Tugas Kerja :
Buatlah interface bernama ISiswa dengan method “identitasSiswa” dan “prestasiSiswa”. Berikan body (isi) pada tiap-tiap method tersebut dan tampilkan hasilnya. Upload hasil kerja dalam bentuk file ATAU link code pada LINK BERIKUT : https://forms.gle/4k7ToVUcKd5AXHgTA

LEAVE A REPLY

Please enter your comment!
Please enter your name here