Interface, penting tapi sering diabaikan

Beberapa kali saya melakukan interview untuk kandidat programmer di kantor, seringkali untuk pertanyaan paling dasar mengenai Object Oriented Progamming adalah pertanyaan apa itu Interface? sebagian candidat biasanya menjawab pernah menggunakan tapi tidak bisa mengungkapkan dalam secara verbal. Bahkan ada yang menjawab bahwa itu adalah antarmuka (hmm, mungkin dikiranya User Interface).

Walaupun ada teman yang menganalogikan interface adalah template, tapi bagi saya analogi interface yang paling mendekati adalah bahwa interface itu semacam contract yang mengikat semua child class (semua class yang mengimplementasikan interface tersebut).

Di dalam sebuah interface bisa jadi berisi sekumpulan method dan property. Ingat, sebuah interface tidak bisa memiliki implementasi di dalamnya, berbeda dengan abstract class. Dengan menggunakan interface, memudahkan kita membuat mockup object dalam unit test misalnya. Terutama jika kita menggunakan IoC container. Interface ini adalah salah satu feature dalam OOP yang digunakan untuk prinsip polymorphisme.

Contoh:

interface IFlyObject
        {
            void Fly();
        }

Selanjutnya kita buat class Bird dan Plane yang akan mengimplementasi IFlyObject.

interface

Akan ada muncul compiler error jika interface member dari IFlyObject yaitu Fly() tidak di implementasikan. Mari kita modifikasi class di atas.

public class Bird : IFlyingObject
        {
            public void Fly()
            {
                Console.WriteLine("Terbang dengan Sayap Bulu");
            }
        }

        public class Plane : IFlyingObject
        {
            public void Fly()
            {
                Console.WriteLine("Terbang dengan mesin jet");
            }
        }

Salah satu prinsip OOP adalah Polymorphisme. Polymorphisme artinya kita memproses object-object yang berbeda berdasarkan tipe datanya. Dengan kata lain sebuah method yang memiliki implementasi berbeda-beda, implementasinya dapat dipilih saat runtime bergantung pada kondisi tertentu. Dari Polymorphisme kita mendapatkan keuntungan berupa flexsibilitas dalam memilih class implementasi.

static void Main(string[] args)
        {
            Console.Write("Pilih (A) Bird (B) Plane : ");
            var input = Console.ReadLine();
            IFlyingObject flyObject;
            if (input.ToUpper() == "A")
            {
                flyObject = new Bird();

            }
            else if (input.ToUpper() == "B")
            {
                flyObject = new Plane();

            }
            else
            {
                throw new Exception("Pilih A atau B");
            }
            flyObject.Fly();
            Console.ReadKey();
        }

Lebih jelas penggunaanya nanti kita akan bahas pada tulisan mengenai SOLID Pattern

Iklan

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s