Günümüzün modern programlama dillerinde programlar genellikle Class’lar şeklinde paketlenmekte, Class’lar şeklinde düzenlenmektedir. Programları Class’lar halinde paketlenmenin sayısız yararları vardır. Ancak bunları burada anlatmayacağım. Class’lar hakkında bilgi sahibi olmadan Visual Basic 6 ve Delphi gibi dillerle program geliştirmek mümkün iken C++, C#, Java ve Visual Basic for .NET gibi programlama dilleri Class’lar hakkında bilgi sahibi olmanızı zorunlu kılmaktadır.
Quick Basic, Pascal ve C gibi klasik programlama dillerinde kod dosyaları içinde fonksiyonlar ve procedure’ler bulunuyordu. Hatta C’de fonksiyon procedure ayrımı da yoktur. Başka bir deyişle programcılar yapmak istedikleri işlemlere uygun fonksiyonlar yazıp gerek duydukça bunları çağırıyorlardı.
Zamanla programlar büyüyüp karmaşıklaştıkça paketlenmesi ihtiyacı doğdu. Fonksiyon ve metotların Class’lar halinde paketlenmesi ile birlikte Class içinde bulunan fonksiyonların kullanılması, organize edilmesi ihtiyacı doğdu. Günümüzde yaygın olarak kullanılan programlama dillerinde Class’lar metotlardan başka Interface’leri, Olayları, Özellikleri, Delegate’leri ve Yapıcı metotları içerebilmektedir. Lütfen olay nedir özellik nedir diye sormayın. Zamanı gelince bu konular hakkında bilgi verilecektir.
Yerli yabancı ayrımı yapmadan bugüne kadar hangi kaynağa baktıysam konu nesneye yönelik programcılık olduğunda ilk birkaç sayfada biyolojiden, memelilerden, ütülerden arabalardan vs. söz edilmektedir. Her yazar nesneye yönelik programcılığın 3 temel kavramını kendince anlatmaktadır. Hemen belirtmek isterim ki kişisel görüşme göre bu anlayış öğrenmeyi zorlaştırmaktadır.
İstenilen ayrıntıda polimorfizm’den söz edilsin, biyolojiden memelilerden örnek verilsin bu kavramların kod karşılığı görülmeden verilen bilgiler havada kalıyor. Bu nedenledir ki bu derste nesneye yönelik programcılığın temel kavramlarının adını anmadan, bir daha "nesneye yönelik programcılık" sözünü etmeden bu konuyu anlatmak istiyorum. Esasında burada bilim yapmıyoruz, olsa olsa sizlere Visual Basic .NET gibi bir programlama dili ile nasıl program yazabileceğinizi anlatmak istiyoruz. Amacımız en basit şekilde programcılık tecrübesi olmayanları bile programcılığa alıştırmaktır, onları .NET uyumlu Visual Basic .NET ve diğer programlama dillerini öğrenebileceklerine inandırmaktır.
Aşağıda en basit veya en kısıtlı, en az satıra sahip bir Visual Basic programı bulunmaktadır. Bu kodu Not Defteri penceresine yazıp VB uzantısı ile kaydedip .NET Framework ile gelen Visual Basic derleyicisi ile derleyip EXE yapabilirsiniz. Bu işlemin nasıl yapıldığı bu dersin ileriki sayfalarında anlatılacaktır.
Module Deneme
Sub Main()
End Sub
End Module
Class Deneme
Shared Sub Main()
System.Console.Write("Şampiyon Beşiktaş")
System.Console.Read()
End Sub
End Class
Bu Visual Basic programındaki Main() metodunun shared olduğunu işaret ettim. Visual Basic programlarının başlangıç noktası olan Main() metodu bir Class’ın içine alındığında halinde shared olmak zorundadır. Yukarıda Main() metodunu Module içine aldığım için buna gerek olmamıştı.
Şimdi Visual Basic programının başlangıç noktası olan Main() metodu içinde bir değişkene yer vereceğim. Bu değişkeni Main() metodu içinde tanımladım. Değişkeni Main() metodu tarafından sınırlanan kod bloğu yerine Class bloğu içinde tanımlayabilirdim.
Class Deneme
Shared Sub Main()
Dim Yil As Integer
End Sub
End Class
Buradaki integer bu değişkenin tamsayı tipindeki bilgileri saklayabileceğini işaret etmektedir. Programcılıkta değişken tanımlamayı günlük hayatta telefon edip bir otelde yer ayırmaya benzetmek mümkündür. Bu değişkeni tanımlamakla derleyiciye demiş oluyoruz ki, "programın ileriki safhalarında elimdeki integer tipindeki bilgileri bellekte tutma gereğini duyabilirim. Bu nedenle bana bellekte yer ayırt."
Bu kısacak kodu yorumlamak gerekirse, bu programdaki "Deneme" adlı Class’ın Main() adında bir metodu bulunmaktadır. Main() metodu içinde yaşayabilecek "Yil" adında ve Integer tipindeki bilgilerin aktarılabileceği bir değişken tanımlanmıştır. Daha sonra değişkenlerin nasıl tanımlandığı konusu işlenecektir.
Yukarıda belirtildiği gibi Visual Basic programları dahilinde hazırlanan Class’lar metotları barındırabilmektedir. Yukarıda verdiğim kısıtlı Visual Basic programı içinde hazırladığım Class’ta 2. bir metot hazırladım. Herhangi bir satır içermeyen bu metot bu hali ile herhangi bir işlem yapmaz. Bu metodu da Shared olarak işaret ettiğimi fark etmiş olmalısınız.
Class Deneme
Shared Sub Main()
Dim Yil As Integer
End Sub
Shared Sub Mesaj()
End Sub
End Class
Şimdi ise yukarıda verdiğim basit Visual Basic kodundaki Mesaj() adını verdiğim metot veya yordamı işleteceğim. Hazırladığım metot aynı sınıfın içinde olduğu için herhangi bir hazırlık yapmadan direk adıyla çağırıp işletmek mümkündür.
Class Deneme
Shared Sub Main()
Dim Yil As Integer
Mesaj()
End Sub
Shared Sub Mesaj()
End Sub
End Class
Bu programı aşağıdaki gibi düzenlemiş olsaydım değişen bir şey olmazdı. Bu kısa örnekte "Yil" adını verdiğim değişkeni hiç kullanmadığım için Visual Basic derleyicisi derleme sırasında uyarı mesajı verir.
Class Deneme
Shared Sub Mesaj()
End Sub
Shared Sub Main()
Dim Yil As Integer
Mesaj()
End Sub
End Class
Kısaca anlatmak gerekirse Class’lar Namespace’lerin içine yerleştirilmektedir. System adlı Namespace .NET Framework ile gelen en önemli Namespace’tir ve çok sayıda Class’ı barındırmaktadır. DOS penceresine veya konsola bilgi yazmak üzere hazırladığım satırdaki Console bir Class’tır. Çok sayıda metoda sahip olan bu Class’ın sayesinde konsol yani DOS penceresi ile ilgili istenen işlemler yapılabilmektedir. Bu satırdaki WriteLine() ise Console sınıfının bir metodudur.
Bu konuyu bir okulda, bir dershanede veya seminerde anlatıyor olsaydım Visual Basic hakkında biraz bilgisi olanlar "Memik bey WriteLine() shared bir metot değil mi?" diye sorabilirlerdi. Soruyu soranlara cevabım "evet, WriteLine() metodu shared bir metottur". Tabii dersi veya semineri izleyenlerin bazıları "shared olanla olmayan metot arasında ne fark vardır" diye soru soracaklardı, bazıları ise keşke bu konuşulanları anlasaydım diye iç geçireceklerdi. Fırsat bu fırsat deyip hemen shared k olan ve olmayan metotlar hakkında uzun açıklamalar yapmayacağım.
Visual Basic’in kurallarına uyarak yazdığınız programları derleyip EXE dosya hazırlayacak program dosyası(VBC.EXE) Windows’un kurulu olduğu klasörün altında "Microsoft.NETFramework" klasöründe yer almaktadır. .NET Framework’ün başka sürümünden yararlanıyorsanız bu klasörün adı farklı olabilir.
C:WINDOWSMicrosoft.NETFrameworkv2.0.50727;
Tekrarlamak gerekirse derleme işlemi sonucu VB uzantılı Visual Basic programı ile aynı ada sahip bir EXE dosyası hazırla
{{user}} {{datetime}}
{{text}}