C# - Abstract Class

October 08, 2017 in #Coding #Unity | | | Share on Google+

---

Abstract class adalah class yang belum dapat di inisialisasi. Kenapa? Well, ya karena masih abstrak. Abstract class merupakan sebuah templat, sendangkan class biasa merupakan cetakan. Jika suatu class didefinisikan sebagai abstract, maka subclass-nya wajib melakukan implementasi semua method abstract di dalamnya.

Contoh abstract class adalah sebagai berikut :

using UnityEngine;

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

Sebuah abstract juga dapat menjadi subclass dari class biasa.

class BangunAnu  
{
    public virtual float HitungAnu()
    {
    // kode menghitung anu
    }
}

abstract class BangunDatar : BangunAnu  
{
    public abstract override int HitungAnu();
    public abstract float HitungLuas();
    public abstract float HitungKeliling();

}

class Segitiga : BangunDatar  
{
    public override float HitungAnu()
    {
        // implementasi kode menghitung anu yang baru
    }
    public float HitungLuas()
    {
        // implementasi hitung luas
    }
    public float HitungKeliling()
    {
        // implementasi hitung keliling
    }
}


Contoh Implementasi

Kita akan gunakan lagi abstract class BangunDatar di atas.

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

Kemudian, kita implementasikan ke dalam subclass Segitiga dan BujurSangkar.

class SegitigaSikuSiku : BangunDatar  
{
    private float alas;
    private float tinggi;

    public SegitigaSikuSiku(float alas, float tinggi)
    {
        this.alas = alas;
        this.tinggi = tinggi;
    }

    public override float HitungKeliling()
    {
        float sisiMiring = Mathf.Sqrt((Mathf.Pow(alas, 2+ (Mathf.Pow(tinggi, 2))));
        return alas + tinggi + sisiMiring;
    }

    public override float HitungLuas()
    {
        return (alas * tinggi) / 2;
    }
}
// Class Segitiga

using UnityEngine;

class SegitigaSikuSiku : BangunDatar  
{
    private float alas;
    private float tinggi;

    public SegitigaSikuSiku(float alas, float tinggi)
    {
        this.alas   = alas;
        this.tinggi = tinggi;
    }

    public override float HitungKeliling()
    {
        float sisiMiring = Mathf.Sqrt((Mathf.Pow(alas,2+ (Mathf.Pow(tinggi,2))));
        return alas + tinggi + sisiMiring;
    }

    public override float HitungLuas()
    {
        return (alas * tinggi) / 2;
    }
}

Setelah itu, tinggal kita inisialisasi seperti biasa

SegitigaSikuSiku sg = new SegitigaSikuSiku(68);  
Debug.Log("Luas segitiga = " + sg.HitungLuas());  
Debug.Log("Keliling segitiga = " + sg.HitungKeliling());

Persegi pg = new Persegi(5);  
Debug.Log("Luas persegi = " + pg.HitungLuas());  
Debug.Log("Keliling segitiga = " + pg.HitungKeliling());



Materi Terkait

October 08, 2017 in #Coding #Unity | | | Share on Google+