‘Inheritance’ Etiket Arşivi

Delphi Win32 & Lambda Expressions

// 16 Mayıs 2009 // 8 Yorum » // Delphi, Programlama

C# 3.0 ile birlikte gelen Lambda Expressionlar hakkında hemen hemen pek çok yerde makale yada yazıya rastlamak mümkün. Bu makalelerin bazılarında Lambda ifadelerin geleceğin programlama özelliği olduğu yönünde abartılı görüşler olsa da yine de faydalı ve olması gereken özellikler olduğu kanaatindeyim bende. Ancak bazı Lambdacıların da bilmesi gerekir ki bu programlama alemine kesinlikle yeni girmiş bir unsur değildir. Bazı programlama dillerinde bu yetenek çok uzun zamanlardan beri mevcut. Ancak maalesef Delphi’de henüz yok. En azından Win32 versiyonunda yok, Delphi Prism’de var.

O zaman bende kolları sıvadım ve tam anlamı ile Lambda Expressions gibi olmasa , onun gücüne yakınlaşamasa da, yine de benzer bir yapıyı kodlamak istedim. Lambda ifadelerinin genel kullanım amacı SQL sorgularında olduğu gibi bir veri kümesini filtrelemek olarak düşünülebilir. Bizde Delphi’de yazacağımız bir liste sınıfına bu özelliği kazandırmaya çalışacağız örneğimizde. Hatalarımız, eksiklerimiz olursa şimdiden affola diyerek başlayalım kodlamaya.

  TOperator = (opEqual, opGreater, opSmaller, opDifferent, opLike);

  TMyList = class(TList)
  public
    function Where(const PropertyName, PropertyValue : Variant; Operator : TOperator = opEqual) : TMyList;
    function InheritsFrom(const aClass : TClass) : TMyList;
  end;

(more…)

System.Object.ToString

// 15 Mayıs 2009 // Yorum Yok » // .Net, Delphi, Programlama

Delphi tanımı :

function ToString : String; virtual;

C# tanımı :

public virtual string ToString();

Mevcut sınıf ile alakalı bilgi döndürmek amacı ile kullanılmaktadır. .Net ortamında kullanılan herşey bir nesne olduğundan mevcut tüm sınıflarda ve işin ilginç ve yararlı tarafı değişkenler de de bu metodu kullanabilirsiniz. (Gerçi pek çok değişken tipi class değil record olarak tanımlanmıştır ama şimdilik bu konumuz değil oralarada geleceğiz). Peki bu varsayılan tutumu değiştiremezmiyiz dediğinizi duyar gibiyim ? Çoğu zaman sınıfın adının metin olarak döndürülmesi (“System.Object” gibi) pek anlamlı ve yararlı olmayacaktır bizler adına.Biz belli bir sınıfı miras alan kendi sınıflarımızda sınıfımıza ait bazı özel bilgileri bu metod ile döndürmek isteyebiliriz.Örnekleri çeşitlendirmek mümkün..İhtiyacınıza göre değişecektir. Peki bunu nasıl yapacağız.? Şimdi System.Object sınıfının ToString metod tanımına bir göz atalım birlikte. ToString metodu tüm nesnelerin atası olan System.Object sınıfında virtual anahtar kelimesi ile işaretlenmiştir. Bunun anlamı, bu metodun istenildiği taktirde herhangi bir sınıfta tekrar tanımlanabilmesine (override) imkan tanımaktır. Şimdi biz bunun Delphi’cesini yapacağız. C# programcıları bize kızmasınlar lütfen, C# syntax’ini Delphi kadar bilmediğim için bu dille yapmayacağım örneklerimi.Zaten burasıda bir Delphi Blog’u ;)

Şimdi System.Object sınıfından miras alan bir sınıfımız olsun.
(more…)