16 Şubat 2009, 16:29 | #1 | |
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0) | Delphi'de Interface Hazırlamak ve Kullanmak Interface Hazırlamak ve Kullanmak Değişik programcılar tarafından geliştirilen Class’lar farklı işlemleri yapıyor olsalar bile bazı ortak noktalara sahip olabilirler. Örneğin her Class’ın sıralama yapan bir metoda veya “Firma” adına sahip bir özelliğe sahip olması istenebilir. Bu gibi sorunların çözümü Interface hazırlamaktan geçiyor. Interface’lerde metot imzaları olmaktadır. Bu konuda teknik bilgi vermek yerine hemen basit bir örnek yapacağım. Bu amaçla üzerinde çalıştığım projedeki ilk formu temsil eden Class’ın yer aldığı kod dosyasında aşağıdaki gibi “TMatematik” adında bir class ve “IArayuz” adında bir Interface hazırladım. Form1 temsil eden Class’ın Click() metodunda ise matematik class’ının örneğini hazırladım. Kod Çizelgesi Kod Dili: php Kod: Kodu kopyalamak için üzerine çift tıklayın!
Nasıl ki class’lar “class” anahtar kelimesi ile başlıyorsa Interface’ler ise Interface anahtar kelimesi ile başlamaktadır. Genel alışkanlıkla Interface’lerin adlarının başına “I” harfi konulmaktadır. Nasıl ki Delphi’de bu sınıflar TObject sınıfından türetiliyorsa Interface’ler de IUnknown adlı Interface’den türetilmektedir. Interface anahtar kelimesine herhangi bir Interface adı yazılmazsa bunun IUnknown olduğu varsayılır. Bu şartlarda TMatematik adını verdiğim Class’a bu arayüz uygulansa bile değişen bir şey olmaz. Çünkü IArayuz adını verdiğim Interface herhangi bir olay, metot veya özelliğe sahip değildir. Interface’lerin Class’lara nasıl uygulandığını aşağıda görebilirsiniz. Kod Çizelgesi Kod Dili: php Kod: Kodu kopyalamak için üzerine çift tıklayın!
Kod Çizelgesi Kod Dili: php Kod: Kodu kopyalamak için üzerine çift tıklayın!
Şimdi bu Interface’in bir metoda sahip olmasını sahip olmasını sağlayacağım. “Topla” adını verdiğim metot integer tipinde 2 parametreye sahip olacak ve geriye yine integer bilgi gön¬derecektir. Interface’lerde işaret edilen metotların yalnızca imzaları bulunur, metodun ne yaptığı veya işlevi hakkında bilgi olmaz. Kod Çizelgesi Kod Dili: php Kod: Kodu kopyalamak için üzerine çift tıklayın!
Bu şartlarda proje çalıştırılırsa hata meydana gelir. Çünkü bu arayüzü uygulayan “TMatematik” adlı Class’ın “Topla” adında ve integer tipinde 2 parametreye sahip bir metodu olması gerekir. Bu düşünce ile “TMatematik” Class’ını aşağıdaki gibi düzenledim. Kod Çizelgesi Kod Dili: php Kod: Kodu kopyalamak için üzerine çift tıklayın!
Bu şartlarda uygulama çalıştırılırsa hata meydana gelmez. Çünkü “TMatematik” Class’ı uyguladığı Interface’in gereklerini yerine getirmiş oldu. Bu Class’ta Topla() metodunun parametre olarak aldığı bilgileri toplayıp geriye göndermesini sağladım. Başka bir sınıfta ise metot dahilinde yapılan işlem farklı olabilir. Tekrar etmek gerekirse Interface’ler yalnızca metotların adları, geriye gönderdikleri bilginin türü ve parametrelerinin sayısı ve tipiyle ilgilenirler. Bunu göstermek bu arayüzü uygulayan ikinci bir Class hazırladım. Bu Class’ta Topla() metoduna farklı bir işlem yaptırdım. Kod Çizelgesi Kod Dili: php Kod: Kodu kopyalamak için üzerine çift tıklayın!
Bu metot farklı bir işlem yapsa bile Interface’in gereklerini yerine getirmektedir. Yukarıda Interface hazırlarken IUnknown adlı standart Interface’i mirasçı olarak seçtim. Hazırlamak istediğiniz Interface mevcut bir Interface miras olarak alabilir. Aşağıda verilen örnek Interface uygulayan Class’ların 3 metoda sahip olmaları gerekir. Kod Çizelgesi Kod Dili: php Kod: Kodu kopyalamak için üzerine çift tıklayın!
Alıntıdır. | |
|
Etiketler |
delphide, hazirlamak, hazırlamak, interface, kullanmak, ve |
Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir) | |
| |
Benzer Konular | ||||
Konu | Konuyu Başlatan | Forum | Cevaplar | Son Mesaj |
valiz hazırlamak. | Desmont | IF Sözlük | 7 | 23 Haziran 2022 14:50 |
Et suyu hazırlamak | Sarya | Merak Ettikleriniz | 2 | 17 Ocak 2022 22:10 |
"Direksiyon başında telefon kullanmak alkollü araç kullanmak kadar tehlikeli" | AngeL | Haber Arşivi | 0 | 04 Ekim 2014 16:21 |
Ergenliğe Hazırlamak | Lucifer | Ergen Sağlığı | 0 | 05 Aralık 2011 03:24 |
rapor hazırlamak ? | Serzenis | mIRC Scripting Sorunları | 1 | 09 Ağustos 2007 23:44 |