Programlamadili.Net Yeni Nesil Programlama Portali
 
Makale Ara: 
Kullanıcı Adı : Şifre :
  • Makale Kategorileri
ACPI [0]
Action Script [5]
ASP [12]
ASP.NET [23]
Assembly [3]
Bash [1]
C [4]
C# [9]
C++ [10]
Cobol [1]
Delphi [31]
Flash [5]
Html [9]
JAVA [36]
Java Script [11]
JSF [2]
Jsp [1]
Lua [1]
Matlab [2]
MySQL [26]
Oracle [1]
Pascal [31]
Perl [4]
Photoshop [2]
PHP [108]
Python [8]
REXX [6]
Ruby [1]
SEO [4]
Visual Basic [20]
  • Gorsel Ders Kategorileri
Asp [25]
Asp.Net [5]
Csharp [33]
Delphi [3]
Fireworks [4]
Flash [10]
Java Script [0]
Photoshop [0]
PHP [11]
Vb.Net [9]
Visual Basic [4]
  • Dil
English
Deutsch
deutsch
  • Reklam Alani
Delphi / Delphi de Interface Hazırlamak ve Kullanmak
Delphi de Interface Hazırlamak ve Kullanmak
Yazar: FERDIKUCUK
Eklenme: 27/03/08    Okunma: 63    
 
 


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
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;




Taglar: DELPHI (DELPHOI) Adı Nereden Geliyor? Nedir? DELPHI 8 FOR .NET FRAMEWORK RESİMLERİ Delphi de Interface Hazırlamak ve Kullanmak Delphi de Mac Adresini Alan Kod Delphi ile Inf Dosyası Hazırlama Delphi programlama dilinde BORLAND KODLAMA STANDARTLARI Delphi Uygulamalarında Çoklu Dil Uygulamaları Delphi'ye Giriş Delphide Kayıtlı Sürücüleri Bulma Delphide Sayı Üretim Fonksiyonları DELPHİ İLE NETWORK ÜZERİNDEN VERİ İLETİMİ InstallShield Express Kod bankası ( Web browser ) Kod bankası ( Ag üzerinden veya internetten ip adresine göre dosya alma ve gönderne ) Kod bankası ( Ag üzerinden veya internetten ip adresine göre dosya alma ve gönderne ) Kod bankası ( Aranilan kaydin listboxda görüntülenmesi ) Kod bankası ( Cd-rom açma-kapama ) Kod bankası ( Com objelerinin olay yönetimi nasil yapilir ) Kod bankası ( Delphi asembly ile internette fark edilmeden dolaşma ) Kod bankası ( Güvenlik kilidi ) Kod Bankası ( Not defteri Yapımı ) Kod bankası ( Programin demo sürümünü yapmak ) Kod bankası ( Veritabaninda arama yapmak ) Kod bankası (Bilgisayari istediginiz zaman kapatmak ) Kod bankası (Ekran görüntüsünü almak)

Isminiz:
E-mail adresiniz:
Güvenlik Kodu:
  
 

 

Istatistikler ,
Sitemizde su anda 30 kategori, 377 makale , 104 görsel ders ve 3 Ziyaretci bulunmaktadir...
Toplam üye sayimiz : 496

Copyright © 2007 Programlamadili.net - Programlama & Tasarim: Recep Ikiz & Ferdi Küçük

| Site Haritasi |

"Ne Aradığını Bilmeyen Bulduğunun Farkına Varamaz "
ACPI Programlama dili, Action Script Programlama dili, ASP Programlama dili, ASP.NET Programlama dili, Assembly Programlama dili, Bash Programlama dili, C Programlama dili, C# Programlama dili, C++ Programlama dili, Cobol Programlama dili, Delphi Programlama dili, Flash Programlama dili, Html Programlama dili, JAVA Programlama dili, Java Script Programlama dili, JSF Programlama dili, Jsp Programlama dili, Lua Programlama dili, Matlab Programlama dili, MySQL Programlama dili, Oracle Programlama dili, Pascal Programlama dili, Perl Programlama dili, Photoshop Programlama dili, PHP Programlama dili, Python Programlama dili, REXX Programlama dili, Ruby Programlama dili, SEO Programlama dili, Visual Basic Programlama dili,
Reklam alanı