My Weblog

Just another WordPress.com weblog

Abstract Class

Abstract class

Class yang tidak dapat dibuat objectnya. Class ini berguna untuk memberikan template/pola/kontrak pada setiap class turunannya. Abstract class akan memastikan bahwa setiap class turunannya akan memiliki beberapa method/properties/field yang ia tentukan sebelumnya.

Misalkan saya ingin membuat beberapa class bangun datar (segitiga, lingkaran, persegi panjang, dll). Semua bangun datar pasti memiliki luas dan keliling. Oleh karena itu, saya harus membuat kontrak agar semua class yang merupakan bangun datar memiliki method untuk menghitung luas dan keliling.

Berikut adalah abstract class bangun datar yang akan kita buat sebagai parent sekaligus template untuk class-class yang lainnya:

public abstract class BangunDatar {
      public abstract double HitungLuas();
      public abstract double HitungKeliling();
}

Lalu mengapa kita tidak membuat class BangunDatar sebagai class biasa saja? Hal ini karena dalam dunia nyata pun, tidak ada object dari bangun datar. Object yang dapat dibuat adalah segitiga, lingkaran, persegi panjang, dll. Selain itu, jika BangunDatar dijadikan class biasa, maka kita harus mengimplementasikan method HitungLuas() dan HitungKeliling() milik class BangunDatar. Kita tidak dapat melakukan itu karena kita tidak memiliki rumus luas dan keliling yang bersifat global. Rumus luas dan keliling berbeda tergantung pada jenis bangun datarnya.

Berikut adalah salah satu contoh class yang merupakan turunan dari class BangunDatar (dalam bahasa C#):
public class PersegiPanjang : BangunDatar

public class PersegiPanjang : BangunDatar {
      public Panjang { get; set; }
      public Lebar { get; set; }
      public override double HitungLuas()
      { return Panjang * Lebar; }
      public override double HitungKeliling()
      { return 2 * (Panjang + Lebar); }
}

Class PersegiPanjang yang merupakan turunan dari class BangunDatar, memiliki kewajiban untuk menimpa dan mengimplementasikan (override) method-method yang telah ditentukan oleh class BangunDatar (method-method yang diberikan kata kunci abstract). Dengan demikian, kita dapat yakin bahwa semua bangun datar pasti memiliki luas dan keliling dengan nama method yang sama pula. Keuntungannya, kita dapat melakukan hal seperti di bawah ini:

BangunDatar[] array = new BangunDatar[2];
array [0] = new Segitiga();
array[1] = new PersegiPanjang();
for(int i = 0; i < 2; i++)
{
      Console.WriteLine(array[i].HitungLuas());
      Console.WriteLine(array[i].HitungKeliling());
}

Tanpa menggunakan abstract class kita tidak dapat menjamin bahwa semua turunan class BangunDatar memiliki method untuk menghitung luas dan keliling dengan nama yang sama.

Aku copas dari http://erico-khewanxing.spaces.live.com

One response to “Abstract Class

  1. cheea avrilliya July 27, 2010 at 12:10 pm

    i got many information from this….
    this is will be my setting…oouuuuughh…

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: