🎯 Tujuan

Memahami dan menerapkan Polymorphism dalam OOP (Object-Oriented Programming) menggunakan C#. Dengan konsep ini, pengguna dapat memanfaatkan antarmuka yang sama untuk objek yang berbeda, sehingga menciptakan kode yang lebih fleksibel dan mudah diperluas.

Konteks

Dalam OOP, Polymorphism memungkinkan kita untuk bekerja dengan berbagai jenis objek yang berbagi superclass atau interface yang sama. Misalnya, semua hewan bisa mengeluarkan suara, tetapi implementasi suara berbeda tergantung jenis hewan. Dengan Polymorphism, kita cukup menggunakan satu metode untuk memanggil suara tanpa memerlukan logika khusus untuk setiap jenis hewan.

🪵 Hal yang Diperlukan

  1. Pemahaman dasar tentang:
  2. IDE seperti Visual Studio untuk menjalankan kode.
  3. Ide kreatif tentang struktur program menggunakan Abstract Class atau Interface (opsional).

📋 Langkah-Langkah

  1. Step 1: Buat Superclass

    csharp
    Copy code
    public class Animal
    {
        public string Name { get; set; }
    
        // Metode virtual yang dapat di-override oleh subclass
        public virtual void MakeSound()
        {
            Console.WriteLine("This animal makes a sound.");
        }
    }
    
    

    Pada contoh di atas:

  2. Step 2: Buat Subclass yang Meng-override Metode Superclass

    csharp
    Copy code
    public class Dog : Animal
    {
        public override void MakeSound()
        {
            Console.WriteLine($"{Name} says Woof!");
        }
    }
    
    public class Cat : Animal
    {
        public override void MakeSound()
        {
            Console.WriteLine($"{Name} says Meow!");
        }
    }
    
    

    Penjelasan:

  3. Step 3: Gunakan Polymorphism dengan Array atau List

    csharp
    Copy code
    class Program
    {
        static void Main(string[] args)
        {
            // Array dari tipe Animal, berisi objek Dog dan Cat
            Animal[] animals = new Animal[]
            {
                new Dog { Name = "Buddy" },
                new Cat { Name = "Whiskers" }
            };
    
            // Polymorphism: memanggil MakeSound pada setiap objek
            foreach (Animal animal in animals)
            {
                animal.MakeSound(); // Memanggil implementasi MakeSound masing-masing subclass
            }
        }
    }
    
    

    Output:

    plaintext
    Copy code
    Buddy says Woof!
    Whiskers says Meow!
    
    
  4. Step 4: Gunakan Polymorphism dengan Parameter Metode

    csharp
    Copy code
    public class AnimalDescription
    {
        public void DescribeAnimal(Animal animal)
        {
            animal.MakeSound(); // Memanggil metode MakeSound spesifik untuk objek
        }
    }
    
    

    Program Utama:

    csharp
    Copy code
    class Program
    {
        static void Main(string[] args)
        {
            Dog dog = new Dog { Name = "Max" };
            Cat cat = new Cat { Name = "Luna" };
    
            AnimalDescription describer = new AnimalDescription();
    
            describer.DescribeAnimal(dog); // Output: Max says Woof!
            describer.DescribeAnimal(cat); // Output: Luna says Meow!
        }
    }
    
    
  5. Step 5: Gunakan Polymorphism dengan Interface (Opsional)

    csharp
    Copy code
    public interface IMakeSound
    {
        void MakeSound();
    }
    
    public class Dog : IMakeSound
    {
        public void MakeSound()
        {
            Console.WriteLine("Woof!");
        }
    }
    
    public class Cat : IMakeSound
    {
        public void MakeSound()
        {
            Console.WriteLine("Meow!");
        }
    }
    
    

    Dengan interface, objek dapat diperlakukan sama meskipun berasal dari kelas berbeda.

Final Checkpoint: