Interface Ne İşe Yarar?

Ayna kapıların hikayesi

Sırrı KÖMÜR
Kodcular
3 min readOct 10, 2022

--

Photo by Killian Cartignies on Unsplash

Interface, Türkçede arayüz manası taşır. Kelimenin tam anlamıyla bu yapı, yüzler arasında bir geçiştir. Geçişler birer kapıdır. Kapılar ise bir ayna.

Şimdi gelin, ayna kapıların dünyasına dalış yapalım…

Amaç Ne?

Bir önceki yazımda “Değer ve Referans Tipleri” anlattım. Mevzubahis yazıdaki bir konu da referans tip kavramı idi. Referanslar adres tutucuydu. Interface’lerde tam olarak bu referans işini vazife etmiştir. Çağrı merkezi gibi. Bir isim adı altında, talep üzerine gerekli departmana yönlendirmek.

“Ayna kapılar, tek bir deseni gösterir. Ancak farklı diyarlara çıkar. Aynı dünyadaki, farklı diyarlara…”

Bir misal ile konuyu anlamlandıralım.

Bir e-ticaret şirketi, birçok personel türünü barındırır. Personel türleri her ne olursa olsun neticede kendine has bir türdür. Her tür, bir ayna kapıdır. Personeller bir şeyin desenini almalıdır. Aksi takdirde sınıflandırılamazlar. Sınıflandırılamayanlar, görünemez. Zira görünmeyen bir kapıdan geçemezsin.

Bu şirket, 3 tür personel alıyor varsayalım: Programcı, yazar ve pazarlamacı. Şirket personellerine yaptıkları iş miktarına göre prim veriyor. Primler; belirli zamanlarda, belirli personel türlerine veriliyor. Bu primler aşağıdaki şekilde belirlenmiş:

  • Programcı: Bitirdiği proje sayısı
  • Yazar: Yazdığı blog yazısı sayısı
  • Pazarlamacı: Sattığı ürün sayısı

Bu üç personel türünün, işe alımlarında kişisel bilgileri için aynı form doldurulmuştur. Bu durumda hepsi, personel adı altındadır. Ancak bu personellerin prim alma biçimi farklıdır. Şimdi bunu kod ile gerçekleştirelim:

Yukarıdaki kod parçasında; programcı, yazar ve pazarlamacının temel personel bilgilerini tutan temel (base) sınıf oluşturuldu. Personel adı altındaki farklı personel türleri bu sınıfı kalıtım aldı. Ayrıca her bir personel türünün, kendine has özellikleri, kendi sınıfında işlendi. Bu biçim de bir referans işidir. Temel sınıf, kendine bağlanmış alt sınıfların referansıdır.

Şimdi ise interface konusuna giriş yapalım:

Yukarıda PersonnelService isimli interface, personeller üzerinde hangi temel işlerin yapılması gerektiğini bize bildiriyor. Bu bildirme kat’idir. Yapılması şarttır. Bu bir sözleşmedir. “Peki, neden bunun için interface yapısına ihtiyaç duyuyoruz?” diyebilirsiniz. Birazdan buna değineceğim.

Şu anda, öncelikle bu sınıfları kullanalım. Interface yapısını, daha da önemlisi referans işlemini çok daha iyi kavrayacağız. Bunun için sınıfların kullanımını [referans (Interface) ile] net görebileceğimiz yapıyı gerçekleştirelim.

Primleri dağıtmak için BonusManager isminde bir iş sınıfı tanımladım. Bu sınıfın Yapıcı (Constructor) metodunda, primin hangi personel türüne özgü hesaplanacağını belirliyoruz. Daha net tabiri ile personel türüne ait iş sınıfını tanımlıyoruz. Dikkat edilirse BonusManager yapıcı bloğunda PersonnelService interface’ini verdik. Can alıcı nokta tam da budur. PersonnelService, referans tutucudur. Bu servisi kabul etmiş sınıflar (ProgrammerPersonnelManager, WriterPersonnelManager, MarketerPersonnelManager), kendilerine iş düştüğünde, işbu servis aracılığıyla kendilerine yönlendirilecekler. Hangi personel türüne özgü olacağını, PersonnelService üzerinden belirteceğiz. Sözde kalmasın, gösterelim:

Yukarıdaki prim verme işlemi, Programcı Personel (ProgrammerPersonnel) sınıfına verildi. Gün geldi, artık Yazar Personel (WriterPersonnel) sınıfına prim zamanı geldi. Kemerlerinizi bağlayın, çok büyük bir değişiklik yapacağız…

Tek bir kod parçacığının değişimi ile tüm işlemler, yazar personelinin prim hesaplama iş sürecine göre gerçekleşti.

Sonuç

Adımları tekrar edelim: Prim vermek istediğimiz personel türünü seçtik. Ardından personel türüne ait iş sınıfını seçtik. Ve sonraaa … bitti.

İşte referansların önemi burada gizli. Ayna kapılar hikâyesi…

Bir kapının görünüşünü yansıtırsın ama her kapı başka bir diyara çıkar. Bir dünya (Interface), bin diyar (Interface’i özümseyenler)…

Dostla kalın…

Öğrenmek ve öğretmek için çıktığım bu yolculukta, yazımı alkışlayarak bana destek olabilir misin?

Medium bizlere, her gönderi için 50 alkışa (clapping) kadar izin veriyor. Yazarlara destek olmak için beğendiğiniz kadar alkış atabilirsiniz.

--

--