Belajar Pemrograman Berbasis Objek (OOP) di C# - Bagian 2

Belajar Pemrograman Berbasis Objek (OOP) di C# - Bagian 2

Inheritance

Inheritance (pewarisan) merupakan merupakan salah satu dari tiga konsep OOP. Konsep inheritance ini mengadopsi dunua rill dimana suatu entitas/objek dapat mempunyai entitas/objek turunan. Dengan konsep inheritance, kelas dapat buat dengan didasarkan pada kelas yang sudah ada, sehingga mewarisi semua metode dan properti kelas induknya.

Suatu kelas yang mempunya turunan dinamakan parent class atau base class. Sedangkan kelas turunan itu sendiri seringkali disebut subclass atau child class. Karena subclass dapat mewarisi parent class, sehingga subclass hanya memperluas (extend) parent class-nya.

// Kucing.cs

public class Kucing
{
    public int jumlahKaki = 4;
    protected string ukuranBadan = "Besar";

    public void info()
    {
        Console.WriteLine("Jumlah Kaki Kucing : " + this.jumlahKaki);
        Console.WriteLine("Ukuran Badan Kucing : " + this.ukuranBadan);
    }
}

class Macan : Kucing
{
    private string corak = "Bergaris Hitam";

    public void info()
    {
        Console.WriteLine("Jumlah Kaki Macan : " + base.jumlahKaki);
        Console.WriteLine("Ukuran Badan Macan : " + base.ukuranBadan);
        Console.WriteLine("Corak Macan : " + this.corak);
    }
}

 

// Program.cs

Macan macan = new Macan();
macan.info();

 

Polimorphism

Polimorfisme bisa diartikan satu bentuk banyak aksi, sekilas mirip dengan inheritance tetapi dalam polimorfisme suatu objek dapat melakukan tindakan yang secara prinsip sama tapi secara proses dan outputnya berbeda.

Polimorfisme mengizinkan kelas induk untuk mendefinisikan sebuah method general (bersifat umum) untuk semua kelas turunannya, dan selanjutnya kelas-kelas turunan dapat memperbarui implementasi dari method tersebut secara lebih spesifik sesuai dengan karakteristiknya masing-masing.

// Kucing.cs

public class Kucing
{
    public int jumlahKaki = 4;
    protected string ukuranBadan = "Besar";

    public void info()
    {
        Console.WriteLine("Jumlah Kaki Kucing : " + this.jumlahKaki);
        Console.WriteLine("Ukuran Badan Kucing : " + this.ukuranBadan);
    }
}

// Contoh inheritance
class Macan : Kucing
{
    private string corak = "Bergaris Hitam";
    
    // Inherit property pada base class atau parent class
    public void info()
    {
        Console.WriteLine("Jumlah Kaki Macan : " + base.jumlahKaki);
        Console.WriteLine("Ukuran Badan Macan : " + base.ukuranBadan);
        Console.WriteLine("Corak Macan : " + this.corak);
    }

    // Polimorphisme dapat menghasilkan output yang berbeda
    public void aksi()
    {
        Console.WriteLine("Macan bisa berenang");
    }
}

class Singa : Kucing
{
    // Polimorphisme dapat menghasilkan output yang berbeda
    public void aksi()
    {
        Console.WriteLine("Singa hidup berkelompok");
    }
}

 

// Program.cs

Macan macan = new Macan();
macan.info();
macan.aksi();

Singa singa = new Singa();
singa.aksi();

 

Encapsulation

Enkapsulasi adalah teknik pembuatan kelas pribadi (private) dan menyediakan akses melalui metode publik. Kelas pribadi tidak dapat diakses oleh siapapun di luar kelas, sehingga enkapsulasi dirujuk sebagai data bersembunyi. Enkapsulasi sebagai pelindung yang mencegah kode dan data yang diakses secara acak oleh kode lainnya yang didefinisikan di luar kelas. Akses ke data dan kodenya dikontrol menggunakan interface.

Manfaat utama enkapsulasi adalah kemampuan untuk mengubah kode tanpa melanggar kode orang lain yang menggunakan kode tersebut.

// Kucing.cs
public class Kucing
{
    public int jumlahKaki = 4;
    public string peliharaan = "Bukan Peliharaan";
    protected string ukuranBadan = "Besar";

    public void info()
    {
        Console.WriteLine("Jumlah Kaki Kucing : " + this.jumlahKaki);
        Console.WriteLine("Ukuran Badan Kucing : " + this.ukuranBadan);
    }
}

// Contoh inheritance
class Macan : Kucing
{
    private string corak = "Bergaris Hitam";
    
    // Inherit property pada base class atau parent class
    public void info()
    {
        Console.WriteLine("Jumlah Kaki Macan : " + base.jumlahKaki);
        Console.WriteLine("Ukuran Badan Macan : " + base.ukuranBadan);
        Console.WriteLine("Corak Macan : " + this.corak);
    }

    // Polimorphisme dapat menghasilkan output yang berbeda
    public void aksi()
    {
        Console.WriteLine("Macan bisa berenang");
    }
}

class Singa : Kucing
{
    // Polimorphisme dapat menghasilkan output yang berbeda
    public void aksi()
    {
        Console.WriteLine("Singa hidup berkelompok");
    }
}

class Persia : Kucing
{
    // Encapsulation memodifikasi property ukuranBadan
    public void aksi()
    {
        Kucing persia = new Kucing();
        persia.peliharaan = "Peliharaan";

        Console.WriteLine("Persia dapat dipelihara : " + persia.peliharaan);
        Console.WriteLine("Kucing dapat dipelihara : " + base.peliharaan);
    }
}

 

// Program.cs
Persia persia = new Persia();
persia.aksi();

 

Sekian penjelasan tentang konsep OOP pada bagian 2 ini, semoga bisa memberikan gambaran tentang Inheritance, Polomorphisme, dan Encapsulation.

Terima kasih. Selamat mencoba.