Selamat datang di rumah maya nya Rajim
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
| Print article | This entry was posted by rajim on June 10, 2009 at 1:30 am, and is filed under Java, Matrikulasi (S2 Ilkom UGM), Pemrograman. Follow any responses to this post through RSS 2.0. You can leave a response or trackback from your own site. |

about 1 month ago
i got many information from this….
this is will be my setting…oouuuuughh…