Tiburón yeniliklerine devam ediyoruz-2 (Generics for Win32)
Posted by: sadettinpolat in Uncategorized, codegear, delphi, tags: .net, delphi, generic, tiburonGeneric nedir ne ise yarar ?
Delphi Highlander surumu ile Delphi for .Net* icin dile eklenen Generic ozelligi artik Win32 icinde mevcut.
Genericler kisaca bazi durumlarda fazladan kod yazmamizin onune gecip bakimi , gelistirmesi daha kolay olan kodlar yazmamiza olanak sagliyorlar. Ornek vermek gerekirse hem integer hem de string veri tipinde elemanlar saklamak istediginiz bir listeye ihtiyaciniz olsun. Genericler olmadan bu isi kotarabilmenizin elbet degisik bir kac yolu mevcut. Mesela listeye eleman eklediginiz metodun hem integer tipindeki verileri kabul eden hem de string tipindeki verileri kabul eden iki farkli metodunu tanimlar ve bunlari da overload olarak isaretlerseniz hedefinize ulasmis olursunuz ya da tip cevrimleriyle ugrasmak istemiyorsaniz ayri ayri siniflar tanimlayarak siniflardan birinde integer veri tiplerini digerinde ise string veri tiplerini saklayabilirsiniz. Iste genericler bu tur durumlarda bizi taklalar atmaktan kurtarip bizim yerimize compilerin takla atmasini sagliyor. Sakladiklari veri tipleri haricinde hicbir farkliligi mevcut olmayan bu iki sinifi ayri ayri tanimlamak biz programcilar icin bosuna zaman kaybina neden oluyor. Genericler ise bu zaman kaybinin onune geciyor. Nasil ki prosedur ve fonksiyonlara duruma gore degisik parametreler degisik sonuclar elde ediyorsak genericler ile birlikte artik sinif tanimlarina da bazi parametreler ekleyip tek bir sinif tanimini farkli veri tipleriyle kullanmamiz artik mumkun.
basit bir ornek vermek gerekirse hem integer tipi ile hem de string veri tipi ile (aslinda butun tiplerle
) uyumlu calisabilecek bir sinif tanimlayalim.
TGenericSinifim<T> = Class
private
FEleman: T;
procedure SetEleman(const Value: T);
protected
public
property Eleman:T read FEleman write SetEleman;
End;
...
...
procedure TGenericSinifim<T>.SetEleman(const Value: T);
begin
FEleman := Value;
end;
sinifimizi tanimladik simdi de nasil kullanacagimizi gorelim.

Entries (RSS)