07.04.2017 Views

Ders10

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

INTERFACE (ARAYÜZ)


INTERFACE (ARAYÜZ) nedir?<br />

Arayüz (Interface) denilince genelde herkesin aklına ilk önce kullanıcı<br />

arayüzleri gelir (GUI-Graphical User Interface). Örneğin Windows işletim<br />

sisteminde bilgisayarınızı açtığınızda ekranınızda gördükleriniz<br />

Windows’un kullanıcı arayüzüdür. Bu arayüz, fare ve klavye çevre<br />

birimlerini de kullanarak Windows ile etkileşimde bulunabilmenizi sağlar.<br />

Bir programın kullanıcı arayüzü, kullanıcıların o programdan nasıl hizmet<br />

alabileceğini ve ne yapabileceklerini belirler. Burada program bir sistem,<br />

kullanıcı ise o sistemden hizmet alan başka bir sistemdir. Kullanıcı<br />

programın hangi dille kodlandığını, kullandığı algoritmaları ya da veri<br />

yapılarını bilmez. Kullanıcı sadece fare ile ekranın neresine tıkladığında ne<br />

olacağını bilir. Başka bir deyişle kullanıcı arayüzü bilir, tanır. Ancak<br />

arayüzün arkasındaki ayrıntıları bilemez, bilmesine de gerek yoktur.<br />

Arayüz temelde bir sistemin veya alt sistemin başka sistem veya alt<br />

sistemlerle arasındaki iletişimin (ilişkinin) nasıl olacağını belirler. Bu<br />

sözkonusu olan arayüz ister kullanıcı arayüzü olsun, ister iki donanım<br />

arasındaki arayüz olsun mantıksal olarak aynıdır.


Arayüz nedir?<br />

Ekrandan gelen görüntü kablosunun bilgisayara bağlandığı yuva,<br />

bilgisayarın arayüzlerinden birisidir. Bu arayüz sayesinde, görüntü<br />

verebilecek herhangi bir donanım bilgisayara bağlanabilir. Örneğin<br />

ekran yerine bir projeksiyon ile bilgisayardan gelen görüntü bir<br />

perdeye aktarılabilir. Önemli olan o arayüzü tanıyan/bilen bir<br />

donanım olmasıdır. Bilgisayar görüntüyü üreten sistem, bilgisayara<br />

bağlanan cihaz ise o görüntüyü bir şekilde gösterebilen başka bir<br />

sistemdir. Her iki sistem de birbirlerinin iç yapılarını bilmek<br />

durumunda değildir. Bilgisayar için görüntünün perdede, LCD<br />

ekranda ya da CRT ekranda yansıtılmasının bir farkı olmadığı gibi,<br />

bir ekranın da görüntüyü nasıl bir bilgisayardan aldığının bir önemi<br />

yoktur. Burada arayüz iki sistem arasında iletişimin nasıl olacağını<br />

belirleyen bir sözleşmedir. Kablonun takıldığı yuvadaki hangi<br />

iğnenin hangi anlama geleceği bellidir ve bu arayüze uygun olarak<br />

üretilmiş çok farklı donanımlar bulunabilir.


INTERFACE nedir?<br />

Kısaca “arayüz“ bir sistemin başka sistemlerle iletişim<br />

kurmak/birlikte çalışmak için sunduğu bir sözleşme, bir<br />

bütünleşme noktasıdır denilebilir. Eğer bir sistemi kullanmak<br />

istiyorsak o sistemin arayüzünü, arayüzünde sağlanan yetenekleri<br />

uygun şekilde kullanmayı öğrenmemiz gerekir.<br />

Bir arayüz, bir grup yöntem bildiriminden (method declaration)<br />

oluşan bir sözleşmedir. Bu yöntemler, arayüzü tanımlayan<br />

sistemin, kendisiyle birlikte çalışmak isteyen diğer alt<br />

sistem(ler)in gerçekleştirmesini (implement) beklediği<br />

yöntemlerdir. Başka bir deyişle, arayüzü tanımlayan sistem,<br />

birlikte çalışabileceği diğer sistemlerin neye benzemeleri<br />

gerektiğini belirtmektedir. Arayüz bir sözleşme olduğuna göre, bu<br />

arayüz üzerinden sistemle bütünleşen diğer sistem, sözleşmedeki<br />

bütün maddeleri yerine getirmeli yani arayüzde bulunan bütün<br />

yöntemlerin gerçekleştirimlerini (method implementation)<br />

sağlamalıdır.


JAVA INTERFACE yapısı?<br />

Arayüzlerin kod yapısı sınıf tanımlamaya benzer. Sınıfları aşağıdaki gibi<br />

tanımlıyorduk.<br />

erişimBelirleyici class sinifAdi {<br />

//metotlar ve değişkenler<br />

}<br />

Bir arayüzü ise aşağıdaki gibi tanımlayabiliriz.<br />

erişimBelirleyici interface arayuzAdi {<br />

//değişkenler ve gövdesiz (soyut) metot bildirimleri<br />

}<br />

Arayüzler yapı olarak soyut sınıflara benzerler. interface kelimesi ile<br />

yazılırlar. Bu benzerliğe rağmen farklı yapısal özellikleri mevcuttur.<br />

Arayüzlerin, sınıfları birleştirici özelliği vardır. Sınıfların bir işi nasıl<br />

yapacağını değil, işi yaparken hangi adımları veya ne yapması<br />

gerektiğini tanımlar. Nasıl yapacağı sınıfa kalmış bir şeydir.


Örnek1 (calisan.java) calisan interface örneği


Örnek1 (calisan.java) calisan interface örneği


Örnek1 (calisan.java) calisan interface örneği


Örnek1 (calisan.java) calisan interface örneği


Örnek1 (calisan.java) calisan interface örneği<br />

Not: Arayüzlerde, soyut sınıflarda olduğu gibi bir ilişki kavramı yoktur. Yani arayüz<br />

ve bunu kullanan sınıflar arasında kalıtım açısından bir bağlantı olmayabilir.


INTERFACE Özellikleri?<br />

Arayüzler, soyut (abstract) sınıfların bir üst modeli<br />

gibi düşünülebilir ve soyut sınıf yerine kullanılırlar.<br />

Arayüz erişim belirleyicisi (yazılmasa bile) public tir.<br />

Dolayısıyla metotlarda (public) öyledir. Arayüzden<br />

nesne oluşturulmaz.<br />

Arayüz içerisinde anlık değişkenler bulunmaz.<br />

Arayüz içerisinde tanımladığımız global değişkenlerin<br />

erişim belirleyicisi public tir. Bu alanlar<br />

static ve final tipindedir ve ilk değer<br />

ataması zorunludur. Arayüzler içerisinde<br />

tanımladığımız değişkenler, daha çok diğer sınıflarda<br />

sabit olarak kullanacağımız değişkenlerdir.


INTERFACE Özellikleri?<br />

Sınıflar, kullanmak istediği arayüzü, tanımından<br />

sonra impelements anahtar sözcüğü ile kendi bünyelerine dahil<br />

ederler.<br />

Bir arayüzün implements edilmesi onun bir sınıf tarafından<br />

kullanılmaya elverişli hale getirilmesi demektir. Tabiki, bu işlem<br />

soyut metotların gövdelerinin sınıf içinde (override edilerek)<br />

tanımlanmasıyla olur.<br />

Abstract (soyut) sınıflarda, hem gövdesiz soyut metotlar hem de<br />

gövdeli soyut olmayan metotlar tanımlanabiliyordu. Fakat<br />

arayüzlerde tüm metotlar gövdesiz (soyut) tanımlanmalıdır. Bu<br />

metotların kesinlikle implements edilen sınıflarda override edilmesi<br />

gerekir.<br />

Bir sınıftan sadece bir sınıfa kalıtım verebiliriz. Yani bir sınıfa iki<br />

veya daha fazla sınıftan kalıtım veremeyiz. Bu durumda interface<br />

yapısını kullanmamız doğru olacaktır. Bir sınıfa birden çok interface<br />

ile kalıtım verebiliriz. Arayüzlerin çoklu kalıtım olayını basite<br />

indirgemek için oluşturulurlar.


Örnek2 Aynı arayüzü birden çok sınıf kurgulayabilir


INTERFACE-Birleştiricilik<br />

UML diyagramında görüldüğü üzere, Calisan arayüzü (interface), birleştirici bir rol<br />

oynamaktadır. Calisan arayüzünde tanımlanan ve soyut (gövdesiz) calis() metodu, bu<br />

arayüze erişen tüm sınıfların içerisinde iptal edilmek zorundadır (override).<br />

BuyukIsyeriInt.java


Örnek3 (IKisiBilgileri.java) KisiBilgileri interface örneği<br />

(ICalisanBilgileri.java) ICalisanBilgileri interface örneği


Örnek3 (IKisiBilgileri.java) KisiBilgileri interface örneği<br />

(ICalisanBilgileri.java) ICalisanBilgileri interface örneği


Örnek3 (IKisiBilgileri.java) KisiBilgileri interface örneği<br />

(ICalisanBilgileri.java) ICalisanBilgileri interface örneği<br />

Çoklu<br />

Kalıtım


Örnek3 (IKisiBilgileri.java) KisiBilgileri interface örneği<br />

(ICalisanBilgileri.java) ICalisanBilgileri interface örneği<br />

Bir sınıfa ait nesnenin bir çok tipteki sınıf referansına bağlanabilmesi,<br />

uygulama içerisinde büyük esneklik sağlar.<br />

Bu şekilde belli grup içerisindeki metotları kullanabilirim. Mesela yukarıda<br />

olduğu gibi IKisiBilgileri interface’nde tanımlanan veya Ogrenci sınıfı<br />

içerisindeki metotlara erişebiliyor ve kullanıyorum. OgretimGorevlisi sınıfı<br />

metotlarına gerek duymuyorum mesela. O zaman işime yaramayan<br />

elemanları almadan bu işlemi interface ile gerçekleştirebiliyorum.


Örnek4 Çoklu Kalıtım örneği<br />

SportmenMehmet, belki aynı anda hem BuzPatenci hemde Basketbolcu olamaz ama<br />

onlara ait özelliklere sahip olabilir. Örneğin BuzPatenci gibi buz üzerinde kayabilir<br />

ve Basketbolcu gibi şut atabilir.


Örnek4 Çoklu Kalıtım örneği


Örnek5 interface türeme-genişletilme örneği<br />

Arayüzlerin<br />

Kalıtım<br />

Yoluyla<br />

Genişletilmesi


Örnek6 interface içinde başka interface kullanma


Örnek7 interface Çakışma<br />

Not: Bir arayüz<br />

içerisinde aynı isimde<br />

2 metot varsa, bu<br />

metotların aldığı<br />

parametrelerin<br />

farklı olması<br />

gerekir. Dönüş<br />

tiplerinin farklı<br />

olması bir anlam<br />

ifade etmez,<br />

hata oluşur. Bu,<br />

metotlardaki<br />

overload işlemine<br />

benzer.


INTERFACE<br />

SORULARINIZ???

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!