Anasayfa / Yazılım / OOP (NYP) / Interface Sınıf Nedir ?

Interface Sınıf Nedir ?

oop-2Yazılım dünyasında interface 2 şekilde ifade edilmektedir. Birisi Graphical User Interface (GUI) olarak ta bilinen grafik kullanıcı arayüzü diğeri ise interface sınıflardır. Bu makalemde interface sınıflardan bahsedeceğim. Interface sınıflar, OOP (Object Oriented Programming)  yani Nesne Yönelimli Programlama’nın temel yapı taşlarından biridir. Interface sınıflar, kullanıldıkları diğer alt sınıfların sorumluluklarını belirler. Alt sınıflar Interface sınıflardan kalıtım ile miras aldıklarını gerçekleştirmeyi taahhüt eder ve söz verir. Sorumluluktan kastım kesinlikle yerine getirmesi beklenilen görevlerdir. Interface sınıfı içerisinde tanımlanan method ve property leri alt sınıflar tarafına eksiksiz olarak implemente edilmesi gerekmektedir.

Bu konuyla ilgili bilinen bir örneği sizlerle paylaşmak istiyorum. Bir araba fabrikamızın olduğunu düşünelim. Bu fabrika da üretilecek arabaların olmazsa olmaz genel özelliklerinde bir kaçı şöyle olacak.

  • Markası Olacak
  • Modeli Olacak
  • Maksimum Hız Değeri Olacak
  • Gösterge Değeri Olacak
  • Bu Bilgiler Kullanıcıya Gösterilecek

Şimdi bu işlerin tanımlanması için interface sınıf oluşturalım. Interface sınıflar oluşturulurken presip olarak sınıf adı başlangıcı “I” harfiyle başlatılır. Böylelikle bu sınıflar kullanılırken interface  sınıf oldukları bilinir. Ayrıca interface sınıflar tanımlanırken aşağıdaki maddelere de dikkat etmek gerekir.

  1. Interface sınıf içerisinde alanlar (fields) tanımlanmaz. Sadece property ler tanımlanabilir.
  2. Normal bir sınıftan farklı olarak class yerine sınıf adından önce interface yazılır.
  3. Sadece method adları yer alır ve bu methodların gövdesi boştur. (Kalıtım ile miras alan alt sınıflar bu methodların içini doldurur)
  4. Bir sınıf için birden fazla interface sınıftan miras alınabilir. Bu interface isimleri virgül ile ayrılmalıdır.
  5. Varsayılan olarak public tir. Herhangi bir erişim belirleyici ile nitelenemez. (C# ta public te yazmamak gerekiyor, Java da public yazılır.)
  6. Interface sınıfların “new” operatörü ile bir nesnesi oluşturulamaz. Çünkü method gövdesi bulunmayan bir sınıfın nesnesi oluşamaz. Method gövdesi bulunmadığı için oluşturmak istenilen nesnenin hiç bir işlevselliği olmayacaktır.

IOrnek isimle bir interface sınıf tanımlayalım. Bu işlem için C# New Item deyip, Interface seçilerek oluşturulabilir. Ya da normal sınıf dosyası oluşturursunuz class yazan yerini interface olarak değiştirirsiniz.

IOrnek interface sınıfını detaylı olarak incelediğimizde :

  • getMarka adında string değer döndüren bir method var.
  • model adında string değer tipli bir property var. Bu property ile sadece içerisindeki bilgi alınabiliyor.
  • maxHiz adındaki property de ise hem get hemde set methodları kullanılmış. Bu property e hem değer atanabiliyor hemde atanan değer tekrar alınabiliyor.
  • Gosterge int değer döndüren ve parametre olarak int değer alabiliyor.
  • BilgiYaz ise şuanda ne yaptığı bilinmeyen void bir method.

Dikkat ederseniz bu methodların ne iş yaptıkları hiç bir şekilde bilinmiyor. Sadece tanımlamaları mevcut.

Şimdi IOrnek sınıfını kalıtım ile başka bir alt sınıfa aktaralım. Fabrikamız Audi marka araba üretmeye başlayacak. Bunun için Audi adından yeni bir class dosyası oluşturuyorum.

Yukarıda görüldüğü üzerine C# ta sınıf adını yazdıktan sonra “:” ile hangi interface sınıf tan kalıtım alınmak isteniyor onun adı yazılır. Buradaki asıl dikkat edilmesi gereken konu interface sınıf içerisindeki tanımlı olan methodların içerisi,kalıtım ile miras alan alt sınıf tarafından doldurulmuştur. Burada bir Visual Studio IDE sinde bulunan bir kolaylığı da söylemek isterim. Interface sınıf içerisindeki yapıları tek tek oluşturmak yerine class Audi:IOrnek yazdıktan sonra IOrnek üzerine fare ile gelindiğinde aşağıdaki ibare

1

karşınıza çıkacaktır. ” Implement interface ‘IOrnek’ ” seçeneğine tıklayarak bütün yapıların otomatik olarak oluşturulmasını sağlayabilirsiniz. Sonrasında size bu yapıların içlerin doldurmak kalır.

Audi alt sınıfını kullanarak yeni bir araba üretmeye başlayalım. Bu işlemi aşağıdaki şekilde gerçekleştirebiliriz.

Yukarıdaki şekilde yeni model bir arabayı örneğin new Ford, new BMW gibi üreterek kullanabiliriz.

Bir interface sınıf dış dünyaya sunulacak hizmetleri tanımlar. Bu hizmetlerin nasıl gerçekleştirileceği kalıtım ile miras alan alt sınıflar belirler. Interface kullanıcısı genelde hizmeti hangi alt sınıf üzerinden aldığını bilmez, böyle bir zorunlulukta yoktur. Böylece Loose Coupling olarak tanımlanan, servis sağlayıcısı ve kullanıcı arasında gevşek bir bağımlılık oluşturulmuş olur. Bu durum yazılım mimarisi açısından büyük bir esneklik kazandırmaktadır. Interface sınıflar kullanılarak, sisteme esnek ve ileride servis kullanıcılarını etkilemeden eklemeler yapılabilir.

Kısaca interface sınıflar,servis kullanıcılarından,kompleks yapıdaki alt sınıfları ve servis sunucusu ve sağlayıcısı arasındaki bağımlılığı azaltmak için kullanılır.

Yazılan kod çalıştırıldığında aşağıda şekilde bir ekran ile karşılaşılır.

1

Yararlanılan Kaynaklar :

  • Özcan Acar – Java Tasarım Şablonları ve Yazılım Mimarileri

Uygulama dosyasını Buradan indirebilirsiniz.

Kolay gelsin.

Bu yazı hakkında ne düşünüyorsunuz?
  • İlginç (1)
  • Başarılı (0)
  • Faydalı (0)
  • Sıkıcı (0)

Hakkında Murat KIRMIZIGÜL

- Gaziantep doğumlu - Bilgisayar Mühendisi - Yazılım Geliştirici-Proje Yöneticisi - Siyaset, Tarih, Sosyoloji, Fotoğrafçılık sever - Evli ve Ayaz'ın babası :)

Cevapla

E-posta adresiniz yayınlanmayacak.Gerekli alanlar işaretlenmişlerdir *

*

ten + 9 =

Yukarı çık