Front Advertisement

C# Tutorial - Mengenal Konsep Pewarisan (Inheritance)

http://www.xcodeplus.net/2017/11/csharp-tutorial-mengenal-konsep-pewarisan.html



Dasar Pewarisan : Kelas Dasar dan Kelas Turunan

Selain enkapsulasi, dua karateristik lainnya perlu Anda pahami juga adalah pewarisan atau dalam istilah Bahasa inggris dikenal dengan sebutan Inheritance. Apa itu pewarisan atau inheritance ?

Dalam pemrograman berorientasi objek, pewarisan adalah proses penurunan kelas. Melalui proses ini, kita dapat mendefinisikan kelas baru yang sifat-sifatnya diturunkan dari kelas lain yang sudah didefinisikan sebelumnya.

http://www.xcodeplus.net/2017/11/csharp-tutorial-mengenal-konsep-pewarisan.html
Gambar 1.1 Pengertian Pewarisan (Inheritance)

Dalam C#, Kelas baru yang dihasilkan dari proses pewarisan disebut kelas turunan (derived class), sedangkan kelas yang dijadikan sebagai induk pewarisan disebut kelas dasar (base class). Dalam penamaan ini, C#  mengadopsi istilah dari C++.

Dalam Bahasa pemrograman yang berkonsep OOP lainnya seperti Java, dalam java istilah kelas turunan disebut dengan subclass dan kelas dasar disebut dengan istilah superclass. Ini hanyalah merupakan terminology, tapi konsepnya sebenarnya sama saja. Pada saat proses penurunan kelas, kita dapat menambahkan sifat-sifat baru yang sebelumnya tidak dimiliki oleh kelas dasar ke dalam kelas turunan. Dengan demikian, kelas baru yang dihasilkan akan memiliki sifat yang lebih spesifik dibandingkan kelas dasarnya. Sebagai contoh, perhatikan ilustrasi gambar mengenai konsep dari inheritance.

http://www.xcodeplus.net/2017/11/csharp-tutorial-mengenal-konsep-pewarisan.html
Gambar 1.2 Ilustrasi konsep dari pewarisan


Gambar di atas merupakan Diagram Unified Modeling Language (UML) yang menunjukan proses pewarisan. Pada gambar tersebut, kelas A adalah dasar yang diturunkan menjadi tiga kelas turunan, yaitu kelas B, C, dan D. Dalam implementasinya sebuah kelas turunan akan mewarisi metode-metode yang dideklarasikan di dalam kelas dasar.

Meskipun demikian, kita masih diizinkan untuk menambahkan data baru yang berbeda-beda untuk masing-masing kelas. Selain itu, kita juga dapat memperbarui metode-metode yang terdapat pada kelas dasar dari kelas turunan sehingga masing-masing kelas turunan memiliki implementasi berbeda.
Asumsikan di dalam kelas B, C, dan D memiliki metode InsertData() dalam hal ini metode InsertData() dari kelas B tentu akan berbeda dengan metode InsertData() yang berada di dalam kelas C, begitu juga dengan kelas D.

Berikut di bawah ini konsep dalam mendefinisikan kelas turunan di dalam C#.




Mendefinisikan Kelas Turunan

Dalam C#, kelas turunan didefinisikan menggunakan bentuk umum sebagai berikut:

class NamaKelasTurunan: NamaKelasDasar{
 // badan kelas...
}


Catatan:
Dalam pendefinisikan kelas turunan dari kelas dasar harus diapit dengan simbol titik dua  ( : ).



Untuk lebih memahami konsep pewarisan dan cara mendefinisikan kelas turunan, perhatikan contoh program sederhana di bawah ini.


PROGRAM 1.1
using System;

namespace CSharpTutorials
{
    
    // Mendefinsikan kelas dasar
    class A
    {
        // Mendefinisikan data dengan tipe akses protected
        // yang hanya akan dikenal oleh kelas turunannya.
        protected int Avalue;

        // Metode SetValueA
        public void SetValueA(int Avalue)
        {
            this.Avalue = Avalue;
        }

        // Metode GetValueA
        public int GetValueA()
        {
            return Avalue;
        }
    }

    // Mendefinsikan kelas turunan
    class B: A
    { 
        protected int Bvalue;

        // Metode SetValueB
        public void SetValueB(int Bvalue)
        {
            this.Bvalue = Bvalue;
        }

        // Metode GetValueB
        public int GetValueB()
        {
            return Bvalue;
        }

        
    }


    // Kelas utama.
    class Program
    {
        
        // Fungsi utama
        static void Main()
        {
            // Membuat objek dari kelas turunan
            B objB = new B();

            objB.SetValueA(1000);
            Console.WriteLine("Nilai A : " + objB.GetValueA());

            objB.SetValueB(2000);
            Console.WriteLine("Nilai B : " + objB.GetValueB());

            
            
            

            Console.ReadLine();
        }
    }

}


HASIL PROGRAM 1.1
Nilai A : 1000
Nilai B : 2000



Pada kode program di atas kita mendefinisikan kelas A yang beranggotakan data Avalue serta metode SetValueA() dan GetValueA(). Kelas ini selanjutnya digunakan sebagai kelas dasar (induk) untuk mendefinisikan kelas turunan dengan nama B. Melalui cara seperti ini, kelas B akan memiliki metode-metode yang didefinisikan di dalam kelas A. 


Data Avalue milik kelas A juga dapat diwariskan untuk kelas B karena data tersebut dideklarasikan menggunakan tipe akses protected. yang berarti merupakan hak akses yang diberikan untuk kelas-kelas yang merupakan kelas turunannya. Sehingga jika kita mengaksesnya di dalam kelas yang bukan kelas turunan dari kelas A atau kelas-kelas lain yang tidak memiliki hubungan hirarki tidak diberi hak untuk mengakses data dan metode tersebut. Dalam kasus ini kita tidak dapat mendefinisikan data dari kelas A di dalam metode Main() atau fungsi utama dari kelas program.

Sebelumnya kita telah membahas terlebih dahulu mengenai tipe akses protected, beruntunglah kalian yang telah membaca mengenai pembahasan tersebut karena Anda pasti akan mudah memahami konsep dari pewarisan ini.


BACA JUGA: C# Tutorial - Perbedaan Antara Tipe Akses Public, Private, Protected dan Internal


Anggaplah dalam konsep pewarisan adalah sebuah keluarga ada seorang ibu bernama Dewi yang memiliki seorang anak, misalkan: Budi, Putri, dan Andi, objek tersebut adalah kelas turunan (derived kelas) sedangkan ibu Dewi merupakan kelas dasar (base class) atau kelas induk yang mewariskan sifat-sifat spesifik kepada anak-anaknya.

http://www.xcodeplus.net/2017/11/csharp-tutorial-mengenal-konsep-pewarisan.html
Gambar 1.3 Hubungan antara Parents dengan Child

Untuk selengkapnya perhatikan program lanjutan berikut di bawah ini.


PROGRAM 1.2
using System;

namespace CSharpTutorials
{
    
    // Mendefinsikan kelas dasar
    class Parents // Induk
    {
        // Mendefinisikan data dengan tipe akses protected
        // yang hanya akan dikenal oleh kelas turunannya.
        protected int Pvalue;

        // Metode PSetValue
        public void PSetValue(int Pvalue)
        {
            this.Pvalue = Pvalue;
        }

        // Metode PGetValue
        public int PGetValue()
        {
            return Pvalue;
        }
    }

    // Mendefinsikan kelas turunan
    class ChildA: Parents // Anak ke-1 
    { 
        protected int ChildValueA;

        // Metode ChildA_SetValue
        public void ChildA_SetValue(int ChildValueA)
        {
            this.ChildValueA = ChildValueA;
        }

        // Metode ChildA_GetValue
        public int ChildA_GetValue()
        {
            return ChildValueA;
        }

        
    }

    // Mendefinsikan kelas turunan
    class ChildB : Parents // Anak ke-2 
    {
        protected int ChildValueB;

        // Metode ChildB_SetValue
        public void ChildB_SetValue(int ChildValueB)
        {
            this.ChildValueB = ChildValueB;
        }

        // Metode ChildB_GetValue
        public int ChildB_GetValue()
        {
            return ChildValueB;
        }


    }

    // Mendefinsikan kelas turunan
    class ChildC : Parents // Anak ke-3 
    {
        protected int ChildValueC;

        // Metode ChildC_SetValue
        public void ChildC_SetValue(int ChildValueC)
        {
            this.ChildValueC = ChildValueC;
        }

        // Metode ChildC_GetValue
        public int ChildC_GetValue()
        {
            return ChildValueC;
        }


    }






    // Kelas utama.
    class Program
    {
        
        // Fungsi utama
        static void Main()
        {
            // Membuat objek dari kelas ChildB
            ChildA obj = new ChildA();

            // Mengakses metode PSetValue yang ada 
            // di dalam kelas Induk dengan objek dari kelas
            // ChildA
            obj.PSetValue(1000);
            Console.WriteLine("Nilai Induk: " + obj.PGetValue());

            // Mengakses metode yang ada di dalam kelas ChildC
            obj.ChildA_SetValue(2000);
            Console.WriteLine("Nilai Anak ke-1: " +                   obj.ChildA_GetValue());

            // Membuat objek dari kelas ChildB
            ChildB objChildB = new ChildB();

            objChildB.ChildB_SetValue(3000);
            Console.WriteLine("Nilai Anak ke-2: " + objChildB.ChildB_GetValue());

            // Membuat objek dari kelas ChildC
            ChildC objChildC = new ChildC();

            objChildC.ChildC_SetValue(4000);
            Console.WriteLine("Nilai Anak ke-3: " + objChildC.ChildC_GetValue());



            Console.ReadLine();
        }
    }

}

HASIL PROGRAM 1.2


Nilai Induk: 1000
Nilai Anak ke-1: 2000
Nilai Anak ke-2: 3000
Nilai Anak ke-3: 4000


Dalam metode Main() yang berada di dalam kelas utama, tampak jelas bahwa kita hanya membuat objek dari kelas ChildA yang ditunjuk oleh referensi obj, namun objek tersebut memiliki metode PSetvalue () dan PGetValue(), padahal kita tidak pernah mendefinisikan kedua metode tersebut di dalam kelas ChildA. Inilah manfaat dari proses pewarisan.

Catatan:
Di dalam bahasa pemrograman C#, tidak ada yang namanya multiple inheritance seperti di dalam bahasa pemrograman C++. Namun, kita tetap dapat melakukan hal serupa yang seolah-olah kelas turunan tersebut menjadi multipe inheritance. Bagaimana cara melakukannya ? selengkapnya kita akan bahas pada postingan berikutnya. to be continue... :D 


C# (dibaca: C Sharp) merupakan bahasa pemrograman generasi baru yang mewah, kaya akan fitur, dan dapat digunakan untuk membuat beraneka raga program/aplikasi di berbagai bidang. C# mendukung beberapa paradigma pemrograman: imperatif, deklaratif, fungsional, serta pemrograman berorientasi objek. C# termasuk dalam keluarga C, dan fitur-fiturnya banyak diadopsi dari Java dan C++. C# menggunakan pustaka (library) yang terdapat dalam .NET Framework, kelengkapan di dalam pustaka .NET Framework menjadikan proses pengembangan program/aplikasi menggunakan C# relatif lebih mudah dan cepat jika dibandingkan dengan C++ dan Java.




No comments:

Kami menerima masukan dari anda jika memang ada pembahasan yang keliru dan kami sangat senang jika anda dapat berkontribusi untuk menyempurnakan postingan kami. Anda dapat mengirimkan email ke : hari18.muhammad@gmail.com

Jika postingan ini bermanfaat jangan lupa share postingan ini. Kami sangat merekomendasikan untuk anda yang membutuhkan informasi tentang computer stuff silakan subscribe blog kami dapatkan informasi terupdate dari kami secara gratiss. Terimakasih!

Powered by Blogger.