.Net Kategori Arşivi

Win32 & .Net(Delphi->C#)

// 21 Haziran 2009 // 21 Yorum » // .Net, C#, Delphi, Programlama, Veritabanı, Win32

Aslında herşey Java adı verilen programlama dilinin doğuşuna kadar ilerliyor. Java, programlama dünyasına farklı bir perspektif katmıştı. Yazılan kodların applet’ler vasıtası ile web ortamlarında kullanılabilmesi yada Java Runtime ile değişik işletim sistemi platformlarında çalıştırılabiliyor olması onu günden güne daha popüler hâle getiriyordu.

Microsoft, kendi işletim sistemlerinin yeryüzündeki tüm bilgisayarlarda kullanılamayacağının farkına vardığında; Java’ya karşı bir önlem almak gerektiğini düşündü ve bu sayede veriye her ortamdan erişebilecek bir sistem planlamaya başladı. Ancak elbette Java’nın da hâla beceremediği gibi Microsoft’da platform bağımsızlığı hususunda başarılı olamadı. Zaten tasarımların gereği de bunu pek mümkün kılmıyordu. Java’da üretilen kodların bytecode’lara çevrilmesi ve JVM(Java Virtual Machine) adı verilen programlarla üzerinde çalıştığı platforma adapte edilmesindeki süreç, .Net’de de kendisine farklı isimlerle yer buldu.

.Net, ürettiği MSIL kodunu üzerinde çalıştığı platformun anlayacağı makina dili koduna ise JIT vasıtası ile çevirir. Bu tıpkı Java’nın JVM’ine benzer. Aradaki benzerlikleri saymaya kalksak emin olun sayfalarca yazı yazmamız gerekir. Benim bu makalede amacım bu iki platform bağımsız olduğunu iddia eden teknolojinin benzerliklerini ve farklılıklarını anlatmak değil. Bu bilgileri genel kültür amacı ile sunduktan sonra Delphi’nin bu teknolojiler ile iletişimi hakkında bilgi vermek ve gerçek platform bağımsız kodlamanın gelecekte Delphi ile olabileceğinin umudunu sizlerle paylaşmak.

Görüldüğü üzere gerek .Net gerekse de Java platform bağımsız native kod geliştiremiyorlar. Ürettikleri ara kodların, çeşitli işletim sistemlerinde yorumlanıp makina koduna çevrilmeleri gerekiyor. Dolayısı ile teoride bu teknolojileri kullanan uygulamaların, native uygulamalardan hızlı olması beklenmiyor.

.Net, bilindiği üzere programlama dillerinden bağımsız bir platform. Framework adı verilen kod kütüphanelerinin tüm programlama dilleri tarafından ortak bir şekilde kullanılabilmesi, CTS denilen ortak tip sınıflarının .Net içinde olması, herhangi bir .Net destekli dilin bir diğer .Net destekli dil ile iletişimini son derece sorunsuz ve kolay hale getirmekte. Büyük çaplı proje ekiplerinin pek çok programcıya sahip olduğu gerçeği göz önüne alındığında, bu ekip üyelerinin herhangi bir .Net dilini bilmesi ve bu dil ile geliştirme yapmasının projeye olumsuz bir etkisinin olmaması elbette son derece güzel bir durum.
(more…)

System.Object.ReferenceEquals

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

Delphi tanımı:

class function ReferenceEquals (objA : System.Object; objB : System.Object) : Boolean;

C# tanımı :

public static bool ReferenceEquals (Object objA, Object objB);

Her iki sınıfa ait nesnenin aynı referansa sahip olup olmadığına yada her ikisininde nil (Null) olup olmadığına bakar.Eğer her iki nesnede aynı referansa sahip ise yada her ikisi de nil(Null) ise true aksi taktirde false döndürür. Şimdi Referans diyoruz da nedir bu referans ? Aslında buraya C++ için yapılmış olan tanımıda yazmak istiyorum müsaadenizle.

public: static bool ReferenceEquals(
Object* objA,
Object* objB
);

Bu tanımda her iki paremetrenin tipide Object* biçiminde.Yani bu paremetreler aslında Object tipini işaret eden işaretçiler(Pointer). Aslında Delphi de tanımladığımız pek çok şeyin işaretçi olması gibi bir gerçek bu.
(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…)