Nesne Arayüzleri: “Interface” (OOP)

Interface(Arayüz) nedir?

Bir s?n?ftan kal?t?mla almak güçlü bir mekanizmad?r, as?l kal?t?m?n gücü bir arayüzden kal?t?mla almas?nda yatar. Bir s?n?f kal?t?mla sadece bir s?n?ftan türetilebilir ancak bu k?s?tlama kal?t?mla arayüzden türetme söz konusu oldu?unda ortadan kalkar yani bir s?n?f birden çok arayüzden kal?t?mla türeyebilir. Arayüzler s?n?flar gibi kod ve veri içermez, sadece tan?m içerir. Asl?nda soyut s?n?flar arabirimlere benzerler ancak soyut s?n?flar kod ve veri içerebildikleri için arayüzlerden ayr?l?r.

Neden Arayüz (Interface) kullan?r?z?

Interface sayesinde türetti?imiz s?n?flar?m?zda zorunlu olmas?n? istedi?imiz methodlar? atlayamay?z. Atlayamay?z çünkü atlad???m?zda hata al?r?z.

Interface (Arayüz) nas?l tan?mlan?r?

Arayüz tan?mlarken class, struct gibi terimlerin yerine interface terimi kullan?l?r.


interface kus{

// tan?mlanacak methodlar? art?k belirleyebilirsiniz.

public function ucmak();

public function yemek();

public function buyumek();

}

Kafan?zda daha rahat canlanmas? aç?s?ndan somut örneklemeye gayret ettim. Örnek arayüzümüz olarak ku? seçtim. Ku?un temel i?levlerini prototip olarak tan?mlad?m. Burada dikkat edilmesi gereken nokta arayüzler gövde bar?nd?rmazlar. Arayüzler (interface) içerisinde sabitler tan?mlayabilirsiniz. Sabitlerin davran??lar? normal s?n?flarda nas?lsa arayüzlerde de ayn?d?r.

?imdi de ku?un temel canl?l?k özelliklerini belirledi?imiz arayüzümüzü kullanal?m.


class muhabbetKusu implements kus{

public function ucmak(){

echo ‘Uçma ??levi’;

}

public function yemek(){

echo ‘Yemek ??levi’;

}

public function buyumek(){

echo ‘Büyüme ??levi’;

}

}

Arayüzde tan?mlad???m?z methodlar? dahil etti?imiz s?n?f?m?zda kullanmak zorunday?z. Aksi takdirde hata al?rs?n?z.

Ayr?ca ihtiyac?n?z oldu?unda s?n?f?n?za birden fazla arayüz dahil edebilirsiniz. Bunlar? a?a??da abstract methodlar ile aras?ndaki farklar? maddelerken de anlatmaya çal??t?m.

Önemli Not: Abstract ve Interface s?n?flar?m?z? örnekleyemeyiz. Sadece türetmek istedi?imiz s?n?flar?m?zda rehberlik etmesini sa?layabiliriz.

 

Interface (Arayüz) ile Abstract (Soyut) Methodlar?n?n Aras?ndaki Farklar

  • Arayüzler veri kod içermez. Sadece method tan?mlar?n? içerirler. Abstract’lar ise veri, kod içerebilir.
  • Interface içerisinde yeni bir method tan?mlad???m?zda bu arayüzü kullanan bütün s?n?flar?m?zda yeni eklenen methodu belirtmek zorunday?z. Abstract içerisinde tan?mlad???m?z yeni methodu ve özelli?i otomatik olarak bu soyut s?n?f ile türetilmi? bütün s?n?flar kazanm?? olur. Tek tek tan?mlamam?z gerektirmez.
  • Interface ile çoklu kal?t?m yapabilirsiniz fakat abstract s?n?f? ile çoklu kal?t?m gerçekleyemezsiniz. Yani bir s?n?f?n?za birden fazla interface ekleyebilirsiniz. Ancak bir tane abstract ekleyebilirsiniz.
  • Interface içerisinde tan?mlanacak bütün methodlar public olmak zorundad?r. Abstract’ta böyle bir k?s?tlama yok. Normal s?n?f kurallar? geçerli.
  •   Abstract class’lar interface’lere göre daha h?zl? çal???rlar.
  • Arayüzler (interface) sihirbaz methodlar bar?nd?ramaz. (__construct, __clone methodlar?ndan bahsediyorum)
  • Arayüzler bir s?n?f veya yap?dan türetilemez. Arayüzler sadece arayüzlerden türetilebilir. Bunun sebebi de yukar?da bahsetti?im gibi arayüzlerin gövde bar?nd?ramamas?ndan kaynakl?d?r.

Dipnot: Yaz?mda kitaptan ve/veya telif ihlaline sebep olacak herhangi bir kaynaktan direkt al?m yapmad?m. Tamamen kendi kullan?m?m üzerine türetti?im yorumlard?r.

Yaz?y? haz?rlarken yararland???m kaynaklar

Uzmanlar için PHP (Mehmet ?aml?) Kodlab Yay?nlar?
Nesne Arayüzleri – php.net

Bu yazı PHP, Programlama kategorisine gönderilmiş ve , , , , , ile etiketlenmiş. Kalıcı bağlantıyı yer imlerinize ekleyin.

Nesne Arayüzleri: “Interface” (OOP) için 4 cevap

  1. Caner der ki:

    Oldukça güzel yazmışsın valla çok saol

  2. mert der ki:

    bu konu hakkında tüm forumlara bakdm ama bu senin anlatımında sonunda anladım valla 😀 eline sağlık

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir