ArenaFutbol | Futbol'a Dair Her Şey
Delphi de Interface Hazırlamak ve Kullanmak Uyeol

Sitemizi REKLAMSIZ şekilde gezebilmek için, bütün bölümlere erişebilmek için ve tam anlamıyla faydalanabilmek için lütfen ÜYE OLUNUZ, eğer üye iseniz lütfen GİRİŞ YAPINIZ
ArenaFutbol | Futbol'a Dair Her Şey
Delphi de Interface Hazırlamak ve Kullanmak Uyeol

Sitemizi REKLAMSIZ şekilde gezebilmek için, bütün bölümlere erişebilmek için ve tam anlamıyla faydalanabilmek için lütfen ÜYE OLUNUZ, eğer üye iseniz lütfen GİRİŞ YAPINIZ
ArenaFutbol | Futbol'a Dair Her Şey
Would you like to react to this message? Create an account in a few clicks or log in to continue.



 
AnasayfaGaleriLatest imagesKayıt OlGiriş yap

 

 Delphi de Interface Hazırlamak ve Kullanmak

Aşağa gitmek 
YazarMesaj
Rebellious
No-Post !
Rebellious


Favori Oyuncu : Metin Oktay
Mesaj Sayısı : 14623
Puan : 258171
Rep : 2564
Yer : Ali Samiyen
Cinsiyet : Erkek
Kayıt tarihi : 19/08/09
Delphi de Interface Hazırlamak ve Kullanmak I231076_gsli

Delphi de Interface Hazırlamak ve Kullanmak Empty
MesajKonu: Delphi de Interface Hazırlamak ve Kullanmak   Delphi de Interface Hazırlamak ve Kullanmak EmptyPaz Ocak 10, 2010 2:05 am

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
type
TForm1 = class(TForm)
procedure FormClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Type
IArayuz = Interface(IUnknown)
End;
Type
TMatematik = class(TObject)
End;

Var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormClick(Sender: TObject);
Var
Nesne : TMatematik;
begin
Nesne := TMatematik.Create;
end;
end.




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
type
IArayuz = Interface(IUnknown)
End;





Kod Çizelgesi Kod Dili: php
type
TMatematik = class(TInterfacedObject, IArayuz)
End;




Ş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
type
IArayuz = Interface(IUnknown)
Function Topla(X, Y : Integer): Integer;
End;



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
type
TMatematik = class(TInterfacedObject, IArayuz)
Function Topla(Sayi1, Sayi2 : Integer): Integer;
End;
implementation
function TMatematik.Topla(Sayi1, Sayi2: Integer): Integer;
begin
Topla := Sayi1 + Sayi2;
end;




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
type
TDeneme = class(TInterfacedObject, IArayuz)
Function Topla(Sayi1, Sayi2 : Integer): Integer;
End;
implementation
function TMatematik.Topla(Sayi1, Sayi2: Integer): Integer;
begin
Topla := Sayi1 + Sayi2;
end;
function TDeneme.Topla(Sayi1, Sayi2: Integer): Integer;
Var
X, Y : Integer;
begin
X := Sayi1 * Sayi1;
Y := Sayi2 * Sayi2;
Topla := X + Y;
end;




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
type
IIslemler = Interface(IUnknown)
Function Bolme(X, Y : Integer): Integer;
Function Carpma(X, Y : Integer): Integer;
End;
type
IArayuz = Interface(IIslemler)
Function Topla(X, Y : Integer): Integer;
End;
type
TMatematik = class(TInterfacedObject, IArayuz)
Function Topla(Sayi1, Sayi2 : Integer): Integer;
Function Bolme(Sayi1, Sayi2 : Integer): Integer;
Function Carpma(Sayi1, Sayi2 : Integer): Integer;
End;
Sayfa başına dön Aşağa gitmek
http://www.arenafutbol.org
 
Delphi de Interface Hazırlamak ve Kullanmak
Sayfa başına dön 
1 sayfadaki 1 sayfası
 Similar topics
-
» Msn Messenger 7.5 Kullanmak İsteyenler Live Messenger Kullanmak İstemeyenler
» delphi ara yüz oluşturma
» Interface (ara birim) nedir? anlamı
» PRI (Primary Rate Interface) nedir? anlamı

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
ArenaFutbol | Futbol'a Dair Her Şey :: AF Cafe :: Eğlence :: Internet Dünyası :: WebMaster & MSN-
Buraya geçin: