Nesne yönelimli programlamanin en önemli yapilarindan biri interface yapisidir. Uygulamalarimizda interface kullanmanin iki sebebi olabilir:
1. Uygulamamiz için bir sinif olusturdugumuzu düsünelim. Bu sinif türünden bir yavru degisken olusturuldugunda sinifin içerisindeki elemanlara (fonksiyon, prosedür, degisken) bu degisken üzerinden erisilir. Fakat birden çok yerde sadece belirli bir grup elemani kullanmak istiyorum. Yani diger elemanlar isime yaramayacaktir. Baska bir yerde de diger elemanlari kullanmam gerekmektedir. O zaman isime yaramayan elemanlari almadan nasil bir yapi kullanacagim?
2. Bir siniftan sadece bir sinifa kalitim verebiliriz. Fakat bir sinifa iki veya daha fazla siniftan kalitim veremeyiz. Bu durumda interface yapisini kullanmamiz dogru olacaktir. Bir sinifa birçok interface ile kalitim verebiliriz.
1. Interface içerisinde sadece fonksiyon, prosedür tanimlamasi yapabiliriz.
2. Interface içerisinde degisken tanimlamasi yapilmaz!!!
3. Interface isimleri tavsiye edildigi sekilde, 'I' harfi ile baslar..
public interface IKisiBilgileri {
public String getAdSoyad();
publicvoid setAdSoyad(String adSoyad);
//
public String getEPosta();
publicvoid setEPosta(String ePosta);
//
public String getTelefon();
publicvoid setTelefon(String telefon);
}
|
publicinterface ICalisanBilgileri {
public String getDepartman();
publicvoid setDepartman(String departman);
//
public String getGorev();
publicvoid setGorev(String gorev);
}
|
publicclass Ogrenci implements IKisiBilgileri {
private String adSoyad;
private String ePosta;
private String telefon;
@Override
public String getAdSoyad() {
returnthis.adSoyad;
}
@Override
publicvoid setAdSoyad(String adSoyad) {
this.adSoyad = adSoyad;
}
@Override
public String getEPosta() {
returnthis.ePosta;
}
@Override
publicvoid setEPosta(String ePosta) {
this.ePosta = ePosta;
}
@Override
public String getTelefon() {
returnthis.telefon;
}
@Override
publicvoid setTelefon(String telefon) {
this.telefon = telefon;
}
}
|
publicclass OgretimGorevlisi implements IKisiBilgileri, ICalisanBilgileri {
private String adSoyad;
private String ePosta;
private String telefon;
private String departman;
private String gorev;
@Override
public String getDepartman() {
returnthis.departman;
}
@Override
publicvoid setDepartman(String departman) {
this.departman = departman;
}
@Override
public String getGorev() {
returnthis.gorev;
}
@Override
publicvoid setGorev(String gorev) {
this.gorev = gorev;
}
@Override
public String getAdSoyad() {
returnthis.adSoyad;
}
@Override
publicvoid setAdSoyad(String adSoyad) {
this.adSoyad = adSoyad;
}
@Override
public String getEPosta() {
returnthis.ePosta;
}
@Override
publicvoid setEPosta(String ePosta) {
this.ePosta = ePosta;
}
@Override
public String getTelefon() {
returnthis.telefon;
}
@Override
publicvoid setTelefon(String telefon) {
this.telefon = telefon;
}
}
|
Yukarida gördügünüz gibi sadece IKisiBilgileri içerisinde tanimlanan ve OgretimGorevlisi sinifina ait methodları görebiliyoruz.
Veysel Uğur KIZMAZ
Bilgisayar Mühendisi
veysel@ugurkizmaz.com
www.ugurkizmaz.com
twitter: @vukizmaz